如何将该地图框图例转换为类似手风琴的结构,以便在单击父图层名称时,子图层名称以缩进形式显示在其下方。我在下面发布了当前标准结构的链接https://www.mapbox.com/mapbox.js/example/v1.0.0/wms/但是我希望我的看起来更像这样http://jsfiddle.net /La77L8L9/3/。不同之处在于我的图层信息来自数据库我目前正在通过在我的 javascript 中创建一个元素 a 作为具有图层名称的可点击链接来添加我的图层,当点击该链接时,将显示相应的地图。我在下面放置了一个片段,说明我当前如何在从数据库中检索图层名称后附加图层名称,请不要让菜单 ui 包含基本地图的名称。
function addLayer(map, layer, name, zIndex) {
var layers = document.getElementById('menu-ui');
layer.setZIndex(zIndex)
layer.addTo(map);
// Create a simple layer switcher that
// toggles layers on and off.
var link = document.createElement('a');
link.href = '#';
if (zIndex == 1) {
link.className = 'active';
// link.class = 'accordion-toggle';
}
else {
map.removeLayer(layer);
this.className = '';
}
link.innerHTML = name;
if (zIndex != 1) {
link.onclick = function (e) {
e.preventDefault();
e.stopPropagation();
if (map.hasLayer(layer)) {
map.removeLayer(layer);
this.className = '';
} else {
layer.setOpacity(1.0);
map.addLayer(layer);
this.className = 'active';
}
};
}
layers.appendChild(link);
}
我假设也许有一种方法可以给每个元素一个 ID 并使用 .clicked 来执行从可见到假的显示,尽管在使用数据库检索图层名称时动态执行这有点棘手。我的数据库具有图层 ID,如果该特定图层是父图层的子图层,则该图层和 parentLayerID 是否存在。