- Home ›
- Google Maps API入門 ›
- マーカーの表示管理(GMarkerManager) ›
- HERE
マーカーをまとめて追加
広告
表示する最小ズームレベルと最大ズームレベルとが同じマーカーが数多くある場合にはaddMarkerメソッドの代わりにGMarkerManagerクラスで定義されているaddMarkersメソッドを使うと便利です。
addMarkers(markers:GMarker[], minZoom:Number, maxZoom?:Number)
このマーカー マネージャに一群のマーカーを追加します。refresh() メソッド が呼び出されるまで、マーカーは地図に追加されません。地図上に配置した場 合、地図の現在のビューポート内で地図のズーム レベルが指定された minZoom より大きいか同じであればマーカーが表示されます。maxZoom が指定された場 合、地図のズームが指定されたものより大きいとマーカーは自動的に削除され ます。
1番目の引数にGMarkerクラスのオブジェクトの配列を指定します。2番目及び3番目の引数についてはaddMarkerメソッドの場合と同じです。
このメソッドを使用した場合、GMarkerManagerクラスで定義されているrefreshメソッドが実行されるまでマーカーは追加されません。
refresh()
地図上に表示されるマーカーをマネージャに更新させます。このメソッドは、 マーカーが addMarkers メソッドを使用して追加された場合に呼び出される必 要があります。
実際には次のように記述します。
var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(35.172304,136.908306), 15); var manager = new GMarkerManager(map); var markers = [ new GMarker(new GLatLng(35.176468,136.896866)), new GMarker(new GLatLng(35.174153,136.8970979)), new GMarker(new GLatLng(35.173234,136.89762)) ]; manager.addMarkers(markers, 15); manager.refresh();
一度にマーカーが地図に追加されるため、速度的にも(恐らく)改善されるのではと思います。
サンプルプログラム
では試してみます。
function initialize() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map_canvas")); map.setCenter(new GLatLng(35.172999,136.897057), 12); var manager = new GMarkerManager(map); var markers1 = [ new GMarker(new GLatLng(35.176468,136.896866)), new GMarker(new GLatLng(35.174153,136.8970979)), new GMarker(new GLatLng(35.173234,136.89762)), new GMarker(new GLatLng(35.173383,136.89987)), new GMarker(new GLatLng(35.172986,136.899894)), new GMarker(new GLatLng(35.172848,136.897845)), new GMarker(new GLatLng(35.174106,136.896676)), new GMarker(new GLatLng(35.175878,136.896483)) ]; var markers2 = [ new GMarker(new GLatLng(35.17613,136.89667)), new GMarker(new GLatLng(35.174131,136.896885)), new GMarker(new GLatLng(35.173034,136.897818)), new GMarker(new GLatLng(35.173192,136.899881)) ]; var marker3 = new GMarker(new GLatLng(35.172999,136.897057)); manager.addMarkers(markers1, 16); manager.addMarkers(markers2, 14, 15); manager.addMarker(marker3, 0, 13); manager.refresh(); } }
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>サンプル:マーカーをまとめて追加</title> <script src="http://maps.google.com/maps?file=api&v=2&key=(key)&sensor=false" type="text/javascript" charset="utf-8"></script> <script src="./js/code2_1.js" type="text/javascript"></script> </head> <body onload="initialize()" onunload="GUnload()"> <div id="map_canvas" style="width: 400px; height: 400px"></div> </body> </html>
ではブラウザで上記のURLを見てみます。
マーカーの追加方法を変えただけなので、ズームレベルによってどのようにマーカーが表示されるのかは前のページと違いがありません。
( Written by Tatsuo Ikura )