getLatLngFromAPoint static method

LatLng getLatLngFromAPoint(
  1. LatLng pt,
  2. int distance,
  3. double bearing
)

Implementation

static LatLng getLatLngFromAPoint(LatLng pt, int distance,double bearing) {
  bearing = bearing/180 * pi;
  num lat1Rad = MathUtil.toRadians(pt.latitude);
  num long1Rad = MathUtil.toRadians(pt.longitude);
  num d = distance/GeoUtil.EARTH_RADIUS;
  num lat2Rad = asin(sin(lat1Rad)*cos(d) + cos(lat1Rad)*sin(d)*cos(bearing));

  num long2Rad = long1Rad + atan2(sin(bearing) * sin(d)*cos(lat1Rad),
  cos(d)-sin(lat1Rad)*sin(lat2Rad));
  // normalise to -180..+180°
  long2Rad = (long2Rad + 3 * pi) % (2 * pi) - pi;

  return LatLng(
    MathUtil.toDegrees(lat2Rad).toDouble(),
    MathUtil.toDegrees(long2Rad).toDouble(),
  );
}