computeHeading function
Compute heading from p1
to p2
. The result is between -180 exclusive and 180 inclusive.
computeHeading(LatLng(0, 0), LatLng(1, 0))
returns0.0
(north direction).computeHeading(LatLng(0, 0), LatLng(0, 1))
returns90.0
(east direction).computeHeading(LatLng(1, 0), LatLng(0, 0))
returns180.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));
}