目的:使用百度地圖測兩點直線距離
使用:百度地圖api中的getDistance方法,經過測試,在ios是沒有問題的,但是在不同的安卓機會出現幾百至幾千米的誤差
原因:經測試研究,ios和安卓當前位置經緯度的精度不一致,比如安卓機爲39.1231231,IOS機爲39.123122342142314213。so,在計算結果時會出現較大誤差
解決:自定義方法,計算兩點間距離
// 將用角度表示的角轉換爲近似相等的用弧度表示的角 java Math.toRadians
rad(d) {
return d * Math.PI / 180.0;
},
// 計算兩點之間的距離(四個參數爲目標點經緯度和自身經緯度)
getDistance(lng1, lat1, lng2, lat2) {
lng2 = Math.floor(lng2) (自身經緯度取整,蘋果安卓精度不一致)
lat2 = Math.floor(lat2)
var EARTH_RADIUS = 6378.137; //地球半徑
var radLat1 = this.rad(lat1);
var radLat2 = this.rad(lat2);
var a = radLat1 - radLat2;
// alert(a)
var b = this.rad(lng1) - this.rad(lng2);
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(radLat1) * Math.cos(radLat2)
* Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
},