Більше

Отримання поточного шару під контролем події Leaflet?

Отримання поточного шару під контролем події Leaflet?


Чи можу я отримати поточний рівень у події управління?

if (obj.overlay) {input = document.createElement ('input'); input.type = 'прапорець'; input.defaultChecked = перевірено; } else {input = this._createRadioElement ('листівка', перевірено); } L.DomEvent.on (input, 'click', this._onInputClick, this); _onInputClick: function (e) {var id = e. currentTarget; }

Коли користувач клацне прапорець, це спричинить подію _onInputClick. Цей контроль буде створений під шаром листівки. Я хочу отримати поточний шар. Наприклад, я можу отримати поточний контроль, такий як e.currentTarget. Чи можна отримати поточний шар за допомогою бібліотеки Leaflet?


Я припускаю, що ви створюєте брошуру на основі L.Control. Шари?

У цьому випадку ви можете просто продовжувати використовувати схожу схему, як L.Control.Layers, щоб зберігати, а потім отримувати посилання на відповідний шар.

L.Control.Layers зберігає лише leaflet_id шару як властивість вхідного елемента: input.layerId = L.stamp (obj.layer);

Усі шари, відомі за допомогою керування шарами (тобто додані під час створення або пізніше заaddBaseLayerабоaddOverlay) посилаються наthis._layersоб'єкт.

При події клацання введення, Layers Control перебирає всі входи та отримує відповідні шари: obj = this._layers [input.layerId];

Тож у вашому випадку, якщо ви використовуєте ту саму схему, зберігайте посилання на всі шари, що цікавлять васthis._layers, прикріпіть ідентифікатор, на який посилається вхід, за допомогоюinput.layerId = L.stamp (шар), а потім отримати його за потреби, прочитавши цей ідентифікатор і отримавши відповідне посилання:

_onInputClick: function (event) {var id = event.currentTarget.layerId; шар var = this._layers [id]; }

Це стара тема ... але я знайшов хорошу відповідь на подібну проблему тут: https://stackoverflow.com/questions/33740996/how-to-get-the-baselayer-selected-in-leaflet

Моя ситуація мала справу з базовими шарами, але хуки є для того, щоб скласти графік подій для додавання накладання (overlayadd) або видалення накладання (overlayremove). Дивіться тут: https://leafletjs.com/reference-1.6.0.html#map-overlayadd

Ось мій робочий код, який повертає layer_id із елемента керування шаром, коли відбувається подія зміни базового шару. За допомогою цього layer_id я можу визначити, який базовий шар увімкнено:

map.on ('baselayerchange', function (e) {currentLayerID = e.layer._leaflet_id; console.log (currentLayerID);});

Перегляньте відео: The Leaflet Plugins. #EasyButton #Sidebar. #WebGIS. GIS Data on Dashboard with #Leaflet API. #8