kml скрыть полигон на высоком уровне масштабирования

У меня есть карта Google с точками и полигонами, определенными в файле KML, и с точками, определенными только в другом файле KML. Я хочу, чтобы иметь возможность загружать один или другой в зависимости от уровня масштабирования и пробовал следующие варианты:

var url_end = "?nocache=" + (new Date()).valueOf();
var NWlayer = new google.maps.KmlLayer({
  if (map.getZoom() > 18){
    url: "http://www.example.com/Google/ShowPointsOnly.kml" + url_end
  }
  else {
    url: "http://www.example.com/Google/ShowAll.kml" + url_end
  }
});
NWlayer.setMap(map);

... но в зависимости от варианта, который я пробую, я получаю точки и полигоны независимо от уровня масштабирования, иначе я не получу карту вообще.

1 ответ

Решение

Вам необходимо добавить прослушиватель событий для события google.maps.Map zoom_changed

var NWlayer1 = new google.maps.KmlLayer({
    preserveViewport: true,
    url: "http://www.example.com/Google/ShowPointsOnly.kml" + url_end
  });
var NWlayer2 = new google.maps.KmlLayer({
    preserveViewport: true,
    url: "http://www.example.com/Google/ShowAll.kml" + url_end
  });
google.maps.event.addListener(map, 'zoom_changed', function() {
  if (map.getZoom() > 18){
    NWlayer1.setMap(map);
    NWlayer2.setMap(null);
  } else {
    NWlayer1.setMap(null);
    NWlayer2.setMap(map); 
  }
});
Другие вопросы по тегам