JSONデータを使ってGoogle Maps V3にマーカーとバルーン(吹き出し)を表示【jQuery】

あるプロジェクトのためにコードを書いたのですが、結局出番がなさそうな匂いがしてきてます。せっかく書いたので、メモとして残しておきます。

JSONといっても外部ファイルを読みこませるのではなくて、JavaScriptの中に書いてある形式になります。ご注意ください【謎】。

ちなみにJSONには、緯度経度、バルーンの中に表示させるHTML、オリジナルマーカーの情報が入ってます。また、マップの最大拡大と最小縮小の制御などを書いてます。

$(function(){
	var lat = 34.679526;
	var lng = 135.178021;
	var infowindow;

	var options = {
		zoom: 10,
		center: new google.maps.LatLng(lat, lng),
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		scaleControl: true
	};
	var map = new google.maps.Map(document.getElementById('gmap'), options);

	//拡大・縮小の最大と最小
	google.maps.event.addListenerOnce(map, "projection_changed", function(){
		map.setMapTypeId(google.maps.MapTypeId.HYBRID);
		setZoomLimit(map, google.maps.MapTypeId.ROADMAP);
		setZoomLimit(map, google.maps.MapTypeId.HYBRID);
		setZoomLimit(map, google.maps.MapTypeId.SATELLITE);
		setZoomLimit(map, google.maps.MapTypeId.TERRAIN);
		map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
	});
	function setZoomLimit(map, mapTypeId){
		var mapTypeRegistry = map.mapTypes;
		var mapType = mapTypeRegistry.get(mapTypeId);
		mapType.maxZoom = 19;
		mapType.minZoom = 2;
	}
	
	//JSON
	var mapInfo = { 
		datas: [
			{
				latitude : 34.679526,
				longitude : 135.178021,
				html : "<div>神戸駅</div>",
				icon : "/img/marker1.png"
			},{
				latitude : 34.679362,
				longitude : 135.174441,
				html : "<div>高速神戸駅</div>",
				icon : "/img/marker2.png"
			},{
				latitude : 34.675981,
				longitude :135.169291,
				html : "<div>新開地駅</div>",
				icon : "/img/marker3.png"
			}
		],
		getAll: function() {
			return this.datas;
		}
	};
	
	jQuery.each(mapInfo.getAll(), function(i, mapInfo){
		// マーカー作成
		var marker = new google.maps.Marker({
			position: new google.maps.LatLng(mapInfo.latitude, mapInfo.longitude),
			map: map,
			icon: mapInfo.icon
		});
		//バルーン作成
		google.maps.event.addListener(marker, 'click', function(){
			//すべてのバルーンを閉じる
			if(infowindow) { infowindow.close(); }
			infowindow = new google.maps.InfoWindow({
				content: mapInfo.html
			});
			infowindow.open(map, marker);
		});
	});
});

今度はJSONを外部ファイルとして読み込ませる分が必要ですね。【謎】