php代码:转载 http://www.cnblogs.com/caichenghui/p/5977431.html
代码语言:javascript
复制
1 /**
2 * 求两个已知经纬度之间的距离,单位为米
3 *
4 * @param lng1 $ ,lng2 经度
5 * @param lat1 $ ,lat2 纬度
6 * @return float 距离,单位米
7 * @author www.Alixixi.com
8 */
9 function getdistance($lng1, $lat1, $lng2, $lat2) {
10 // 将角度转为狐度
11 $radLat1 = deg2rad($lat1); //deg2rad()函数将角度转换为弧度
12 $radLat2 = deg2rad($lat2);
13 $radLng1 = deg2rad($lng1);
14 $radLng2 = deg2rad($lng2);
15 $a = $radLat1 - $radLat2;
16 $b = $radLng1 - $radLng2;
17 $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000;
18 return $s;
19 }
javascript代码:
代码语言:javascript
复制
1 //返回单位 m
2 get_distance(lat1,lng1,lat2,lng2){
3 var radLat1 = lat1 * Math.PI / 180.0;
4 var radLat2 = lat2 * Math.PI / 180.0;
5 var a = radLat1 - radLat2;
6 var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
7 var 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)));
8 s = s * 6378.137;
9 s = Math.round(s * 10000) / 10000;
10 s = s*1000;
11 return s;
12 },