distanceBetween static method

double distanceBetween(
  1. LatLng latLng1,
  2. LatLng latLng2
)

用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)));
}