distance method
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;
}