Я создал листовую карту для отображения некоторых данных geoJSON в отдельных вертикальных слоях.
Работает нормально, за исключением того, что элемент управления слоя будет перечислять параметры в неупорядоченном порядке, то есть «слой 0, слой 2, слой 1», а не «слой 0, слой 1, слой 2». Данные загружаются через вызовы AJAX, поэтому слои добавляются в элемент управления в порядке, в котором эти вызовы завершаются, то есть в основном случайным образом.
В соответствии с документацией для элемента управления слоями [https://leafletjs.com/reference-1.3.0.html#control-layers], если для sortLayers задано значение true, по умолчанию сортировка слоев производится по имени, но этого, похоже, не происходит.
Итак, я попытался явно передать функцию сортировки, но в документе не приводится пример того, как должен выглядеть.
Когда мой код выглядит так:
var layerControlOptions = {
hideSingleBase : true,
autoZIndex : true,
sortLayers: true}
var layerControl = L.control.layers(null, null, layerControlOptions).addTo(map);
Элемент управления выглядит следующим образом:
управление слоями с помощью sortLayers: true и функция определения не определена
Мое лучшее предположение при написании моей собственной функции сортировки:
var layerControlOptions = {
hideSingleBase : true,
autoZIndex : true,
sortLayers: true,
sortFunction: function(layerA, layerB, nameA, nameB){return
[nameA,nameB].sort();}}
var layerControl = L.control.layers(null, null,
layerControlOptions).addTo(map);
При этом имена слоев отображаются в том же порядке, в котором они не заданы. Не уверен, что я пишу это неправильно, или это просто эквивалент по умолчанию, который по какой-то причине возвращает неправильный порядок.
Похоже, такая же проблема здесь: Управление слоем листовки: Порядок
, который не имеет принятого ответа и не упоминает параметры управления слоем. Я попробовал решение, которое предлагается здесь, но оно также не решило проблему.
Любая помощь по этому вопросу будет принята с благодарностью, спасибо.