computeHeading function

num computeHeading(
  1. LatLng p1,
  2. LatLng p2
)

Compute heading from p1 to p2. The result is between -180 exclusive and 180 inclusive.

  • computeHeading(LatLng(0, 0), LatLng(1, 0)) returns 0.0 (north direction).
  • computeHeading(LatLng(0, 0), LatLng(0, 1)) returns 90.0 (east direction).
  • computeHeading(LatLng(1, 0), LatLng(0, 0)) returns 180.0 (south direction).
  • computeHeading(LatLng(0, 0), LatLng(0, -1)) returns -90.0 (west direction).

Implementation

num computeHeading(LatLng p1, LatLng p2) {
  final dLng = degToRad(p2.lng) - degToRad(p1.lng);
  final y = sin(dLng) * cos(degToRad(p2.lat));
  final x = cos(degToRad(p1.lat)) * sin(degToRad(p2.lat)) -
      sin(degToRad(p1.lat)) * cos(degToRad(p2.lat)) * cos(dLng);
  return radToDeg(atan2(y, x));
}