2016-08-29 15 views
-1

私はJavaベースのプログラムを使用しており、Firebaseというプラットフォームのクライアントとして機能しています。2点間の座標を取得

Googleマップのマーカーを更新するために、Firebaseプラットフォームから座標を読み込むアンドロイドアプリもあります。

私の質問は、ポイントAとポイントBの両方の緯度と経度がある場合、どのようにそれらのポイント間の座標を計算できますか?

このケースシナリオ

  • ポイントA(左)LAT想像:39.091868長:-9.263187
  • ポイントB(右) 緯度:39.089815長:-9.261857

enter image description here

例えば、それらの点の間に10の座標を計算するか?

+0

したがって、AとBの間の距離を計算する –

答えて

-1

あなたはその2点間の直線でそれらの座標をしたい場合は、あなただけのいくつかの簡単な数学の計算を行うことができます...

あなたはそれらの点は、道路上になりたい場合は、Google Directions APIでプレイしています。

1

私が正しく理解していれば、ミッドポイント(正確には2つの場所の真ん中を一直線に向けます)が必要です。

このウェブページは、あらゆる種類のものにとって非常に役立ちます。 http://www.movable-type.co.uk/scripts/latlong.html

アンドロイドでは、このようになります:

public LatLng midPoint(LatLng A, LatLng B) { 
    double phi1 = Math.toRadians(A.latitude); 
    double gamma1 = Math.toRadians(A.longitude); 

    double phi2 = Math.toRadians(B.latitude); 
    double deltaGamma = Math.toRadians(B.longitude - A.longitude); 

    double aux1 = Math.cos(phi2) * Math.cos(deltaGamma); 
    double aux2 = Math.cos(phi2) * Math.sin(deltaGamma); 

    double x = Math.sqrt((Math.cos(phi1) + aux1) * (Math.cos(phi1) + aux1) + aux2 * aux2); 
    double y = Math.sin(phi1) + Math.sin(phi2); 
    double phi3 = Math.atan2(y, x); 

    double gamma3 = gamma1 + Math.atan2(aux2, Math.cos(phi1) + aux1); 

    // normalise to −180..+180° 
    return new LatLng(Math.toDegrees(phi3), (Math.toDegrees(gamma3) + 540) % 360 - 180); 
} 
1

球状の形状を経由してinterpolate()方法を試してみてください。

SphericalUtilの球形状ユーティリティを使用してCalculate distances, areas and headings via spherical geometryで説明したように、緯​​度と経度に基づいて距離、面積、見出しを計算できます。説明したように、この方法は:

  • interpolate() - 与えられた二つの点の間の距離の所定の割合をある地点の緯度/経度座標を返します。このblogに与えられた

追加情報およびサンプルコードも実装部分であなたを助けるかもしれません。

関連する問題