Leaflet - выбрать слой на основе элемента из выпадающего меню - PullRequest
0 голосов
/ 23 октября 2019

У меня есть некоторый код для создания простого выпадающего меню:

<select id="menu" onchange="updateOptions(this)">
    <option value="option1" data-path="option1">option1</option>
    <option value="option2" data-path="option2">option2</option>
    <option value="option3" data-path="option3">option3</option>
</select><br>

Что я хотел бы сделать, это добавить выбранную опцию (которая указывает на объявленный слой листов Leaflet) вЛистовка с картой в виде слоя. Ниже приведен код функции и переменных:

var option1 = L.tileLayer('mapelements/basestructure/option1/{z}/{x}/{y}.png'),
    option2= L.tileLayer('mapelements/basestructure/option2/{z}/{x}/{y}.png')
    option3= L.tileLayer('mapelements/basestructure/option3/{z}/{x}/{y}.png')

var menufaults = document.getElementById("menu");

function updateFaults(menufaults) {
     map.eachLayer(function (layer) {
        map.removeLayer(layer);
    });
    var menuoption1 = menufaults.options[menufaults.selectedIndex].value;
    map.addLayer(menuoption1);
    };

Переменная menuoption1 извлекает правильное значение параметра из меню, но функция map.addLayer не нравится в качестве ввода. Я получаю ошибку «при условии, что объект не является слоем». Есть ли способ передать «значение опции» в функцию, чтобы оно соответствовало слою листов, уже объявленному как переменная?

1 Ответ

0 голосов
/ 23 октября 2019

Вы можете создать объект для сопоставления значения каждого параметра со слоем, вот пример:

const layersMap = { option1, option2, option3 };

А затем выполните:

map.addLayer(layersMap[menuoption1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...