leaflet
#листовка
Вопрос:
У меня есть ситуация с листовкой, где я хочу отображать разные слои на карте и переключаться между ними с помощью контроллера слоев.
Моя проблема в том, что одним из слоев является geojson, и мне нужно отобразить слои этого geojson в определенном порядке.
Я делаю это с помощью bringToFront
bringToback
функций и на уровне geojson.
Но когда я переключаюсь между разными слоями с помощью контроллера, порядок теряется.
Вот пример, показывающий проблему. Переключите слои, и треугольник изменит цвет.
Вопрос: есть ли способ сохранить порядок слоев стабильным при переключении?
Ответ №1:
Вы могли бы достичь желаемого результата, просто переупорядочив свои функции в вашем geojson, не используя bringToBack()
метод Leaflet.
Более высокое положение элемента в geojson.features
массиве приведет к более высокому отображению (выше признаков с более низким положением).
Следующая функция соответствующим образом изменяет порядок.
const moveLayersToBottom = (geojson, featureName) => {
geojson.features.sort((x, y) => (
x.properties.name === featureName ? -1 : y.properties.name === featureName ? 1 : 0
))
}
moveLayersToBottom(myGeojson, 'zone_1');
Вот ваша скрипка, отредактированная (я закомментировал ненужный код вашей скрипки): https://jsfiddle.net/br0g962p /