У меня есть код ниже. То, что я пытаюсь сделать, это когда я достигну определенной точки увеличения (> 8), чтобы отобразить некоторые булавки на карте. Это работает нормально. Однако, как вы можете видеть ниже, у меня есть и другое заявление. В этом другом утверждении я хочу удалить контакты в любом случае, масштаб меньше 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);
             }
        }
   }
});

ОБНОВИТЬ:

Проблема в том, что у меня есть и другие контакты кроме этих. Итак, я хочу явно удалить вышеупомянутые контакты. Более того, когда я достигаю увеличения> 8, тогда, когда я иду к увеличению <8, пин-код все еще отображается

0
Nick Robertson 31 Янв 2013 в 15:13

2 ответа

Лучший ответ

Я бы попробовал один из них:

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
slawekwin 31 Янв 2013 в 11:33

Попробуйте это в блоке else следующим образом:

} else {
  for (var i = 0; i < <?= $store_records ?>; i++) { 
      $('#map_canvas').gmap('clear', 'overlays');
      $('#map_canvas').gmap('clear', 'markers');
  }
}
0
Jai 31 Янв 2013 в 11:45