distanceBetween static method
用haversine公式计算经纬度两点间的距离, 注意:这里将地球当做了一个正球体来计算距离,当经纬度跨度较大时,有轻微的距离误差
Implementation
static double distanceBetween(LatLng latLng1, LatLng latLng2) {
//经纬度转换成弧度
double lat1 = _convertDegreesToRadians(latLng1.latitude);
double lon1 = _convertDegreesToRadians(latLng1.longitude);
double lat2 = _convertDegreesToRadians(latLng2.latitude);
double lon2 = _convertDegreesToRadians(latLng2.longitude);
//差值
double detalLat = (lat1 - lat2).abs();
double detalLon = (lon1 - lon2).abs();
//h is the great circle distance in radians, great circle
//就是一个球体上的切面,它的圆心即是球心的一个周长最大的圆。
double h =
_haverSin(detalLat) + cos(lat1) * cos(lat2) * _haverSin(detalLon);
return (2 * EARTHRADIUS * asin(sqrt(h)));
}