GoogleマップのルートをGoogleマップルートに簡単に保存して再表示したいと考えています。ポイントAからBまで、GoogleのDirectionsResultオブジェクトにはルートに沿って100ポイントがあるとします。このルートを保存して次回のペイント時にこれらのポイントすべてを通過することを保証したいとします。完全なGoogleマップルートを保存しています
私が行っているのは、DirectionsResultオブジェクト全体をシリアル化してデータベースに格納する方法です。その後、ルートを再描画する場合は、文字列をJSON.Parseに戻してから、DirectionsRendererオブジェクトにフィードして地図上のルートを描画します。このアプローチには、3つの問題があります。
1)シリアル化プロセス中にタイプ情報が失われ、Googleがオブジェクトをミニン化するため、クラス関数を使用してこれらの値をオブジェクトから確実に取得できなくなります。最初にオブジェクトのシリアル化を行う際に、データアクセス関数を使用してプレースホルダーオブジェクトを構築し、後でシリアル化された文字列を解析する際にGoogle Mapsオブジェクトを再構築する必要があります。
2)法的に疑わしいです。 GoogleマップTOSでは、データを永続的に保存することは想定されておらず、このアプローチが違反しているようです。
3)オブジェクトが巨大になる可能性があります.1つのルートが64KBを超えていました。
また、パスからいくつかのポイントを保存し、Waypointを使用して再構築しようと考えました。この種の作品では無料APIの最大8ポイントしか持てないので、8ポイントを超える精度はそれほど保証されません。さらに、ルートに沿ってウェイポイントマーカーをペイントして、ユーザーを混乱させる可能性があると考えます。
Googleマップからの正確なルートを保存するための受け入れられた方法があるか、これを防ぐために意図的に設計されたAPIとTOSですか?助けてくれてありがとう。
私たちはそれを解決しました: 私は "encoded_polyline"フィールドを取って、それを私たちのバックエンドに送りました。バックエンドでポイントを処理する必要がある場合は、ライン上で見つかったルービ(または使用している言語)への移植アルゴリズムのバージョンを使用しました。ここに私が見つけた[python版](http://code.google.com/p/py-gpolyencode/)があります。 フロントエンドにポリラインを表示する必要がある場合は、ポリラインをフロントエンドまで送信し、[Google Geometry Tool](https://developers.google.com/maps/documentation/javascript/3.exp/reference#encoding)を使ってデコードします。 – jargetz
もちろん、これはポリラインとしてルートを表示するだけなので、ウェイポイントが必要な場合はそれらを保存する必要があります。ルートを編集可能にしたい場合は、運が悪いので、新しいルートセットをリクエストするだけです。 – jargetz
ウェイポイントを持つマーカーを持っている場合、 'waypoints list'(または' start'-'end'点を持つ 'markerリスト')シーケンスを 'database'に保存して、同じシーケンスでrequireするたびにretiveして渡すことができます始点と終点でdirectionrenderに渡します。地図上に再びルートを描きます。 – bharat