我无法打开和关闭图层。我按照教程:https:// www。 mapbox。 com / mapbox-gl-js / example / toggle-layers /
从教程和其他帮助文档中我不清楚我应该使用什么值。我的所有数据和样式都是使用Mapbox Studio创建的。我对addLayer&source;'来源的不同价值感到困惑。 ,' source-layer' vs addSource。
在此帮助文件中:https://www.mapbox.com/help/mapbox-gl-js-fundamentals/ - 它没有提及addSource,表明根本不需要它,但是当我从代码中排除它时,它不会显示地图图层正确 - 这是为什么?
您可以在此处查看我的地图:http://www.heavenlygardens.org.uk/maps/6/index3.html
有人可以具体解释我做错了吗?
答案 0 :(得分:1)
由于您已将其添加到mapbox studio
,因此无需再次添加图层您在mapbox工作室中提供的图层名称应该用于显示和隐藏它们
由于您已将地图框中的 hg 命名为 hg ,因此必须在此处使用
mapboxgl.accessToken = 'pk.eyJ1IjoiZGFuaWlzaCIsImEiOiJ5dzJfM19rIn0.s8DcOH767tjpUznJhAAkaw';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/daniish/cj1m2ndxd001j2spd09ne38vm',
zoom: 14.5,
center: [1.2964, 52.6291]
});
var toggleableLayerIds = [ 'hg', 'Churchyards' ];
for (var i = 0; i < toggleableLayerIds.length; i++) {
var id = toggleableLayerIds[i];
var link = document.createElement('a');
link.href = '#';
link.className = 'active';
link.textContent = id;
link.onclick = function (e) {
var clickedLayer = this.textContent;
e.preventDefault();
e.stopPropagation();
var visibility = map.getLayoutProperty(clickedLayer, 'visibility');
if (visibility === 'visible') {
map.setLayoutProperty(clickedLayer, 'visibility', 'none');
this.className = '';
} else {
this.className = 'active';
map.setLayoutProperty(clickedLayer, 'visibility', 'visible');
}
};
var layers = document.getElementById('menu');
layers.appendChild(link);
}
&#13;
#menu {
background: #fff;
position: absolute;
z-index: 1;
top: 10px;
right: 10px;
border-radius: 3px;
width: 120px;
border: 1px solid rgba(0,0,0,0.4);
font-family: 'Open Sans', sans-serif;
}
#menu a {
font-size: 13px;
color: #404040;
display: block;
margin: 0;
padding: 0;
padding: 10px;
text-decoration: none;
border-bottom: 1px solid rgba(0,0,0,0.25);
text-align: center;
}
#menu a:last-child {
border: none;
}
#menu a:hover {
background-color: #f8f8f8;
color: #404040;
}
#menu a.active {
background-color: #3887be;
color: #ffffff;
}
#menu a.active:hover {
background: #3074a4;
}
body { margin:0; padding:0; }
#map { position:absolute; top:0; bottom:0; width:100%; }
&#13;
<link href="https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.css" rel="stylesheet"/>
<script src="https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.js"></script>
<nav id="menu"></nav>
<div id="map"></div>
&#13;