destinationPoint method
this method will calculate new GeoPoint using giving distance distanceInMeters
using bearingInDegrees
we will determine direction of that GeoPoint
return GeoPoint
Implementation
GeoPoint destinationPoint({
required double distanceInMeters,
required bearingInDegrees,
}) {
// convert distance to angular distance
final double dist = distanceInMeters / earthRadiusMeters;
// convert bearing to radians
final double brng = deg2rad * bearingInDegrees;
// get current location in radians
final double lat1 = deg2rad * latitude;
final double lon1 = deg2rad * longitude;
final double lat2 = asin(
sin(lat1) * cos(dist) + cos(lat1) * sin(dist) * cos(brng),
);
final double lon2 =
lon1 +
atan2(
sin(brng) * sin(dist) * cos(lat1),
cos(dist) - sin(lat1) * sin(lat2),
);
final double lat2deg = lat2 / deg2rad;
final double lon2deg = lon2 / deg2rad;
return GeoPoint(latitude: lat2deg, longitude: lon2deg);
}