Я пытаюсь добавить управление слоями в библиотеку Javascript Leaflet; для справки см. это: https://leafletjs.com/reference-1.7.1.html#control-layers. Мой код по большей части работает нормально: у меня есть объект layerControl
, который инициализируется baseLayers
, но пока нет наложения. Затем я добавляю наложение layer_USA_Counties
, как показано в коде ниже. Пока все хорошо.
Но мне нужна возможность добавить новое наложение isochronesGroup
к объекту layerControl. Этот код работает нормально, за исключением того, что в последующих исполнениях кода isochronesGroup продолжает добавлять элементы управления — см. этот снимок экрана. Я могу удалить элемент управления с помощью закомментированной команды, но она, конечно же, также удалит все элементы управления isochronesGroup
, поэтому он вообще не будет отображаться. Обратите внимание: загруженные слои и их элементы управления не обязательно должны иметь тип layerGroup
().
//globally set
var baseLayers = {
"Grayscale": grayscale,
"Streets": streets
};
layerControl = L.control.layers(baseLayers, null, { collapsed: false }).addTo(map);
//add a layer from a WMS call and add to the layerControl object
map_LayerGroup = L.layerGroup().addLayer(layer_USA_Counties);///.addTo(map);
layerControl.addOverlay(map_LayerGroup, "USA Counties");
//Following code gets executed again and again based on user interaction
isochronesGroup = L.layerGroup().addLayer(route_lines).addTo(map);
layerControl.addOverlay(isochronesGroup, "Isochrones");
///layerControl.removeLayer(isochronesGroup); //WORKS If already created. Or errors
Здравствуйте, спасибо, сэр! Я попробовал ваше предложение «второго подхода», но получил ошибку «TypeError: layerControl.addLayer не является ошибкой функции». Я думаю, что я должен придерживаться того, что у меня есть на данный момент. Спасибо еще раз.
Извините моя ошибка. Этот
addLayer()
должен был бытьaddOverlay()
. Я отредактировал свой ответ соответственно.Привет, спасибо за постоянную помощь и поддержку! Поэтому я реализовал правильный блок кода «второй подход», как указано выше, и ошибка исчезла, но первоначальная проблема с постоянным добавлением параметров изохрон вернулась.