java版のGoogleの地図は2緯度の座標点の距離を計算します。
球面の二点の間の大きな円弧の距離
js版のGoogleの地図は2緯度の座標点の距離を計算します。
http://happyqing.iteye.com/blog/2236105
参考:
球面の上で2時の間の距離のは法を求めますhttp://wenku.baidu.com/link?url=kWYaVUDABbteHXWvbHiJQTddK0J8R06cHzheHtHgTcgx7ISmF7UZ-JwBVgI 73 m 1 BUgz 8 Xlr 9 kPl 5 OWlVkJl 9 nPUhc 4 YuZyDwJUnKZLE NTW
二点間の球面距離の公式http://blog.163.com/scuqifuguang@126/blog/static/17370086127114939980/
二つの経緯度の間の距離を計算します。http://blog.csdn.net/musicrabbit/article/details/6717852
2つの緯度点から、この2つの緯度点間の距離を計算します。http://www.cnblogs.com/softfair/p/distance_of_twolatitude_and_longitude_points.
球面の任意の2点間の距離計算式は、ウィキペディアの次の文章を参照することができます。 Great-circele distance Haversine formula 特に、ウィキペディアがHaversine公式を推奨しているのは、Great-circele distance公式が多くのコサイン関数を使用しているためであり、2つの距離が短い場合(例えば、地球の表面から数百メートル離れている2点)、コサイン関数が0.999...の結果として、大きな捨て値誤差が生じるからである。Haversine公式は正弦関数を採用しています。距離が小さくても十分な有効数字を維持できます。以前は三角関数表を使って計算していたが、実際に検証して計算すると、二つの公式の違いは大きくない。確かにするために、ここではやはりHaversine式を採用します。
public class GoogleMapHelper {
private static double EARTH_RADIUS = 6378.137; //
// Math.toRadians
private static double rad(double d)
{
return d * Math.PI / 180.0;
}
/**
*
* @param lng1 1
* @param lat1 1
* @param lng2 2
* @param lat2 2
* @return ( )
*/
public static double getDistance(double lng1, double lat1, double lng2, double lat2)
{
double radLat1 = Math.toRadians(lat1);
double radLat2 = Math.toRadians(lat2);
double a = radLat1 - radLat2;
double b = Math.toRadians(lng1) - Math.toRadians(lng2);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
}
public static void main(String[] args) {
long b = System.currentTimeMillis();
for(int i=0; i<1000000; i++){
getDistance(116.403933,39.914147, 116.403237,39.927919);
}
System.out.println(" :"+(System.currentTimeMillis()-b)+" "); // :461
double dist = getDistance(116.403933,39.914147, 116.403237,39.927919);
System.out.println(" :" + dist + " "); // :1.0
}
}
js版のGoogleの地図は2緯度の座標点の距離を計算します。
http://happyqing.iteye.com/blog/2236105
参考:
球面の上で2時の間の距離のは法を求めますhttp://wenku.baidu.com/link?url=kWYaVUDABbteHXWvbHiJQTddK0J8R06cHzheHtHgTcgx7ISmF7UZ-JwBVgI 73 m 1 BUgz 8 Xlr 9 kPl 5 OWlVkJl 9 nPUhc 4 YuZyDwJUnKZLE NTW
二点間の球面距離の公式http://blog.163.com/scuqifuguang@126/blog/static/17370086127114939980/
二つの経緯度の間の距離を計算します。http://blog.csdn.net/musicrabbit/article/details/6717852
2つの緯度点から、この2つの緯度点間の距離を計算します。http://www.cnblogs.com/softfair/p/distance_of_twolatitude_and_longitude_points.
球面の任意の2点間の距離計算式は、ウィキペディアの次の文章を参照することができます。