midpoint method
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());
}