国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解js根據百度地圖提供經緯度計算兩點距離

2019-11-19 11:35:30
字體:
來源:轉載
供稿:網友

正常在使用百度地圖時,我們可以通過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根據百度地圖提供經緯度計算兩點距離詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙井市| 大厂| 宁远县| 云龙县| 九龙县| 元谋县| 宁陕县| 辉县市| 抚远县| 温宿县| 汪清县| 东莞市| 钟祥市| 上栗县| 安宁市| 班玛县| 两当县| 盐边县| 兴宁市| 青岛市| 丹阳市| 扎赉特旗| 阿荣旗| 安仁县| 梓潼县| 搜索| 双鸭山市| 海城市| 阳谷县| 东乡族自治县| 铜鼓县| 通州市| 金山区| 申扎县| 三台县| 青岛市| 赤壁市| 交城县| 原阳县| 万年县| 昆山市|