国产探花免费观看_亚洲丰满少妇自慰呻吟_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根據百度地圖提供經緯度計算兩點距離詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通化县| 沾益县| 上林县| 邵东县| 田林县| 丹巴县| 河东区| 吉水县| 昆山市| 塔城市| 浦北县| 阿瓦提县| 武安市| 平乡县| 综艺| 三亚市| 松阳县| 华坪县| 浙江省| 开阳县| 瑞安市| 修水县| 当雄县| 同德县| 敦化市| 蓬溪县| 永昌县| 德惠市| 平度市| 九江市| 略阳县| 井研县| 林口县| 麻阳| 孟津县| 河西区| 锡林郭勒盟| 吴江市| 铜梁县| 马公市| 克拉玛依市|