2013-01-31 87 views
0

我有下面的代码。我想要做的是当我达到特定的缩放点(> 8),然后在地图上显示一些引脚。这工作正常。但是,正如你可以在下面看到的,我有一个和其他声明。在这个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); 
      } 
     } 
    } 
}); 

UPDATE:

的问题是我已经和除了这些其它引脚。所以,我想明确地删除上述的引脚。此外,当我到达的变焦> 8,然后,当我去放大< 8引脚仍然显示

+0

prevZoomLevel = zoomLevel; map.getZoom()<15? zoomLevel = 1:zoomLevel = 2; 不应该是 prevZoomLevel = zoomLevel; zoomLevel = map.getZoom()<15? zoomLevel = 1:zoomLevel = 2; 此外,你试过 marker.setMap(null); 请解释更详细的情况。 – slawekwin

+0

编辑:将它们存储在数组中或添加某种标志,指示其条件可见性 – slawekwin

+0

@slawekwin您能否通过提供答案来帮助我? –

回答

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; 

或类似的东西。

希望这会有帮助

0

试试这个在别的阻止这样:

} else { 
    for (var i = 0; i < <?= $store_records ?>; i++) { 
     $('#map_canvas').gmap('clear', 'overlays'); 
     $('#map_canvas').gmap('clear', 'markers'); 
    } 
}