Javascript 小叶切除有问题吗

Javascript 小叶切除有问题吗,javascript,onchange,leaflet,Javascript,Onchange,Leaflet,我是javascript新手,正在尝试用传单制作地图。我的目标是创建一个下拉框,其中包含可以选择的层。如果选择一个图层,该图层将出现,并且地图上的现有图层将消失。我可以让新图层出现,但当选择另一个图层时,它永远不会消失。它们只是堆在一起 我试过多次使用“onchange”(既可以从javascript调用,也可以从元素调用js函数) <select id='map-ui' onchange="toggle_layer();"> <option>Please cho

我是javascript新手,正在尝试用传单制作地图。我的目标是创建一个下拉框,其中包含可以选择的层。如果选择一个图层,该图层将出现,并且地图上的现有图层将消失。我可以让新图层出现,但当选择另一个图层时,它永远不会消失。它们只是堆在一起

我试过多次使用“onchange”(既可以从javascript调用,也可以从
元素调用js函数)

<select id='map-ui' onchange="toggle_layer();">
    <option>Please choose a layer</option>
    <option value="examples.bike-lanes">bike lanes</option>
    <option value="examples.bike-locations">bike stations</option>
</select>
<div id='map'></div>
<script>
var map = L.map('map').setView([38.902, -77.001], 13);

var base_map = 'examples.map-zgrqqx0w'
map.addLayer(L.mapbox.tileLayer(base_map));

var mapUI = document.getElementById("map-ui");
var shown_layer;

function toggle_layer(){
    var selectedValue = mapUI.options[mapUI.selectedIndex].value;
    if (shown_layer != selectedValue){
        map.removeLayer(L.mapbox.tileLayer(shown_layer));
    };
    map.addLayer(L.mapbox.tileLayer(selectedValue));
    shown_layer = selectedValue;
};
</script>

请选择一层
自行车道
自行车站
var map=L.map('map').setView([38.902,-77.001],13);
var base_map='examples.map-zgrqqx0w'
map.addLayer(L.mapbox.tillelayer(base_map));
var mapUI=document.getElementById(“映射ui”);
var显示在U层;
函数切换_层(){
var selectedValue=mapUI.options[mapUI.selectedIndex].value;
如果(显示层!=所选值){
map.removeLayer(L.mapbox.tillelayer(显示的图层));
};
map.addLayer(L.mapbox.tillelayer(selectedValue));
所示\u层=所选值;
};

您的
显示层
变量应该是
L.mapbox.tillelayer(selectedValue)
。然后
map.removeLayer(显示层);
应该可以工作

无论如何,下面是一个使用jQuery()的代码示例:

var map = L.map('map').setView([38.902, -77.001], 13);
map.addLayer(L.mapbox.tileLayer('examples.map-zgrqqx0w')); 

var shown_layer;

$("#map-ui").change(function() {
    var selected = $("#map-ui option:selected").val();

    if(selected === "") return;

    if(shown_layer !== undefined)
        map.removeLayer(shown_layer);

    shown_layer = L.mapbox.tileLayer(selected);
    map.addLayer(shown_layer); 
});