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);
}
});