Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bearingWithDistance: function(lat1, lng1, lat2, lng2) {
- let f1 = lat1, l1 = lng1, f2 = lat2, l2 = lng2;
- let toRadian = Math.PI / 180;
- let y = Math.sin((l2-l1)*toRadian) * Math.cos(f2*toRadian);
- let x = Math.cos(f1*toRadian)*Math.sin(f2*toRadian) - Math.sin(f1*toRadian)*Math.cos(f2*toRadian)*Math.cos((l2-l1)*toRadian);
- let brng = Math.atan2(y, x)*((180)/Math.PI);
- brng += brng < 0 ? (360) : 0;
- let R = 6371; // kilometres
- let deltaF = (f2 - f1)*toRadian;
- let deltaL = (l2 - l1)*toRadian;
- let a = Math.sin(deltaF/2) * Math.sin(deltaF/2) + Math.cos(f1*toRadian) * Math.cos(f2*toRadian) * Math.sin(deltaL/2) * Math.sin(deltaL/2);
- let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
- let distance = R * c;
- return {bearing: brng.toFixed(1), distance: distance.toFixed(3)};
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement