Mapbox GL JS addLayer' source'

时间:2017-05-10 03:33:06

标签: mapbox mapbox-gl-js

我无法打开和关闭图层。我按照教程: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

有人可以具体解释我做错了吗?

1 个答案:

答案 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;
&#13;
&#13;