1

緯度と経度を使用してGoogleマップの2点間の距離を計算するには、以下の2つの方法を使用します。

            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);
                }    

上記の両方のタイプは、距離として28kmを示します。しかし、同じ経度と経度でグーグルマップをチェックインすると、36.8キロを返します。以下に示すマイコードとグーグルマップのサンプルチェック..:ここに画像の説明を入力してください ここに画像の説明を入力してください

ここに画像の説明を入力してください

正確な結果を得るために私に提案しますか?

4

2 に答える 2

3

Google が表示する距離は、推奨ルートからのものです。これは地点 A から地点 B への直接経路ではありません。計算した距離は直接経路です。これは、A から B に直接飛行した場合にのみ当てはまり
ます。Google が出力する結果を取得したい場合は、次を参照してください。Google Maps API v3 で最短かつ最速のルートを見つけるエレガントな方法は?

于 2013-01-17T10:47:50.340 に答える
1

私は完全に間違っている可能性があります:)しかし、あなたの方法はこれら2点間の実際の距離を計算しているようで、Googleでルーティングすると、ルートの距離になります。

于 2013-01-17T10:49:28.890 に答える