我已将公式转换为此处提供的 Java 。但是准确性是个问题。我们正在使用 GPS 坐标。
我们使用 iPhone 提供的 GPS 定位,精度高达小数点后 10 位。
/*
* Latitude and Longitude are in Degree
* Unit Of Measure : 1 = Feet,2 = Kilometer,3 = Miles
*/
//TODO 3 Change Unit of Measure and DISTANCE_IN_FEET constants to Enum
public static Double calculateDistance(double latitudeA,double longitudeA,double latitudeB,double longitudeB,short unitOfMeasure){
Double distance;
distance = DISTANCE_IN_FEET *
Math.acos(
Math.cos(Math.toRadians(latitudeA)) * Math.cos(Math.toRadians(latitudeB))
*
Math.cos(Math.toRadians(longitudeB) - Math.toRadians(longitudeA))
+
Math.sin(Math.toRadians(latitudeA))
*
Math.sin(Math.toRadians(latitudeB))
);
return distance;
}
仅供参考:公共静态最终 int DISTANCE_IN_FEET = 20924640;
然后我使用 Math.round(distance); 转换为长。
对于实际的 25 英尺,我得到 7 英尺的输出。