ある町から別の町へのルートが定義されているとします。 Google Maps APIから、2つの間のルートを回復できます。ただし、Googleから返されるルートは、脚に別のステップがある場所(たとえば、ある高速道路から別の高速道路に曲がる必要がある場所)でのみ、地理座標を含む運転ルートです。
必要なのは、特定の間隔(たとえば、1/4マイルまたは100mごと)で、ルート全体に沿った地理位置(緯度/経度)です。
Google Maps API/Webサービスを介してこれを達成する方法はありますか?
または、OpenStreetMapデータベースがそれを行う方法でしょうか?
敬具、マドレーヌ。
[〜#〜] osrm [〜#〜] は、OpenStreetMapデータベースにある通りの道路形状を持つルートを提供します。たとえば、ルートをGPXとして取得できます(必要に応じてこのファイルを後処理できます)。これは次のようになります。
GET http://router.project-osrm.org/viaroute?hl=en&loc=47.064970,15.458470&loc=47.071100,15.476760&output=gpx
詳細: OSRM APIドキュメント 。
受け入れられた答えは時代遅れであり、もう機能しないため、ここでは ルートサービス from Project OSRM を使用して、道路に沿ったすべてのノードをクエリする方法を示します。
任意の数のlon、latペアを指定します。インスタンスの場合、次の3つ(ベルリン):
ルートサービスは、これらのポイント間の最速ルートを計算し、次のクエリを使用して、道路に沿ったすべてのノードを返すことが可能です。
http://router.project-osrm.org/route/v1/driving/13.388860,52.517037;13.397634,52.529407;13.428555,52.523219?alternatives=false&annotations=nodes
これは、ルートに沿ったすべてのノードのノードIDを含むjson応答を返します。結果は次のようになります。
{
"routes": [
{
...
"legs": [
{
"annotation": {
"nodes": [
2264199819,
2045820592,
21487242,
...
]
}
ノードの緯度、経度座標を受け取るには、 OverpassAPI を使用できます。
[out:json];
(
node(264199819);
node(...);
node(...);
...
);
(._;>;);
out;
Overpass-turboを使用したリクエストの例を次に示します。 http://overpass-turbo.eu/s/toe
Google.maps.DirectionsService()。route()メソッドです。サービスリクエストと、サービスリクエストの完了時に実行されるコールバックを渡す必要があります。
https://developers.google.com/maps/documentation/javascript/directions
Marlioの答えに追加します。
Google Maps Directions API自体を使用できます。指定された発信元と宛先のJSON出力で、次を探します。
"polyline" : {
"points" : ""
}
デコーダーを使用して、ポリラインから座標を取得できます。 https://github.com/emcconville/google-map-polyline-encoding-tool またはRでgooglewayパッケージを使用して同じものをデコードできます。 https://cran.r-project.org/web/packages/googleway/googleway.pdf
ただし、解像度を希望のレベルに設定する方法はわかりませんが、API出力の解像度は本当に良いです。