3

2 つの緯度経度ポイントを Google に送信して、2 つの間の距離を計算することは可能ですか?

4

8 に答える 8

10

v3 Google Maps API の使用を検討している場合は、私が使用する関数を次に示します。 注:&libraries=geometryスクリプト ソースに追加する必要があります。

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>

今関数:

//calculates distance between two points in km's
function calcDistance(p1, p2){
  return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}
于 2011-06-21T00:39:27.157 に答える
7

あなたが求めているのは、Haversine formulaです。これを行うのに Google マップは必要ありません。個別に解決できます。これを (JavaScript で) 実行するためのスクリプトがここにあります。

于 2009-02-03T11:35:35.433 に答える
3

はい、グーグルはこれを行うことができます

Google API ドキュメント

これは、2 点の km 単位の距離を取得する Java スクリプトの一部です。

関数初期化() {
      if (GBrowserIsCompatible()) {
          map = new GMap2(document.getElementById("map_canvas"));
          map.setCenter (新しい GLatLng (52.6345701、-1.1294433)、13);
          map.addControl(新しいGLargeMapControl());          
          map.addControl(新しい GMapTypeControl());
          geocoder = new GClientGeocoder();

          // NR14 7PZ
          var loc1 = 新しい GLatLng(52.5773139, 1.3712427);
          // NR32 1TB
          var loc2 = 新しい GLatLng(52.4788314, 1.7577444);          
          アラート (loc2.distanceFrom(loc1) / 1000);
      }
    }

于 2009-03-13T09:43:48.920 に答える
3

そして、C# での距離 cal:

// this returns the distance in miles. for km multiply result: * 1.609344
public static double CalculateDistance(double lat1, double lon1, double lat2, double lon2)
{
    double t = lon1 - lon2;
    double distance = Math.Sin(Degree2Radius(lat1)) * Math.Sin(Degree2Radius(lat2)) + Math.Cos(Degree2Radius(lat1)) * Math.Cos(Degree2Radius(lat2)) * Math.Cos(Degree2Radius(t));
    distance = Math.Acos(distance);
    distance = Radius2Degree(distance);
    distance = distance * 60 * 1.1515;

    return distance;
}

private static double Degree2Radius(double deg)
{
    return (deg * Math.PI / 180.0);
}

private static double Radius2Degree(double rad)
{
    return rad / Math.PI * 180.0;
}
于 2009-05-25T08:44:50.707 に答える
2

いいえ。ただし、地球の形状をモデル化する Vincenty の公式を使用できます。ここで Javascript で利用できます。

非常に簡単に解析できる Web ページは (例): http://boulter.com/gps/distance/?from=51.5329855+-0.1303506&to=40.757584+-73.985642&units=mです。

距離を簡単に測定したいだけの人は、このガジェットをチェックしてください。ただし、大円計算のみを使用します。


Rob が指摘しているように、Google はそれを追加しましたが、依然として大円の公式のみを使用しているため、1/300 まで不正確になる可能性があります。

于 2009-02-03T12:40:26.783 に答える
0

距離を数値で取得したいだけの場合は、次のようにしてみてください。

function InitDistances() {
    var startLocation = new GLatLng(startLat, startLon);
    var endLocation = new GLatLng(endLat, endLon);
    var dist = startLocation .distanceFrom(endLocation);

    // Convert distance to miles with two decimal points precision
    return (dist / 1609.344).toFixed(2);
}
于 2009-07-13T20:07:52.067 に答える
0

便利な機能があります

http://code.google.com/apis/maps/documentation/reference.html#GLatLng.distanceFrom

基本的に2つのGlatLngオブジェクトを作成してから、上記の方法を使用します

于 2010-05-18T21:00:30.587 に答える
0

私がこれを行ってから何年も経ちましたが、Great Circle Distanceを使用できます

于 2009-02-03T12:05:35.420 に答える