Автоматически переключать базовую карту на уровне зума? - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь заставить листовку изменять базовую карту в зависимости от уровня масштабирования. Что я пытаюсь: (Я новичок в кодировании) Я получаю сообщение об ошибке:

SyntaxError: отсутствует) после списка аргументов

Я проверял синтаксис несколько время, но не могу найти ошибку.

Мне также интересно, есть ли более элегантный способ написать это, вместо этого двойного оператора if-else.

map.addEventListener("zoomend", changeBasemap);

function changeBasemap() {
    var zoomLevel = map.getZoom();
    if (zoomLevel < 5) {
        if (map.hasLayer(osm)) {
            map.removeLayer(osm);
            stamen_Watercolor.addTo(map);
        } else {
            console.log(no need to change basemap)
        }
    } else { 
        if (map.hasLayer(stamen_Watercolor)) {
            map.removeLayer(stamen_Watercolor);
            osm.addTo(map);
        } else {
            console.log(no need to change basemap);
        }
    }
}

1 Ответ

0 голосов
/ 05 марта 2020

Ошибка в том, что вы забыли кавычки в:

console.log(no need to change basemap);

Исправьте это на:

console.log("no need to change basemap");

Вот совет о том, как ваш код может выглядеть чище:

function changeBasemap() 
{
    if ( map.getZoom() < 5 && map.hasLayer(osm) ) {
        map.removeLayer(osm);
        stamen_Watercolor.addTo(map);
        return;
    }

    if ( map.getZoom() > 4 && map.hasLayer(stamen_Watercolor) ) {
        map.removeLayer(stamen_Watercolor);
        osm.addTo(map);
        return;
    }

    console.log("no need to change basemap");
}
...