Листовка управления слоями geojson по уровню масштабирования

просто ищете способ управлять слоями geojson с помощью уровня масштабирования, например minZoom, maxZoom для tileLayers, есть идеи?

Описание: слой точек geojson, разные классы точек, скажем, столица нации, столица провинции, департамент, столица, остальные простые города. Цель: на уровне масштабирования 4 отобразить только столицу нации (только один пункт) на уровне масштабирования 6 отобразить все 24 столицы провинций (вы увидите только часть из них) на уровне масштабирования 8 отобразить столицы 524 департаментов (вы увидите только часть из них) на уровне масштабирования 10 отображать остальные города, та же идея.

заранее спасибо. Джей Си


person user2932070    schedule 29.10.2013    source источник


Ответы (2)


Ознакомьтесь с сопоставлением событий в документах листовки.

Вы можете подписаться на событие «zoomend», а также на «zoomstart» и некоторые другие.

map.on('zoomend', function (e) {
    myZoomHandler();
});

В функции обработчика масштабирования зацикливайте свои слои и добавляйте или удаляйте слои по мере необходимости.

function myZoomHandler() {
    var currentZoom = map.getZoom();
    switch (currentZoom) {
        case 4:
         //show Capitols
        break;
        case 6:
         //show Provinces
        break;
        default:
         // etc
        break;
    }
}
person GrantE    schedule 05.05.2014

В Leaflet есть событие viewereset, которое запускается при обновлении карты (при загрузке, при увеличении). Вы можете сделать что-то вроде:

map.on('viewreset', function() {
   var zoom = this.getZoom();
   // show/hide layers based on zoom level
}, map);

Один из способов показать/скрыть слои — использовать метод setStyle() L.GeoJSON (используйте свойства display или visibility).

person Dan Burzo    schedule 01.11.2013
comment
Это либо неправильно, либо устарело. Вы можете сделать это, но вам нужно использовать свойство непрозрачности — отображение и видимость не являются допустимыми свойствами. - person Stev_k; 23.04.2014