midpoint method

Coordinate midpoint(
  1. Coordinate startPoint,
  2. Coordinate endPoint
)

This function calculates the midpoint between startPoint and endPoint

startPoint Initial coordinates endPoint Final coordinates Returns Midpoint coordinates

final istCoordinates = Coordinate(41.28111111, 28.75333333); // The coordinates of Istanbul Airport
final jfkCoordinates = Coordinate(40.63980103, -73.77890015); // The coordinates of New York JFK Airport
final greatCircle = GreatCircle();
final midpoint = greatCircle.midpoint(istCoordinates, jfkCoordinates);

Implementation

Coordinate midpoint(Coordinate startPoint, Coordinate endPoint) {
  final double lat1 = startPoint.latitude.toRadians();
  final double lat2 = endPoint.latitude.toRadians();
  final double lon1 = startPoint.longitude.toRadians();
  final double lon2 = endPoint.longitude.toRadians();
  final double dLon = lon2 - lon1;
  final double bX = cos(lat2) * cos(dLon);
  final double bY = cos(lat2) * sin(dLon);

  final double lat = atan2((sin(lat1) + sin(lat2)),
      sqrt((cos(lat1) + bX) * (cos(lat1) + bX) + bY * bY));
  final double lon = lon1 + atan2(bY, cos(lat1) + bX);
  return Coordinate(lat.toDegrees(), lon.toDegrees());
}