説明
マーカー独自のプロパティを追加するにはマーカーオブジェクトにプロパティ名を指定し値を指定します。指定したマーカー独自のプロパティになるので、他のマーカーを追加した場合でも異なる値を保持することができます。ver 1の場合、イベント発生時にマーカーオブジェクトがパラメータとして渡されるのでサンプル1のような書き方もできますし、サンプル2のようにthisを使った書き方もできます。
<!DOCTYPE html PUBLIC "-//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>Sample</title>
<script src="http://maps.google.com/maps?file=api&v=1&key=ABQIAAAAasAJryKxWJnBFVJa487d9hTHGAxTVT7IRADYa-JdYz7xQ8IQZBSthgDZdggYpQHsmm6WYtHstQFfLA" type="text/javascript"></script>
</head>
<body>
<div id="gmap" style="width: 500px; height: 400px"></div>
<script type="text/javascript">
//<![CDATA[
map = new GMap(document.getElementById("gmap"));
map.centerAndZoom(new GPoint(137, 36), 11);
map.addControl(new GLargeMapControl());
addMarker(137, 36);
addMarker(138, 36);
addMarker(137, 37);
function addMarker(gpx, gpy) {
var gpObj = new GPoint(gpx, gpy);
var marker = new GMarker(gpObj);
marker.flag = true;
marker.gp = gpObj;
map.addOverlay(marker);
GEvent.addListener(marker, "click", function(markerObj){
if (markerObj.flag == true) {
map.centerAndZoom(markerObj.gp, 2);
}else{
map.centerAndZoom(markerObj.gp, 11);
}
markerObj.flag = !markerObj.flag;
} );
}
//]]>
</script>
</body>
</html>