content気ままにWebwebに関するもろもろ書いていきます。現在表示されている範囲内のマーカーだけ表示する[GoogleMapsAPIVersion3]+[PHP]17ずいぶん時間が経ちましたが、続きです。地図の表示と緯度経度の取得[GoogleMapsAPIVersion3]マーカーと情報ウィンドウの表示と削除[GoogleMapsAPIVersion3]XMLを読み込んでマーカーを表示する[jQuery]+[GoogleMapsAPIVersion3]表示されているマーカーのリストを表示する[jQuery]+[GoogleMapsAPIVersion3]リストをクリックしたら情報ウィンドウを表示する[jQuery]+[GoogleMapsAPIVersion3]前回までの作り込みでだいたいできましたが、本番で使うにはちょっと問題があります。今は20個ほどですが、本来の用途では10,000弱あります。10,000もマーカーなんかつけたら、重くて使いものになりません。(たぶん)PCスペックによってはフリーズしてしまいそうです。仕様変更をしなければいけません。現在表示されている範囲内のマーカーだけ表示するようにします。具体的には、表示範囲の緯度経度をサーバーサイドのプログラムに送り込んで、プログラムから範囲内に収まっている地点データのみXMLで返します。縮尺や移動などで地図が変更されたらマーカーを描画しなおすようにします。特定の範囲内にある地点をXMLで返すサーバーサイドプログラムこれは簡単にPHPで作ってしまいます。緯度経度をGETでもらう前提で、さくっと作ります。"</Locations>\n";?>本番では地点データはDBに格納されているのですが、サンプルなので手抜きです。配列に入れてハンドリングします。いう名前でぶち込んでおきます。charset=utf-8');私はこれを入れ忘れて、すこしハマりました。ヘッダーはきだしておかないと、読み込みに失敗します。初歩の初歩ですが...見事に忘れたので白状しておきます。地図が変更されたらマーカーをクリアして表示しなおす今まではボタンクリックでマーカーを表示していましたが、今回の要件を満たすには、地図が変更されたらリアルタイムに処理される必要があります。最後にイベント登録を追加。function(){renew_bounds();});こんな感じですね。!、’bounds_changed’だとマウスでドラッグ中、1pxでも動くとイベントが発生してしまいます。function(){renew_bounds();});にすると吉。ドラッグ完了して、地図表示領域が確定すると呼んでくれます。initialize()はこんな感じになります。ついでに今までえらい広域マップになっていたので、すこし調節します。