/**
* 计算角度
*
* @param x
* @param y
* @param z
* @return
* @throws Exception
*/
public static long convertAngle(LatLng x, LatLng y, LatLng z) throws Exception {
double a = Math.sqrt(Math.pow(y.latitude - z.latitude, 2) + Math.pow(y.longitude - z.longitude, 2));
double b = Math.sqrt(Math.pow(x.latitude - z.latitude, 2) + Math.pow(x.longitude - z.longitude, 2));
double c = Math.sqrt(Math.pow(x.latitude - y.latitude, 2) + Math.pow(x.longitude - y.longitude, 2));
if (a + b > c) {
double COSB = (Math.pow(c, 2) + Math.pow(a, 2) - Math.pow(b, 2)) / (2 * (a * c));
double B = Math.acos(COSB) * 180 / Math.PI;
return Math.round(B);
} else {
throw new Exception("不是一个有效的三角形");
}
}
public static void main(String[] args) {
try {
LatLng x = new LatLng(29.699331, 106.374054);
LatLng y = new LatLng(29.619989, 106.375779);
LatLng z = new LatLng(29.619487, 106.267695);
System.out.println(SystemUtil.convertAngle(x, y, z));
} catch (Exception e) {
e.printStackTrace();
}
//SystemUtil.convertAngle(-1, -1, -1, 1, 1, 1);
}