問題タブ [google-elevation-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 大きすぎるパスを分割すると、Google Maps Elevation Service の応答が不正確になる
これはある程度詳細な質問です。最初に状況を説明し、次に私の実装を説明し、最後に質問をして理解を深めてください。
4 月 4 日の時点で更新が追加され、問題は 1 つの保留中の問題に絞り込まれています。最新情報については、この質問の下部を参照してください。
TLDR;
Google Maps Directions API から返された長いルートがあり、そのルートの標高チャートが必要です。残念ながら、GET 経由で要求され、URL の最大長が 2.048 文字を超えているため、機能しません。リクエストを分割しました。Promises を使用して正しい処理順序を保証します。しかし、標高データはルート全体で常に完全であるとは限らず、常に正しい順序で表示されるとは限らず、常に指定されたパスに従っているとは限らず、標高間の位置が数 km にまたがることがあります。
序章;
Google Maps DirectionsService レスポンスの標高チャートを作成しようとしていますが、ルートが長すぎるという問題に直面しています (これは、overview_path ごとの LatLng の数ではなく、距離に関連していないようです)。これは、ElevationService が 経由でリクエストGETされ、URL の最大長が 2048 文字であることが原因です。この問題はSO here にも記載されています。
実装;
overview_path私は、DirectionsService (プロパティ) によって返されたパスをバッチに分割し、結果 ( elevationsElevationService メソッドによって返されたgetElevationsAlongPath)を連結するために、Google よりも賢く (実際にはそうではありませんが、少なくともそれを回避する方法を見つけようとしている) と考えました。.
- 最良の詳細レベルを取得するために、バッチごとに 512 サンプルで ElevationService をクエリします。
- また、ElevationService はサンプルをパスの長さに分散させるため、バッチごとの最大数を設定し
LatLng、フル パスを処理するために必要なバッチの数を確認します (totalBatches = overview_path.length / maxBatchSize)。 - 最終的にルート案内を均等に広げると、完全なルートについて同じレベルの詳細を取得しようとします (
batchSize = Math.ceil(overview_path.length / totalBatches))。
ElevationService は非同期的に動作しますが、最初に setTimout を使用し、現在は Promises を使用している他の SO ユーザーの助けを借りて、すべての要求が正しい順序で処理されるようにしています。
私のコード
サイドノート;
サービスが持つ 8 つのウェイポイントの制限に対処するために、DirectionService のリクエストもバッチ処理していますが、8 つ以下のウェイポイントの問題にも直面しているため、これが問題ではないことを確認できます。
問題;
私が直面している問題は次のとおりです。
- 標高データは常にルートの完全なパスに従っているとは限りません。つまり、チャートの最後の標高ポイントはルートの終点から (遠く) 離れています。
- 次のタスクの実行を約束がまだ待っていないように見えるかのように、標高データがランダムな順序で表示されることがあります。
- 標高データは、特定のバッチで提供された特定
LatLngの に常に従うとは限りません(スクリーンショットを参照)。overview_path - 標高間距離データはたくさんあります。
LatLngバッチごとに最大 200 秒の均等に一致するバッチ サイズの 512 サンプルを要求している間、複数の km にまたがることがあります。
Promises を使用して (および setTimtout でタイミングを合わせる前に) ElevationService をバッチ処理すると、すべての問題が解決すると考えましたが、解決した唯一の問題は、2.048 文字のリクエスト URL を超えず、上記の新しい問題に直面していることです。
助けていただければ幸いです
また、250レップを入れたいと思います。すぐにこの質問に報奨金を出しますが、現時点ではそれは不可能です。後で報奨金を追加して、記載されている問題を解決した回答に報奨金を授与できますので、お気軽に返信してください。250レップ。報奨金は、私を正しい方向に向けてくれたあなたへの感謝を示すために授与されました.
読んで返信してくれてありがとう!
4 月 4 日に更新され、保留中の問題が 1 つ残っています (現時点でわかる限り)。
ランダムな順序での標高の問題に取り組みました
ルート検索結果の動作に一貫性がないことに気付いたとき、いくつかの問題に取り組むことができました。これは明らかな理由で発生しました。非同期呼び出しがスケジュールされることが「約束」されていなかったため、順序が正しい場合もあれば、そうでない場合もありました。マーカーが正しく表示されていた (キャッシュされていた) ため、最初はこれに気づきませんでした。
上下間距離の問題に取り組みました
標高データを表示する div は幅が 300 ピクセルしかなく、多くのデータポイントが含まれていました。このように幅が狭いため、十分な数のポイントにカーソルを合わせることができず、互いに離れた位置にある標高ポイントがトリガーされました。
標高データがルートに沿って表示されない問題
どういうわけか、この問題も解決しましたが、幅が広いか、方向の順序が「有望」であるかどうかはわかりません。
保留中の問題: 標高データは必ずしも完全ではありません
唯一残っている問題は、標高データが常に完全なパスをカバーしているとは限らないことです。これは、コンソールにいくつかのメッセージを記録すると、すべての Promise-then が完了していない時点で標高グラフが描画されていることがわかるため、Promising ロジックのエラーが原因であると考えられます。 Query Limit エラーは、Google Maps API によって返されます。
Over Query Limit エラーが返されたときに同じチェーンを再起動するにはどうすればよいですか? 同じ関数を再度解決setTimeout(...)しないようにしましたが、単に起動しましたが、Promise は再起動されたバッチを解決していないようで、クエリ制限を超えていません。現在、これは私が設定した方法です(方向と仰角の両方について):
python - Google Elevation API - 3D オーバーレイからのサーフェスの高さ?
私は Google Maps Elevation API をいじり、Python コードの例をいじりました。
Google Earth/Google マップには、3D オーバーレイが表示されている場所がたくさんあります (写真測量から推測します)。たとえば、ファーンダウン工業団地 (北緯 50 度 48 分 41.75 インチ、西経 1 度 54 分 59.85 インチ) には、3D で投影された通常の工業用建物がいくつかあります。ここで Elevation API を調べてみると、建物の高さが返されることが期待できます。私はしません、かなり一定の地面の高さを取得します。
Google API を使用して建物の高さにアクセスする方法を誰か教えてもらえますか? 出来ますか?
javascript - Google Elevation 呼び出しはブラウザでは機能しますが、node.js では機能しません
TL;DR
緯度/経度ポイントの配列から始めて、標高を取得する node.js を使用してアプリケーションを構築しています。
緯度/経度座標から標高を取得するために、GoogleMaps API、特にGoogle Elevation APIを使用します(ドキュメントはこちら) 。
この URL はなぜ
node.jsでは同じことが起こらず、ブラウザ経由でデータを返し、次の応答エラーが発生しますか?
最も勇敢な人のために
これが私が使用している座標であり、それが私に問題を引き起こしています:
Polylineモジュールを使用してPolyline Algorithmで座標を変換していますが、うまく機能します。座標は次の文字列に変換されます。
ここでGoogle の Polilyne ユーティリティから直接結果の有効性を再確認できますが、文字列が正しいことは保証します。
これまでのところ問題はありません。喜んでリクエスト URL を作成しました。結果は次のとおりです。
URL はブラウザーのチャームのように機能し、出力は次のようになります。
残念ながら、同じURL はノード内では機能しません。ここでリクエストモジュールを使用して、次のようにダーティな作業を完了させています。
ノードでこれを実行すると、コンソールに次のように表示されます。
同じロジックを使用して 15k から 30k の標高を問題なく取得したため、この問題はコード ロジックとは関係ありません。
ヒントやヘルプはありますか?この異なる動作はなぜですか?前もって感謝します
google-maps-api-3 - Google マップ API v3 標高サービス。何から測る?
Google Maps API v3 Elevation Service は hieavailable ght または depth を返しますが、何に対して相対的ですか? MSL (平均海面 [平均]) か、リアルタイム (つまり、潮汐を考慮) か
また、その場所の標高が記録されていない場合は、最も近い 4 つを平均します。しかし、4 つの距離はどれくらい離れているか (つまり、10klm 離れている場合、平均値は意味がありません)
私のアプリケーションは水面下の深さ(海面)のため、潮位が重要です
javascript - Google Elevation API からの位置情報は常に NaN です
google標高の結果の緯度経度を取得する方法がわかりません。
Google は次のような json を返します。
たとえば、 elevationI doにアクセスするには。elevations[0].location(elevationsは JSON の結果です)。
私が作成した緯度にアクセスするには、緯度を取得できないelevations[0].location.latという問題がfunction (){return a}あります。
結果を頂点に保存したい:
私がそれをするvar vertex = new Vertex(elevations[0].location.lat, elevations[0].location.lng, elevations[0].elevation);
xとy、いつもNaNなぜですか?
java - GoogleのDistance Matrix APIは「標高」も考慮していますか?
Google の距離行列 API は、2 つの緯度経度ポイント間の距離を表示する際に「標高」を考慮しますか?
1 人目が空港の上層階にいて、2 人目が同じ空港の同じ列の下層階に立っているとします。Google の距離マトリックス API で表示される距離は、この両方の人物間の垂直距離を考慮したものになりますか?
java - GPSを使用して間違った緯度と経度を取得する
https://stackoverflow.com/a/5672274/6881568を使用して標高を見つけました。GPSを使用して取得した経度と緯度の値を渡しています(コードは以下のとおりです)
以下のように建物のさまざまなフロアでテストしたところ、間違った結果が得られました。
AT 5 階 - (緯度 = 12.9174253、経度 = 77.5005331、標高 = 2636.495278941856 フィート)
AT 4 階 - (緯度 = 12.9176438、経度 = 77.5004883、高度 = 2634.1930440302203 フィート)
AT 3 階 - (緯度 = 12.9175136、経度 = 77.5005331、高度 = 2635.651439701728 フィート)
これは間違っています。3 レベルで 2635、4 レベルで 2634 です。高さは 4 階でもっとあるはずです。2 階で再び 2636 フィートになりました
android - Android: GoogleMaps の道路に基づいて、2 つ以上のポイント間の最速ルートを見つけます
上のアプリにマーカーを追加していGoogleMapsますが、マーカーは常に道路上にあります。たとえば、地図上に 2 つ以上のマーカーがあり、道路に応じてそれらの間の最適なルートを描く必要があります。何か役立つサービスはありますか?独自のアルゴリズムを作成しますか? 今までは と を少し使っていましたGoogle Elevation APIが、ポイント間の最適な道路を見つけるGoogle Direction APIには が必要ですか? Google Roads APIそれは私のニーズに似たものでなければなりません。
