2012-01-25 20 views
1

GoogleマップV3の5つのマーカー間の距離をどのように計算しますか?私は調査したHaversineの公式を使用しなければならないことを知っていますし、2つのマーカー間の距離を計算する上でのここでの教訓を見つけました。 5つのマーカーの間で計算したいのですが?数時間試してみましたが、計算されたkmは間違っています。おかげ5つのマーカー間の距離を計算する方法は?

以下のコードは以下の通りです:

// compute distance between the two points 
    var R = 6371; // KM 
    var dLat = toRad(location5.lat()-location4.lat()-location3.lat()-location2.lat()-location1.lat()); 
    var dLon = toRad(location5.lng()-location4.lng()-location3.lng()-location2.lng()-location1.lng()); 

    var dLat1 = toRad(location1.lat()); 
    var dLat2 = toRad(location2.lat()); 
    var dLat3 = toRad(location3.lat()); 
    var dLat4 = toRad(location4.lat()); 
    var dLat5 = toRad(location5.lat()); 

    var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
      Math.cos(dLat1) * Math.cos(dLat1) * 
      Math.sin(dLon/2) * Math.sin(dLon/2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    var d = R * c; 

    document.getElementById("distance_direct").innerHTML = "<br/><br/><br/>The distance between the five points (in a straight line) is: "+d +" Km."; 
} 

function toRad(deg) 
{ 
    return deg * Math.PI/180; 
} 

は、私は私の間違った部分は、VARで式を開始する行であると思います。もし間違っていると私のエラーを示してください、そしておそらく助けるための解決策?

+1

「5つのマーカー間の距離」とはどういう意味ですか? – AakashM

+0

これは単なる追加的なものではありません(マーカーAとBの距離+ B&Cとの距離など)? – KevinDTimm

+0

@AakashM 5つの座標点の間の距離をGoogleマップの線で結ぶことを意味します。 – SupaFlybaba

答えて

0

表示されるはずです。 A→B→B→Cの距離を計算し、最後にそれらの距離を加算する必要があります。

var distAB = calcDist(location1,location2); 
var distBC = calcDist(location2,location3); 
var distCD = calcDist(location3,location4); 
var distDE = calcDist(location4,location5); 

var distTotal = distAB + distBC + distCD + distDE; 

function calcDist(locationA,locationB) 
{ 
    var R = 6371; // KM 
    var dLat = toRad(locationB.lat()) - toRad(locationA.lat()); 
    var dLng = toRad(locationB.lng()) - toRad(locationA.lng()); 
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
     Math.cos(dLat1) * Math.cos(dLat1) * 
     Math.sin(dLon/2) * Math.sin(dLon/2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    return R * c; 
} 

function toRad(deg) 
{ 
    return deg * Math.PI/180; 
} 
+0

申し訳ありませんが、まったく動作していないようです – SupaFlybaba

+0

私はそれらの場所オブジェクトを渡している場所でJavascriptが間違っています(私はJS全体ではうまく動作しません)。しかし、あなたが計算をしたいなら、それはそれを行う方法です。 – copjon

+0

すばやく編集しました。再試行する。 – copjon

関連する問題