js计算地球两个经纬度之间的距离
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了js计算地球两个经纬度之间的距离,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1915字,纯文字阅读大概需要3分钟。
内容图文
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.js"></script> <script type="text/javascript"> var EARTH_RADIUS = 6378137.0; //单位Mvar PI = Math.PI; function getRad(d) { return d * PI / 180.0; } /** * caculate the great circle distance * @param {Object} lat1(纬度1) * @param {Object} lng1(经度1) * @param {Object} lat2(纬度2) * @param {Object} lng2(经度2) *///第一种方法:这种算法是把地球当作规则的球面来计算的咯,这种方法不是很精准咯,这个还要取决你定位的精准度咯 function getGreatCircleDistance(lat1, lng1, lat2, lng2) { var radLat1 = getRad(lat1); var radLat2 = getRad(lat2); var a = radLat1 - radLat2; var b = getRad(lng1) - getRad(lng2); var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * EARTH_RADIUS; s = Math.round(s * 10000) / 10000.0; alert(s); } //第一种方法:地球是椭圆的,所以会有这种算法 function getFlatternDistance(lat1, lng1, lat2, lng2) { var f = getRad((lat1 + lat2) / 2); var g = getRad((lat1 - lat2) / 2); var l = getRad((lng1 - lng2) / 2); var sg = Math.sin(g); var sl = Math.sin(l); var sf = Math.sin(f); var s, c, w, r, d, h1, h2; var a = EARTH_RADIUS; var fl = 1 / 298.257; sg = sg * sg; sl = sl * sl; sf = sf * sf; s = sg * (1 - sl) + (1 - sf) * sl; c = (1 - sg) * (1 - sl) + sf * sl; w = Math.atan(Math.sqrt(s / c)); r = Math.sqrt(s * c) / w; d = 2 * w * a; h1 = (3 * r - 1) / 2 / c; h2 = (3 * r + 1) / 2 / s; alert( d * (1 + fl * (h1 * sf * (1 - sg) - h2 * (1 - sf) * sg))); } $(function () { getFlatternDistance(28.89596, 105.443985, 28.896462, 105.444291); }); </script> </head> <body> 63.3422 </body> </html>
原文:http://www.cnblogs.com/LoveQin/p/5424265.html
内容总结
以上是互联网集市为您收集整理的js计算地球两个经纬度之间的距离全部内容,希望文章能够帮你解决js计算地球两个经纬度之间的距离所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。