1つのマップに複数のマーカーを表示する。

window.onload = function() {

if (GBrowserIsCompatible()) {
var map = new GMap(document.getElementById(“map”));

//地図の中心
var point =new GPoint(-122.1419, 37.4419);
map.centerAndZoom(point, 13);

var marks = [
{ id:1, lat:41, lng:-121, text:’sample1′ },
{ id:2, lat:42, lng:-122, text:’sample2′ },
{ id:3, lat:43, lng:-123, text:’sample3′ },
{ id:4, lat:43, lng:-134, text:’sample4′ },
{ id:5, lat:40, lng:-135, text:’sample5′ }
];

function addMarker( mark ) {
var latlng = new GLatLng( mark.lat, mark.lng );
var marker = new GMarker( latlng );
map.addOverlay( marker );
GEvent.addListener( marker, ‘click’, function() {
marker.openInfoWindowHtml( mark.id + ‘: ‘ + mark.text );
});
};

for( var i = 0; i < marks.length; ++i ){ addMarker( marks[i] ); }; } } [/js] var marks=[略]
連想配列オブジェクトを入れた配列markerを作成。

for( var i = 0; i < marks.length; ++i )
for文で配列marksの長さだけ処理を繰り返す。

addMarker( marks[i] );
関数addMarkerを実行

addMarker( mark )
上で呼ばれるユーザ定義関数。引数のmarkにはfor文で繰り返されたmarks[i]が入る。

var latlng = new GLatLng( mark.lat, mark.lng );
GLatLngで座標を指定する。「引数.キー」で連想配列の値にアクセスしている。

marker.openInfoWindowHtml( mark.id + ': ' + mark.text );
情報ウィンドウのコンテンツ。IDとテキストを指定している。