计算两个经纬度之间的距离
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 }
浙公网安备 33010602011771号