不動産屋のラノベ読み

2009-04-20

[]GMarkerManagerでGPolygonを管理する

 

 Google Maps API には GMarkerManager というクラスがあって、これを使うと大量のマーカーを使っても負荷が少なくなるというものなんですが。

 ただ、残念ながら、これは GPolygon クラスのようなマーカー以外のオーバーレイを管理できないです。

 

 で。

 いろいろ触っていたらなんか使えてる風になったので、書いときます。

 

コード

GPolygon.prototype.D = function(){
  return this.getBounds().getCenter()
}

 以上のコードを addMarker メソッドを使う前に実行して下さい。それで動いてる感じになります。

 

サンプル

http://lhankor-mhy.appspot.com/mmtest

「GMarkerManager」を使うと「addOverlay」を使うより、多少処理が軽くなっているのが分かると思います。2000件ぐらいで試すと分かりやすいかな?

 

注意点

 GPolygon.prototype.D という書き方は黒魔術的なので、MarkerManager を使った方がいいのかも。その際は以下のようなコードで動くはずです、試してないけど。

GPolygon.prototype.getPoint = function(){
  return this.getBounds().getCenter()
}

 *1まあ、これも結構黒魔術的ですので、自己責任で。

 

 あと、見てのとおり、getPoint メソッドを getBounds の getCenter で代替しているので、表示域に対してオーバーレイが十分に小さくないと動作がおかしくなるはずです、試してないけど。

 

参考

Google Maps API リファレンス - Google Maps API - Google Code

GMarkerManagerで表示したマーカーを消すには。 - Google-Maps-API-Japan | Google Groups

2006-11-26 - 速報ダム日和

*1:packしていないコード用です