详解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 相关文章推荐
InnerHtml和InnerText的区别分析
Mar 13 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
Apr 10 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
Jun 24 Javascript
Jquery实现图片预加载与延时加载的方法
Dec 22 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
js实现发送验证码后的倒计时功能
May 28 Javascript
jQuery链式调用与show知识浅析
May 11 Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
JS使用Date对象实时显示当前系统时间简单示例
Aug 23 Javascript
js回调函数仿360开机
Dec 26 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
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
Python验证码识别处理实例
2015/12/28 Python
破解安装Pycharm的方法
2018/10/19 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
.net软件工程师面试题
2015/03/31 面试题
linux下进程间通信的方式
2014/12/23 面试题
自行车租赁公司创业计划书
2014/01/28 职场文书
某某同志考察材料
2014/05/28 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
2016七一建党节慰问信
2015/11/30 职场文书