Листовка geojson нестабильный порядок слоев

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 /