2

当添加未知的矢量切片服务时,我们能否有一个功能可以获取源的元信息以列出图层的 id 和图层的类型?我认为这些可以帮助我们以正确的方式设置矢量服务的样式,并且可以为不同的图层(点--圆、多边形--填充、线--线)设置默认样式。

4

2 回答 2

2

您可以调用map.getStyle().layers以查找当前样式中定义的图层。

以下是如何获得每一层的id和的:type

var map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/mapbox/light-v9',
    zoom: 13,
    center: [-122.447303, 37.753574]
});

map.on('load', function () {    
    var layersMeta = map.getStyle().layers
        .map(function(layer) { 
            return [layer.id, layer.type];
        });
   console.log(layersMeta);   
});

是相应的 jsfiddle。看看控制台。

于 2016-06-17T10:16:39.927 回答
1

不幸的是,没有标准方法可以列出矢量切片源中的所有图层。Mapbox 源vector_layers在其 TileJSON 中提供了一个对象,但由于此功能不是标准的,因此在 GL JS API 中不可用。

于 2016-06-17T18:46:08.810 回答