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

作者:dk123sw 时间:2024-04-29 13:40:51 

正常在使用百度地图时,我们可以通过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根据百度地图提供经纬度计算两点距离详解整合网站的支持!

来源:https://blog.csdn.net/dk123sw/article/details/80485590

标签:js,经纬度,距离
0
投稿

猜你喜欢

  • JS基于封装函数实现的表格分页完整示例

    2024-04-25 13:15:12
  • PHP实现web socket长链接流程详解

    2023-05-27 23:44:39
  • 解析scratch3.0二次开发之scratch-blocks免编译修改问题

    2022-10-18 22:36:57
  • Navicat Premium15连接云服务器中的数据库问题及遇到坑

    2024-01-19 05:41:50
  • js自定义弹框插件的封装

    2024-05-28 15:38:36
  • PHP const定义常量及global定义全局常量实例解析

    2023-11-17 07:24:57
  • 利用Yahoo Pipes和jQuery做一个RSS挂件

    2010-06-08 13:40:00
  • 一文详解Golang中的切片数据类型

    2024-02-12 18:04:19
  • PyTorch 对应点相乘、矩阵相乘实例

    2021-10-23 16:33:29
  • Python中处理字符串之endswith()方法的使用简介

    2023-02-25 09:05:36
  • 用户体验的误解

    2008-07-15 12:31:00
  • Pytorch 中net.train 和 net.eval的使用说明

    2021-11-15 11:40:37
  • oracle中的视图详解

    2009-12-22 11:48:00
  • asp将数据库中的信息存储至XML文件中

    2007-09-19 12:54:00
  • python控制windows剪贴板,向剪贴板中写入图片的实例

    2021-03-27 07:35:31
  • Pytorch复现扩散模型的示例详解

    2023-08-15 02:12:33
  • python连接mongodb集群方法详解

    2021-08-26 11:45:08
  • python计数排序和基数排序算法实例

    2023-11-01 01:23:26
  • 合并百度影音的离线数据( with python 2.3)

    2022-01-11 09:22:14
  • 一些实用的sql语句

    2009-11-10 20:21:00
  • asp之家 网络编程 m.aspxhome.com