Leaflet 传单-图标图层开关

Leaflet 传单-图标图层开关,leaflet,Leaflet,我目前正在为我所在大学的一个班级创建一个交互式地图。由于我只是一名编码初学者,我在实现我的想法时遇到了一些困难。我想创建一个层交换机,如此处所示: 不幸的是,我不理解这个例子中的所有内容,所以我很难将它添加到我自己的地图中 当我尝试复制代码并将其添加到地图中时,我所拥有的大部分内容将不再显示(例如标记和infopopup) 这是我的项目: 如果有人能帮我解决问题,我将非常感激 感谢您抽出时间来使用传单图标图层开关,您需要创建一个包含名称、图标和图层的baseLayers对象,如下所示 var p

我目前正在为我所在大学的一个班级创建一个交互式地图。由于我只是一名编码初学者,我在实现我的想法时遇到了一些困难。我想创建一个层交换机,如此处所示:

不幸的是,我不理解这个例子中的所有内容,所以我很难将它添加到我自己的地图中

当我尝试复制代码并将其添加到地图中时,我所拥有的大部分内容将不再显示(例如标记和infopopup)

这是我的项目:

如果有人能帮我解决问题,我将非常感激


感谢您抽出时间来使用传单图标图层开关,您需要创建一个包含名称、图标和图层的baseLayers对象,如下所示

var providers = {};

providers['OpenStreetMap_Mapnik'] = {
    title: 'osm',
    icon: './images/icons/openstreetmap_mapnik.png',
    layer: L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        maxZoom: 19,
        attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
    })
};

我已经在您的github项目上创建了一个pull请求,以了解这对您的影响。我希望这能有所帮助。

您能包含一些您试图添加的导致您出现问题的代码吗?我将其添加到了我的index.html中:var mymap=L.map('map').setView([39.8,-95.49],5);var层=[];对于(提供程序中的var providerId){layers.push(提供程序[providerId]);}var ctrl=L.control.iconLayers(layers.addTo(mymap);我还将示例中不同的.js和.css添加到我的示例中。不幸的是,当我这么做的时候,图层切换器出现了并且正在工作,但是我需要的所有东西都消失了(标记、弹出等等)。@Nicolas,不客气。如果答案对您有效,请您将其标记为已接受:)
var layers = [];
for (var providerId in providers) {
    layers.push(providers[providerId]);
}
layers.push({
    layer: {
        onAdd: function() {},
        onRemove: function() {}
    },
    title: 'empty'
})
var ctrl = L.control.iconLayers(layers).addTo(mymap);