[英]Calculating distance between two points shows wrong distance
我使用以下兩種方法來計算谷歌地圖中使用緯度和經度的兩個點之間的距離。
TYPE I:
function CalcDistanceBetween(lat1, lon1, lat2, lon2) {
//Radius of the earth in: 1.609344 miles, 6371 km | var R = (6371 / 1.609344);
var R = 6371; // Radius of earth in Miles
var dLat = toRad(lat2-lat1);
var dLon = toRad(lon2-lon1);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
alert("d==" + d);
return d;
}
alert(CalcDistanceBetween(13.125511084202,80.029651635576,12.9898593006481,80.2497744326417));
function toRad(Value) {
/** Converts numeric degrees to radians */
return Value * Math.PI / 180;
}
TYPE II:
var p1 = new google.maps.LatLng(13.125511084202,80.029651635576);
var p2 = new google.maps.LatLng(12.9898593006481,80.2497744326417);
alert(calcDistance(p1, p2));
//calculates distance between two points in km's
function calcDistance(p1, p2){
return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) /
1000).toFixed(2);
}
以上兩種類型的距離均為28公里 。 但是當我以相同的經度和經度檢查谷歌地圖時,它返回36.8公里。 樣本檢查我的代碼和谷歌地圖如下所示..:
你建議我獲得准確的結果嗎?
Google給出的距離來自建議的路線。 它不是從A點到B點的直接路徑。您計算的距離是直接路徑,只有在您直接從A飛到B時才會出現這種情況。
如果您想獲得Google輸出的結果,請查看此處: 在Google Maps API v3中找到最短和最快路線的優雅方式?
可能是我完全錯了:)但似乎你的方法計算這兩個點之間的實際距離,當你與谷歌路由時,它是你采取的路線的距離。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.