计算两个经纬度之间的距离

C#版本

 1 static double Distance(double lat1, double lng1, double lat2, double lng2)
 2         {
 3             var R = 6378137;
 4             double d2r = Math.PI / 180;
 5             double dLat = (lat1 - lat2) * d2r;
 6             double dLon = (lng1 - lng2) * d2r;
 7             lat1 = lat1 * d2r;
 8             lat2 = lat2 * d2r;
 9             double sin1 = Math.Sin(dLat / 2);
10             double sin2 = Math.Sin(dLon / 2);
11             double a = sin1 * sin1 + sin2 * sin2 * Math.Cos(lat1) * Math.Cos(lat2);
12             return R * 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
13         }

Javascript版本

 1 function distance(lat1, lng1, lat2, lng2) {
 2     var R = 6378137,
 3         d2r = Math.PI / 180, //经纬度转弧度
 4         dLat = (lat1 - lat2) * d2r,
 5         dLon = (lng1 - lng2) * d2r,
 6         lat1 = lat1 * d2r,
 7         lat2 = lat2 * d2r,
 8         sin1 = Math.sin(dLat / 2),
 9         sin2 = Math.sin(dLon / 2);
10     var a = sin1 * sin1 + sin2 * sin2 * Math.cos(lat1) * Math.cos(lat2);
11     return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
12 }

 

posted @ 2016-03-23 16:58  fengzhongye  阅读(823)  评论(0)    收藏  举报