ズームレベルによってマーカーを表示(or非表示)したいのですが、動きません。
というのも、ズームする前からマーカーは出たままになってしまいます。(/ズームレベルによってマーカーを表示/非表示させたいです/と書いてあるところ以下が機能していないのだと思います。)
/ズームレベルによってマーカーを表示/非表示させたいです/以下のところで、zoomが8以上ならマーカー表示する、それ以外ならマーカーを非表示にするということをやりたかったのですが、このコードでは機能しませんでした。加えて、エラーは出ていないのでどこをどうすればよいのかが分からない状態です。
やりたいこととしては下記の通りです。
ズームレベルが8より大きい時:マーカーを表示
スーむレベルが8より小さい時:マーカーを非表示
JavaScript
1var map; 2var mar = []; 3var place =[ 4 { 5 name:"place1", 6 lat:33.595345, 7 lng:130.362194 8 },{ 9 name:"place2", 10 lat:35.768454, 11 lng:139.420514 12 },{ 13 name:"place3", 14 lat:38.257237, 15 lng:140.902725 16 },{ 17 name:"place4", 18 lat:34.669250, 19 lng:135.476129 20 },{ 21 name:"place5", 22 lat:43.015745, 23 lng:141.409821 24 },{ 25 name:"place6", 26 lat:35.645314, 27 lng:140.031111 28 },{ 29 name:"place7", 30 lat:34.391842, 31 lng:132.484578 32 },{ 33 name:"place8", 34 lat:34.721265, 35 lng:135.361585 36 },{ 37 name:"place9", 38 lat:35.443276, 39 lng:139.640077 40 },{ 41 name:"place10", 42 lat:35.705584, 43 lng:139.751854 44 },{ 45 name:"place11", 46 lat:35.186434, 47 lng:136.946832 48 },{ 49 name:"place12", 50 lat:35.673736, 51 lng:139.716558 52 } 53]; 54 55function initMap() { 56 var latlng = new google.maps.LatLng({lat: place[0]["lat"], lng: place[0]["lng"]}); 57 58 var opt = { 59 zoom: 5, 60 center: place[2], 61 mapTypeId: google.maps.MapTypeId.ROADMAP 62 }; 63 64 65 map = new google.maps.Map(document.getElementById('map'), opt); 66 var marker = new google.maps.Marker({ 67 position: latlng, 68 map: map 69 }); 70 for (var i = 0; i < place.length; i++) { 71 latlng = new google.maps.LatLng({lat: place[i]['lat'], lng: place[i]['lng']}); 72 mar[i] = new google.maps.Marker({ 73 position: latlng, 74 map: map, 75 }); 76 77/*ズームレベルによってマーカーを表示/非表示させたいです*/ 78 mar[i].addListener("zoom_changed", function() { 79 var zoom = map.getZoom(); 80 if (zoom < 8 ) { 81 mar.setVisible( false ) ; 82 } else { 83 mar.setVisible( true ) ; 84 } 85 }); 86 87} 88}
どこを直せば、指定したズーム値より大きくなった時マーカーが表示されるようになるかをご教示いただけますと幸いです。よろしくお願いいたします。