详解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 相关文章推荐
Jqgrid表格随窗口大小改变而改变的简单实例
Dec 28 Javascript
jquery+javascript编写国籍控件
Feb 12 Javascript
jquery基本选择器匹配多个元素的实现方法
Sep 05 Javascript
Vue.js 60分钟快速入门教程
Mar 28 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
Apr 11 Javascript
详解Angular2 之 结构型指令
Jun 21 Javascript
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
详解微信小程序支付流程与梳理
Jul 16 Javascript
使用Vue实现调用接口加载页面初始数据
Oct 28 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 Javascript
Vue中函数防抖节流的理解及应用实现
Apr 24 Javascript
在Vue 中获取下拉框的文本及选项值操作
Aug 13 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中stream(流)的用法
2014/03/25 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
php中smarty区域循环的方法
2015/06/11 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
PDO::commit讲解
2019/01/27 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
js脚本实现数据去重
2014/11/27 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
详谈js模块化规范
2017/07/07 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
进一步理解Python中的函数编程
2015/04/13 Python
python保存字符串到文件的方法
2015/07/01 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
python如何删除文件中重复的字段
2019/07/16 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
促销活动计划书
2014/05/02 职场文书
白莲教口号
2014/06/18 职场文书
经济贸易系求职信
2014/08/04 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
JavaScript执行机制详细介绍
2021/12/06 Javascript