computeDestination static method
Computes a destination point given a start point, bearing (degrees), and distance (meters). Uses the Haversine forward formula.
Implementation
static LatLng computeDestination(
LatLng start,
double bearingDeg,
double distanceMeters,
) {
final double R = earthRadiusKm * 1000.0; // Earth radius in meters
final double lat1 = start.latitude * math.pi / 180.0;
final double lng1 = start.longitude * math.pi / 180.0;
final double brng = bearingDeg * math.pi / 180.0;
final double d = distanceMeters / R;
final double lat2 = math.asin(
math.sin(lat1) * math.cos(d) +
math.cos(lat1) * math.sin(d) * math.cos(brng),
);
final double lng2 =
lng1 +
math.atan2(
math.sin(brng) * math.sin(d) * math.cos(lat1),
math.cos(d) - math.sin(lat1) * math.sin(lat2),
);
return LatLng(lat2 * 180.0 / math.pi, lng2 * 180.0 / math.pi);
}