指定された座標が Google マップの道路上にあるかどうかを判断するアプリケーションでチェックを行う必要があります。
Google Maps API にそれを支援する関数はありますか?
前もって感謝します!
指定された座標が Google マップの道路上にあるかどうかを判断するアプリケーションでチェックを行う必要があります。
Google Maps API にそれを支援する関数はありますか?
前もって感謝します!
私の知る限り、これは Google Maps API を使用して行うことはできません。
OpenStreetMap (OSM)などのクラウドソース データセットを使用するのが最善の策だと思います。
独自の空間データベース ( PostGISなど)をセットアップし、OSM データをデータベースにインポートする必要があります。
次に、( TomcatやGlassfishなどの Web サーバーでホストされる) サーバー側 API を作成して、携帯電話の現在の位置を受信し、特定の半径で位置をバッファーして円形ポリゴンを取得し、空間クエリを実行します。 PostGISを介してバッファーが道路と交差するかどうかを判断し (たとえば、含めたい道路の種類に応じて、「highway=primary」または「highway=secondary」のラベルが付いたウェイ -このサイトを参照)、true または false を返します。電話への対応。
2015年8月編集
android-maps-utils ライブラリPolyUtil.isLocationOnPath()
には、道路 (またはその他の線) を構成するポイントのセットがあると仮定して、Android アプリ自体でこのタイプの計算を実行できるメソッドが呼び出されています。
ライブラリ内のコードは次のようになります。
/**
* Computes whether the given point lies on or near a polyline, within a specified
* tolerance in meters. The polyline is composed of great circle segments if geodesic
* is true, and of Rhumb segments otherwise. The polyline is not closed -- the closing
* segment between the first point and the last point is not included.
*/
public static boolean isLocationOnPath(LatLng point, List<LatLng> polyline,
boolean geodesic, double tolerance) {
return isLocationOnEdgeOrPath(point, polyline, false, geodesic, tolerance);
}
このライブラリを使用するには、ライブラリを に追加する必要がありますbuild.gradle
。
dependencies {
compile 'com.google.maps.android:android-maps-utils:0.4+'
}
次に、ポイントとパスを取得したら、緯度/経度をLatLng
オブジェクト (具体的にはそれぞれ aLatLng point
とList<LatLng> line
) に変換してから、コード呼び出しで次のようにします。
double tolerance = 10; // meters
boolean isLocationOnPath = PolyUtil.isLocationOnPath(point, line, true, tolerance);
...ポイントがラインから 10 メートル以内にあるかどうかを確認します。
使用方法の詳細については、このライブラリの入門ガイドを参照してください。