distance method

  1. @override
double distance(
  1. dynamic position,
  2. dynamic destination
)
override

Calculates distance with Haversine algorithm.

Accuracy can be out by 0.3% More on Wikipedia

Implementation

@override
double distance(dynamic position, dynamic destination) {
  position = LatLng.from(position);
  destination = LatLng.from(destination);

  final sinLatDist =
      math.sin((destination.latitudeInRad - position.latitudeInRad) / 2);
  final sinLngDist =
      math.sin((destination.longitudeInRad - position.longitudeInRad) / 2);

  // Sides
  final a = (sinLatDist * sinLatDist) +
      (sinLngDist * sinLngDist) *
          math.cos(position.latitudeInRad) *
          math.cos(destination.latitudeInRad);

  final c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a));

  return EQUATOR_RADIUS * c;
}