2009-07-28 9 views
1

私は現在、マップウィンドウで静的ポイントを配置することができます境界が変更されたときにGoogleマップにポイントを動的に追加するにはどうすればよいですか?

var latlng = new GLatLng(lat, lng); 
map.addOverlay(new GMarker(latlng, markerOptions)); 

そして私は、ウィンドウの境界を取得する方法を知っています。私はまた、境界を取り、それらの内部にある点をどんな形式でも返すページをコーディングすることもできます。

私が今持っている問題:

  1. moveendイベントがズーム変更を含むすべての動きをキャプチャしていますか?または、私はそのイベントを別々に監視する必要がありますか?
  2. 外部データソースをどのように呼び出す必要がありますか? (私はただJQuery $.getリクエストを行うべきですか?)
  3. そのデータソースは何を返すべきですか?
  4. マップにそのデータを表示するにはどうすればよいですか?

答えて

1

私は自分のサイトの一つでthisを使用しています。私はそれがまさにあなたが探しているものだと思う。しかし、 "gmaps-utility-library"プラグインにはいくつかのバグ/悪いコードが付いているので、それを調べて、すべてがうまくいくかどうかを再確認することをお勧めします(マーカーマネージャーには何も起こりませんでしたが、そのライブラリの他のプラグイン)。ここで

referenceexamplesです。

あなたがあなた自身をコーディングしたい場合でも、この1つは、おそらく良い出発点です。

EDIT

3-4のための私の答え:それは本当に、状況に依存し

。静的な場合(地図上に多くのポイントを管理する必要がある場合のみ)、マップが配置されているページ(JavaScript配列など)とともにすべてのポイントを配信できます。ユーザーがデータとやり取りする場合は、おそらくAJAXを使用する方がよいでしょう。あなたのサイトでjQuery(または他のJSライブラリ)を使用している場合は、そのライブラリからajax関数を使用し、gmapsから来るものと一緒に行ってください。これは、同じ仕事をする2を使用する代わりに、サイト全体で同じAJAX関数を使用するのがいいからです。一つのリクエストで全体マップの

  1. ロードすべてのマーカー:あなたはAJAXのパスを取っている場合

    あなたは2つのオプションがあります。

  2. ユーザーの画面に表示されるマーカをマージ+小さなマージン。

あなたが大きな画像を見たいと思っている場合、またはポイントのすべてまたはほとんどを見たいと思ったら、オプション1 +マーカマネージャー(私が推薦したものまたはあなた自身のものと同様)に進みます。

本当にたくさんの点があり、ユーザーはほとんどの場合、オプション2 +マネージャーまたはこの単純なアルゴリズムに行くことは決してありません。マップのクリア - >マップウィンドウ境界+ magin /(キャッシュ) - >描画点 - >移動/ズームごとに繰り返します。個人的な経験から

(私は両方のAJAXのオプションを使用しました)マーカーマネージャはかなり良い仕事をして、たくさんのポイントを処理し、全体的なユーザー体験は、ちょうどビューポートのためのロードポイントそしてたくさん滑らかであることができます。新しいポイントをリクエストしてマップ上に描画するのはかなり遅く/不安定です。もちろん、それはポイントの量に依存します。

+0

マーカーマネージャ(何が必要に応じて)への唯一の欠点は、あなたがレベルをズームれる表示されたマーカーを指定しなければならないことです。 –

1

私は現在、サーバー上でのクラスタリングに加えて、これに非常によく似たことをやっています。

  1. はい、moveendはズームの変更をキャプチャします。
  2. すでにjQueryを使用している場合は、$.getリクエストがうまくいくはずです。
  3. 私はXMLとJSONの両方を返すことを試みました。これらはうまくいきましたが、これらのデータ形式を解析すると、データベースに追加されるポイントが増えるほどアプリケーションが大幅に遅くなることが判明しました。私はeval()で実行する単純なJavascriptを返すようになりました。私はJavascript(私)のソースを完全に信頼するので、私はこれに問題はありません。
  4. マーカーを追加するJavascript関数には、マーカーの緯度、経度、およびIDのみが含まれます。このページには既に、マーカーごとにすべてのデータを含むJavascript配列が含まれています。これは、マーカーがクリックされたときにアクセスできます。

これは私がそれをやっている方法ですが、あなたは確かにあなたが望むことをいくつかの方法で伴わせることができます。ここで

1

では、Googleからデータソースへの外部呼び出しを行うの偉大な例です。 Google Maps PHP and SQL

あなただけの外部のJavaScriptファイルでポイントを保存している場合は、私のようにXMLの上にJSON形式を使用することをお勧めしますGoogleマップで使用するXMLパーサはjsonよりもはるかに低速です。

  1. Moveend yesはあらゆる種類の変更をキャプチャします。
  2. 外部XMLファイルのみを使用している場合は、Googleの機能を使用してXMLファイルを呼び出してダウンロードできます(上記のリンクに記載されています)。そうしないと、更新可能なファイルが作成され、jsonで解析されます。
  3. 私はXML解析よりもはるかに高速であることを発見したので、JSONを返すべきだと思います。
  4. あなたは配列を解析し、それぞれのマーカーを作成します。ここではJSONを使用しての良い例です:

Jquery and Google Maps

グッドラック!

関連する問題