详解js根据百度地图提供经纬度计算两点距离


Posted in Javascript onMay 13, 2019

正常在使用百度地图时,我们可以通过BMap的实例对象提供的方法计算距离:

var map = new BMap.Map('map_canvas');
map.getDistance(point1 ,point2);
//point1、point2 是Point对象

如果在不使用百度地图,但是已知百度地图的经纬度情况下也是可以计算出与上面相同的值的

三方库 此库提供计算两点距离的方法

引用此库使用 返回(米)

BMapLib.GeoUtils.getDistance(point1 ,point2)

当然如果只想计算距离也可以直接用下面的代码:

注:BMap需要导入,使用如下:

BMapLib.GeoUtils.getDistance(lng1,lat1,lng2,lat2)

import BMap from 'BMap'
 
var BMapLib = window.BMapLib = BMapLib || {};
 (function() {
 
     /**
      * 地球半径
      */
     var EARTHRADIUS = 6370996.81;
 
     /**
      * @exports GeoUtils as BMapLib.GeoUtils
      */
     var GeoUtils =
       /**
      * GeoUtils类,静态类,勿需实例化即可使用
      * @class GeoUtils类的<b>入口</b>。
      * 该类提供的都是静态方法,勿需实例化即可使用。
      */
     BMapLib.GeoUtils = function(){
 
       };
 
     /**
      * 将度转化为弧度
      * @param {degree} Number 度
      * @returns {Number} 弧度
      */
     GeoUtils.degreeToRad = function(degree){
         return Math.PI * degree/180;
       }
 
     /**
      * 将v值限定在a,b之间,纬度使用
      */
     function _getRange(v, a, b){
         if(a != null){
            v = Math.max(v, a);
           }
         if(b != null){
            v = Math.min(v, b);
           }
         return v;
       }
 
     /**
     * 将v值限定在a,b之间,经度使用
     */
     function _getLoop(v, a, b){
         while( v > b){
            v -= b - a
           }
         while(v < a){
            v += b - a
           }
         return v;
       }
   /**
    * 计算两点之间的距离,两点坐标必须为经纬度
    * @param {lng1} Number 点对象
    * @param {lat1} Number 点对象
    * @param {lng2} Number 点对象
    * @param {lat2} Number 点对象
    * @returns {Number} 两点之间距离,单位为米
    */
     GeoUtils.getDistance = function(lng1, lat1, lng2 ,lat2){
         let point1 = new BMap.Point(parseFloat(lng1) ,parseFloat(lat1));
         let point2 =new BMap.Point(parseFloat(lng2) ,parseFloat(lat2));
         //判断类型
         if(!(point1 instanceof BMap.Point) ||
             !(point2 instanceof BMap.Point)){
             return 0;
           }
         point1.lng = _getLoop(point1.lng, -180, 180);
         point1.lat = _getRange(point1.lat, -74, 74);
         point2.lng = _getLoop(point2.lng, -180, 180);
         point2.lat = _getRange(point2.lat, -74, 74);
         let x1, x2, y1, y2;
         x1 = GeoUtils.degreeToRad(point1.lng);
         y1 = GeoUtils.degreeToRad(point1.lat);
         x2 = GeoUtils.degreeToRad(point2.lng);
         y2 = GeoUtils.degreeToRad(point2.lat);
         return EARTHRADIUS * Math.acos((Math.sin(y1) * Math.sin(y2) + Math.cos(y1) * Math.cos(y2) * Math.cos(x2 - x1)));
       }
})();

以上所述是小编给大家介绍的js根据百度地图提供经纬度计算两点距离详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
Sep 10 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
Apr 03 Javascript
JavaScript实现彩虹文字效果的方法
Apr 16 Javascript
javascript实现图片上传前台页面
Aug 18 Javascript
使用Curl命令查看请求响应时间方法
Nov 04 Javascript
微信小程序 点击控件后选中其它反选实例详解
Feb 21 Javascript
JS触摸与手势事件详解
May 09 Javascript
vue axios用法教程详解
Jul 23 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 Javascript
Vant 在vue-cli 4.x中按需加载操作
Nov 05 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
May 13 #Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
May 13 #Javascript
详解async/await 异步应用的常用场景
May 13 #Javascript
轻松解决JavaScript定时器越走越快的问题
May 13 #Javascript
JavaScript Math对象和调试程序的方法分析
May 13 #Javascript
jsonp跨域获取百度联想词的方法分析
May 13 #Javascript
基于Fixed定位的框选功能的实现代码
May 13 #Javascript
You might like
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
python处理cookie详解
2014/02/07 Python
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
python实现井字棋游戏
2020/03/30 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
Python数据库小程序源代码
2019/09/15 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
后勤主管岗位职责
2014/03/01 职场文书
五四演讲稿范文
2014/09/03 职场文书
邓小平理论心得体会
2014/09/09 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
Python中递归以及递归遍历目录详解
2021/10/24 Python