4

以下のコードを使用して、JavaScriptを使用して半径を計算する方法を知っています

var center = new google.maps.LatLng(3.2987599, 102.6872022);
var latLng = new google.maps.LatLng(3.0987599, 101.6872022);
var distanceInMetres = google.maps.geometry.spherical.computeDistanceBetween(center, latLng);

しかし、google.maps.geometry.spherical.computeDistanceBetween を C# 関数に変換する方法は?

4

3 に答える 3

5

2 点間の距離: (lat1,lon1) から (lat2,lon2)

distance = acos(
     cos(lat1 * (PI()/180)) *
     cos(lon1 * (PI()/180)) *
     cos(lat2 * (PI()/180)) *
     cos(lon2 * (PI()/180))
     +
     cos(lat1 * (PI()/180)) *
     sin(lon1 * (PI()/180)) *
     cos(lat2 * (PI()/180)) *
     sin(lon2 * (PI()/180))
     +
     sin(lat1 * (PI()/180)) *
     sin(lat2 * (PI()/180))
    ) * 3959

3959 はマイル単位の地球半径です。この値を KM (またはその他の単位) の半径に置き換えて、同じ単位で結果を取得します。

この作業例と比較することで、実装を確認できます。

于 2012-10-31T09:23:13.633 に答える
2

変換する距離を計算する C# ソリューションを作成しました

var distanceInMetres = google.maps.geometry.spherical.computeDistanceBetween(center, latLng);

C# に。以下は私が使用しているコードです。6371 は地球の半径です。

    //Calculate distance earth between 2 coordinate point
    double e = lat * (Math.PI / 180);
    double f = lng * (Math.PI / 180);
    double g = lat2 * (Math.PI / 180);
    double h = lng2 * (Math.PI / 180);
    double i =
        (Math.Cos(e) * Math.Cos(g) * Math.Cos(f) * Math.Cos(h)
        + Math.Cos(e) * Math.Sin(f) * Math.Cos(g) * Math.Sin(h)
        + Math.Sin(e) * Math.Sin(g));
    double j = Math.Acos(i);
    double k = (6371 * j);  //Distance in KM
于 2012-10-31T10:49:43.520 に答える
0

2 つの緯度/経度ポイント間の距離は、ここで説明されている hasersine 式で計算できますhttp://en.wikipedia.org/wiki/Haversine_formula

多かれ少なかれ同じ問題について、stackoverflow にも別の質問があります: 2 つの緯度経度ポイント間の距離を計算しますか? (Haversine 式)

于 2012-10-31T09:16:06.833 に答える