2013-01-31 130 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'); 
    } 
}