google mapのズームとバインドのメモ
- 全マーカが地図に表示されるようにズームを設定。
var bounds = new google.maps.LatLngBounds(); infos.forEach(function(info){ var myLatlng = new google.maps.LatLng(info.lat, info.lng); // 対象のマーカの位置を設定 bounds.extend(myLatlng); var marker = new google.maps.Marker({ position: myLatlng, map: map }); ... }); // ズームサイズを調整 map.fitBounds(bounds);
- 画面の3つのチェックをチェックした時にマーカの表示を設定
// 画面のチェックボックスとmapとのイベント登録 function setCheckEvent(){ // 大阪 map.set("osakaVisible", true); var osakaChk = document.getElementById("osakaChk"); google.maps.event.addDomListener(osakaChk, "click", function(){ map.set("osakaVisible", Boolean(osakaChk.checked)); }); // 京都 map.set("kyotoVisible", true); var kyotoChk = document.getElementById("kyotoChk"); google.maps.event.addDomListener(kyotoChk, "click", function(){ map.set("kyotoVisible", Boolean(kyotoChk.checked)); }); // 兵庫 map.set("hyougoVisible", true); var hyougoChk = document.getElementById("hyougoChk"); google.maps.event.addDomListener(hyougoChk, "click", function(){ map.set("hyougoVisible", Boolean(hyougoChk.checked)); }); } // マーカ毎に上記イベントとバインド設定 infos.forEach(function(info){ var myLatlng = new google.maps.LatLng(info.lat, info.lng); bounds.extend(myLatlng); var marker = new google.maps.Marker({ position: myLatlng, map: map }); // マーカのバインド設定 if (info.location === '大阪'){ marker.bindTo("visible", marker.getMap(), "osakaVisible"); } else if(info.location === '京都'){ marker.bindTo("visible", marker.getMap(), "kyotoVisible"); } else { marker.bindTo("visible", marker.getMap(), "hyougoVisible"); } });
var map; function init() { var mapCanvas = document.getElementById("map_canvas"); var myLatlng = new google.maps.LatLng(34.733758, 135.496849); var mapOptions = { zoom: 4, center: myLatlng }; map = new google.maps.Map(mapCanvas, mapOptions); setCheckEvent(); var bounds = new google.maps.LatLngBounds(); infos.forEach(function(info){ var myLatlng = new google.maps.LatLng(info.lat, info.lng); bounds.extend(myLatlng); var marker = new google.maps.Marker({ position: myLatlng, map: map }); // マーカのバインド設定 if (info.location === '大阪'){ marker.bindTo("visible", marker.getMap(), "osakaVisible"); } else if(info.location === '京都'){ marker.bindTo("visible", marker.getMap(), "kyotoVisible"); } else { marker.bindTo("visible", marker.getMap(), "hyougoVisible"); } }); // ズームサイズを調整 map.fitBounds(bounds); } google.maps.event.addDomListener(window, 'load', init); /* * チェックボックスイベント登録 */ function setCheckEvent(){ // 大阪 map.set("osakaVisible", true); var osakaChk = document.getElementById("osakaChk"); google.maps.event.addDomListener(osakaChk, "click", function(){ map.set("osakaVisible", Boolean(osakaChk.checked)); }); // 京都 map.set("kyotoVisible", true); var kyotoChk = document.getElementById("kyotoChk"); google.maps.event.addDomListener(kyotoChk, "click", function(){ map.set("kyotoVisible", Boolean(kyotoChk.checked)); }); // 兵庫 map.set("hyougoVisible", true); var hyougoChk = document.getElementById("hyougoChk"); google.maps.event.addDomListener(hyougoChk, "click", function(){ map.set("hyougoVisible", Boolean(hyougoChk.checked)); }); } var infos = [ {location: '大阪', lat: 34.733758, lng: 135.496849}, {location: '大阪', lat: 34.683379, lng: 135.500226}, {location: '京都', lat: 34.98649, lng: 135.757503}, {location: '兵庫', lat: 34.699826, lng: 135.190234} ];
今後いろいろ試してみる、、、