calculateDestination static method
Calculates the destination point given a starting point, bearing, and distance.
Parameters:
lat: Starting latitude in decimal degreeslon: Starting longitude in decimal degreesbearing: Bearing in degrees (0-360, clockwise from north)distance: Distance in meters
Returns: A map containing 'latitude' and 'longitude' of the destination
Example:
final dest = GeoMath.calculateDestination(
37.7749, -122.4194, // San Francisco
45, // northeast
1000, // 1 km
);
print(dest); // {latitude: ..., longitude: ...}
Implementation
static Map<String, double> calculateDestination({
required double lat,
required double lon,
required double bearing,
required double distance,
}) {
final latRad = degreesToRadians(lat);
final lonRad = degreesToRadians(lon);
final bearingRad = degreesToRadians(bearing);
final angularDistance = distance / earthRadius;
final lat2Rad = asin(
sin(latRad) * cos(angularDistance) +
cos(latRad) * sin(angularDistance) * cos(bearingRad),
);
final lon2Rad = lonRad +
atan2(
sin(bearingRad) * sin(angularDistance) * cos(latRad),
cos(angularDistance) - sin(latRad) * sin(lat2Rad),
);
return {
'latitude': radiansToDegrees(lat2Rad),
'longitude': radiansToDegrees(lon2Rad),
};
}