2012-02-15 13 views
12

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ですか?助けてくれてありがとう。

+2

私たちはそれを解決しました: 私は "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

+1

もちろん、これはポリラインとしてルートを表示するだけなので、ウェイポイントが必要な場合はそれらを保存する必要があります。ルートを編集可能にしたい場合は、運が悪いので、新しいルートセットをリクエストするだけです。 – jargetz

+0

ウェイポイントを持つマーカーを持っている場合、 'waypoints list'(または' start'-'end'点を持つ 'markerリスト')シーケンスを 'database'に保存して、同じシーケンスでrequireするたびにretiveして渡すことができます始点と終点でdirectionrenderに渡します。地図上に再びルートを描きます。 – bharat

答えて

2

私はこれが法的に疑わしいと思います。実際にはほぼ確実にTerms of Serviceに違反しています。あなたが指摘しているように、それはパフォーマンスを向上させる以外の目的のための永続的なストレージです(10.1.3(b)とは異なります)。 APIを介して取得することなく方向を示すことも意図しています(10.1.1(a)とは異なります)。 Googleが容易にしなかったという事実は、このユースケースを許可していないことを意味します。実際、TOSとAPIは、不可能ではないにせよ、このようなストレージを困難にするように設計されています。

開始点と終了点を保存して、それを再度表示したいときにAPIをルートにすることは許されませんか?

+0

あなたの応答Andrewに感謝します。仰るとおりです。あなたが提供したソリューションは、ほとんどの場合、優れたソリューションですが、Google Maps DirectionsRendererによって作成されたルートが、このルートの生涯を通じてほぼ同じであることを確認する必要があるという要件がありました。ある日、DirectionsRendererによって描画された最短経路が新しい高速道路を利用することを保証する方法はありませんでした(特に、私たちが中国で事業を行っており、新しい高速道路が現実のものであるため)。 – jargetz

+0

DirectionsResultから[encoded_polyline](http://code.google.com/apis/maps/documentation/utilities/polylinealgorithm.html)を保存し、それをフロントエンドに渡してペイントするソリューションを検討していますGoogleの独自のデコードアルゴリズムを使用します。バックエンドのパスをデコードする必要がある場合は、ルビに移植したバージョンのデコーダを使用します。私たちは実用的なプロトタイプを持っていますが、これは法的に疑わしいので(特に10.1.1(a)に反して)、これを配備することを躊躇しています。 – jargetz

0

GoogleマップAPIを使用しているwww.mapmyrun.comを見てください。彼らは確かにデータを保持しています。ただし、無料のAPIを使用する可能性は低いです。

関連する問題