- 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 )

 
				 AjaxTower
AjaxTower