详解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 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 Javascript
js判断变量初始化的三种形式及推荐用的形式
Jul 22 Javascript
WEB前端设计师常用工具集锦
Dec 09 Javascript
js简单的点击返回顶部效果实现方法
Apr 10 Javascript
Knockoutjs 学习系列(一)ko初体验
Jun 07 Javascript
Angular 理解module和injector,即依赖注入
Sep 07 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
原生JS+Canvas实现五子棋游戏实例
Jun 19 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
JS异步处理的进化史深入讲解
Aug 25 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
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
python中的reduce内建函数使用方法指南
2014/08/31 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
pandas删除指定行详解
2019/04/04 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
vue常用指令代码实例总结
2020/03/16 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
法律专业自我鉴定
2013/10/03 职场文书
实习期自我鉴定
2013/10/11 职场文书
财务出纳员岗位职责
2013/11/26 职场文书
政协会议宣传标语
2014/10/09 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
python获取带有返回值的多线程
2022/05/02 Python