我有以下代码。我正在尝试做的是,当我达到特定的缩放点(> 8)然后在地图上显示一些引脚时。这工作正常。但是,正如你在下面我看到的那样,我有一个else语句。在这个else语句中,我希望在任何变焦小于8的情况下移除引脚。不幸的是,我找不到解决方案。任何人都可以帮助我吗?
var map = $('#map_canvas').gmap('get', 'map');
var zoomLevel = 1;
//var marker;
$(map).addEventListener('zoom_changed', function() {
var i, prevZoomLevel;
prevZoomLevel = zoomLevel;
map.getZoom() < 15 ? zoomLevel = 1 : zoomLevel = 2;
if (prevZoomLevel === zoomLevel) {
if (map.getZoom() > 8) {
for (var i = 0; i < <?= $store_records ?>; i++) {
$('#map_canvas').gmap('addMarker', {
'position': new google.maps.LatLng(store_data.records[i].lat, store_data.records[i].lng),
'icon': imageStores,
'visible': true
}).click(function() {
$('#map_canvas').gmap('openInfoWindow', { 'content': store_data.records[i].name }, this);
});
//marker = new google.maps.Marker({
//'position': new google.maps.LatLng(store_data.records[i].lat, store_data.records[i].lng)
// });
}
}
else {
for (var i = 0; i < <?= $store_records ?>; i++) {
//marker.setVisible(false);
}
}
}
});
更新:
问题在于我和其他别针除了这些。所以,我想明确地删除上述引脚。此外,当我达到缩放&gt; 8然后,当我去缩放&lt; 8时,仍然会显示引脚
答案 0 :(得分:1)
我会尝试其中一种:
if (map.getZoom() > 8) {
for (var i = 0; i < <?= $store_records ?>; i++) {
$('#map_canvas').gmap('addMarker', {
'position': new google.maps.LatLng(store_data.records[i].lat, store_data.records[i].lng),
'icon': imageStores,
'visible': true
}).click(function() {
$('#map_canvas').gmap('openInfoWindow', { 'content': store_data.records[i].name }, this);
});
marker = new google.maps.Marker({
'position': new google.maps.LatLng(store_data.records[i].lat, store_data.records[i].lng)
});
marker.conditionalVisibility = true; //first option
conditionalMarkers.push(marker); //second option, conditionalMarkers is an array declared globally
}
}
else {
//first option
for (var i = 0; i < <?= $store_records ?>; i++) {
if (marker.conditionalVisibility)
marker.setMap(null);
}
//second option
for (var i = 0; i < conditionalMarkers.length; i++) {
marker.setMap(null);
}
conditionalMarkers.length = 0;
或类似的东西。
希望这有帮助
答案 1 :(得分:0)
以这种方式在else块中尝试:
} else {
for (var i = 0; i < <?= $store_records ?>; i++) {
$('#map_canvas').gmap('clear', 'overlays');
$('#map_canvas').gmap('clear', 'markers');
}
}