2012-04-30 5 views
2

私は約10のテーブルを持つデータベースを持っており、それらはすべて何らかの形で相互接続されています(外部キー、補助テーブル)。長いSQL文を持つ1つの巨大なXMLファイルかどうか?

Googleマップのインスタンス上に、すべてのデータをインフォボックスを含むマーカーとしてプロットし、マップをフィルタリングできるようにしたいと思います。

Google Maps Articlesから判断すると、データベースのデータでXMLを使用してマーカーその他のすべてをプロットする必要があります。

しかし、XMLファイルを生成する正しい方法は何でしょうか? Webページとマップの読み込み時にすべてのテーブルからのデータ全体を含む1つのXMLファイルを生成する巨大なSQL文を持っているか、これに対してもっと正しいアプローチがありますか?

答えて

3

XMLを使用してGoogleマップのインスタンスにマーカーを配置する必要はありません。あなたになる可能性がありますが、難しいと思われる場合はありません。私はGoogle Maps V3 APIを多く使っています。データをJSONにエクスポートし、PHPを使用してドキュメントに埋め込むか、Ajaxを使用してJavaScriptをロードするために使用できるようにすることをおすすめします。

データからインタラクティブなマーカーを作成することは本当に簡単です。データを繰り返し処理し、マップ上の各ポイントのマーカーオブジェクトを作成し、情報ウィンドウに表示するHTMLをいくつか用意し、マーカーのクリックイベントに情報ウィンドウを表示するだけです。

小皿の精度で歩いて行くのではなく、Google Maps API v3 beginner tutorialを参照してください。マーカーの作成方法やマップ上の表示方法の例が含まれています。

楽しいことに、マーカーごとに表示されるアイコン(任意のイメージにURLを指定できます)と、それらをバウンスさせることができます。要約すると、JavaScriptを使用した方が、XMLを使用した場合よりも、より多くの制御が可能になります。

については、私はcillosisのアドバイスに耳を傾けて、あなたの選択したフォーマットのMySQLデータをキャッシュします。 JSONを使用する場合は、その結果をキャッシュすることもできます。 "mysql-export-1335797013.json"のようなファイルに出力を保存するだけで済みます。この番号は、データを更新する必要があるときに推論できるUNIXのタイムスタンプです。

+0

1つの長いSQL文で1つの巨大なXMLファイルを生成してサーバーに保存し、マップ上のマーカーをXPathやPHPなどでフィルタリングするのに使用できませんか? – Bob

+1

私は、Google MapsでXMLを使用するのは明らかです。 JavaScriptを使用すると、すっきりとした配列ですべてのマーカーを利用できます。フィルターを変更するときはいつでも、配列を繰り返し処理し、どのマーカーを表示しないかを決定し、 'marker.setVisible(false)'を実行する必要があります。これは、最初のリクエストでサーバからすべてのデータをロードするだけであることを前提としています。これは私が通常やっていることであり、パフォーマンスマージンは約10 000までです。マーカ – Hubro

+0

Javascriptでできることは、サーバからクライアントにXML、JSON、その他の形式でデータを渡すかどうかは関係ありません。 –

2

最初に時間を使用して、特定のクエリのXMLを生成し、そのXML出力を後で使用するためにキャッシュします。最初は遅いかもしれませんが、それ以降はすでに生成されており、本当に速くなります。

+0

したがって、新しいフィルタクエリごとに実行SQL文を実行し、xmlを生成してサーバに保存し、他の誰かが同じフィルタクエリを要求しても、キャッシュされたバージョンを提供するだけですか? – Bob

+1

正確です。私は私が持っている潮のアプリケーションに似た何かをする。データは24時間ごとに変更されるので、誰かが潮位の場所を再度要求すると、それはより速くなります。データの有効期間は、あなたとあなたのアプリケーションによって異なります。 –

+0

このような方法でキャッシュを使用する例へのリンクがありますか? – Bob

1

PHPを使用する場合は、AJAXを使用すると比較的簡単になります。そのため、例で使用しています。しかし、は間違いなくです。 JSONは一般的に使用されています。これは、PHPよりも簡単でXMLよりも小さなダウンロードで、Javascriptで直接使用できる形式で提供されるためです。または、あなたのページのJavascriptで操作できる他のものを使うこともできます。

気楽なクエリとデータのダウンロードを使用するかどうかについては、これを行う必要はありません。あなたはできる:それは遅いかもしれません—クエリを行うだけでなく、クエリ結果のキャッシュが助けにならないデータを転送するためにも。あなたのユーザーは、データが到着するのを待ってから地図上に表示するためにJavaScriptで操作する必要があります。

基本的なデータを表示するためにかなり簡単なクエリを実行して、ユーザーが合理的に素早く参照できるようにすることもできます。ユーザーがクリックして表示しない場合、InfoWindowデータのロードをダウンロードする必要はありません。その場合、マーカーデータと基本InfoWindowデータを配信し、ユーザーが実際に要求した場合(つまり、2段階InfoWindowを使用する場合)のみ、詳細データを取得します。

関連する問題