简体   繁体   中英

Calculate bearing between 2 points with javascript

I want to calculate the bearing from point 1 to point 2 The input format is 52.070564 - 4.407116

No matter what i try i cannot get an correct output.

The formula i use is :

 // koers berekenen var y = Math.sin(ln-ln1) * Math.cos(lt); var x = Math.cos(lt1)*Math.sin(lt) - Math.sin(lt1)*Math.cos(lt)*Math.cos(ln-ln1); var radians = Math.atan2(y, x); var bearing = Math.round(radians * (180/Math.PI)); /* >>>>>> original <<<<<<< var y = Math.sin(λ2-λ1) * Math.cos(φ2); var x = Math.cos(φ1)*Math.sin(φ2) - Math.sin(φ1)*Math.cos(φ2)*Math.cos(λ2-λ1); var brng = Math.atan2(y, x).toDegrees(); φ1,λ1 is the start point, φ2,λ2 the end point (Δλ is the difference in longitude) */

You can calculate bearing using this functions:

 // Converts from degrees to radians. function toRadians(degrees) { return degrees * Math.PI / 180; }; // Converts from radians to degrees. function toDegrees(radians) { return radians * 180 / Math.PI; } function bearing(startLat, startLng, destLat, destLng){ startLat = toRadians(startLat); startLng = toRadians(startLng); destLat = toRadians(destLat); destLng = toRadians(destLng); y = Math.sin(destLng - startLng) * Math.cos(destLat); x = Math.cos(startLat) * Math.sin(destLat) - Math.sin(startLat) * Math.cos(destLat) * Math.cos(destLng - startLng); brng = Math.atan2(y, x); brng = toDegrees(brng); return (brng + 360) % 360; }

 start_latitude = 12.9389352 start_longitude = 77.6994306 stop_latitude = 12.939103 stop_longitude = 77.705825 var y = Math.sin(stop_longitude-start_longitude) * Math.cos(stop_latitude); var x = Math.cos(start_latitude)*Math.sin(stop_latitude) - Math.sin(start_latitude)*Math.cos(stop_latitude)*Math.cos(stop_longitude-start_longitude); var brng = Math.atan2(y, x) * 180 / Math.PI; alert("Bearing in degreee: " + brng);
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM