Maps API v3でv2のように、1つだけの情報ウィンドウが開くようにする

Google Maps API v3では、情報ウィンドウが複数開けるようになりました。
それはそれで面白く便利ではあるのですが、情報ウィンドウが開いたときに、他の情報ウィンドウをクローズする術がないので (v2のGMaps2.closeInfoWindow()のように。)、その部分は自分で実装をしなければなりません。

簡単な例としては、グローバル変数(currentInfoWindow)を用意して最後に開いた情報ウィンドウを記憶するようにします。 情報ウィンドウを開く前に必ず、currentInfoWindow.close()とすることで、常に1つだけの情報ウィンドウが表示されるようになります。

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&hl=ja"></script>
<script type="text/javascript">

	var currentInfoWindow = null;	//最後に開いた情報ウィンドウを記憶
	function initialize() {
		//地図初期化
		var initPos = new google.maps.LatLng(35.127152, 138.840627);
		var myOptions = {
			center : initPos,
			zoom : 13,
			mapTypeId: google.maps.MapTypeId.ROADMAP
	    };
		var map_canvas = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
		
		//マーカー1,2を作成
		var markerPos1 = new google.maps.LatLng(35.127152, 138.860627);
		var markerPos2 = new google.maps.LatLng(35.127152, 138.810627);
		createMarker(map_canvas, markerPos1, "<b>マーカー1</b>");
		createMarker(map_canvas, markerPos2, "<b>マーカー2</b>");
	}
	function createMarker(map, latlng, text) {
		var infoWndOpts = {
			content : text,
		};
		var infoWnd = new google.maps.InfoWindow(infoWndOpts);
		
		var markerOpts = {
			position : latlng,
			map : map
		};
		var marker = new google.maps.Marker(markerOpts);
		google.maps.event.addListener(marker, "click", function(){
			//先に開いた情報ウィンドウがあれば、closeする
			if (currentInfoWindow) {
				currentInfoWindow.close();
			}
			//情報ウィンドウを開く
			infoWnd.open(map, marker);
			
			currentInfoWindow = infoWnd;
		});
		return marker;
	}
	window.onload = initialize;
</script>
</head>
<body >
  <div id="map_canvas" style="width:100%; height:500px"></div>
</body>
</html>




サイト内検索
Google Maps APIプログラミングガイド

Google Maps API Expert 4人が共著で執筆。中級者向けに実用に役立つサンプルを中心に紹介! スマートフォン時代に合わせたGoogle Maps APIの使い方も掲載。
詳しくはこちら
Google Maps APIプログラミング入門
Google Maps APIプログラミング入門
全480ページ。Google Maps API ver.2, ver.3, for Flash, Static Maps API v2, Google Maps API Primery, ライセンス…など、Google Maps APIに関連する幅広い内容の本を書きました。
このサイトで公開しているサンプルはもちろん、本のために作ったサンプルも満載です。
詳しくはこちら