Mapbox 我们能有一个可以获取源代码的功能吗';在添加未知的矢量平铺服务时,是否需要了解层id和层类型?

Mapbox 我们能有一个可以获取源代码的功能吗';在添加未知的矢量平铺服务时,是否需要了解层id和层类型?,mapbox,mapbox-gl-js,Mapbox,Mapbox Gl Js,我们可以有一个功能,可以获得源的元信息,列出层的id和层的类型时,添加一个未知的向量瓷砖服务?我认为这些可以帮助我们以正确的方式设置向量服务的样式,并且可以为不同的层(点--圆,多边形--填充,线--线)创建默认样式。您可以调用map.getStyle().layers来查找当前样式中定义的层 下面是您如何获取每个层的id和类型的方法: var map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/m

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

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

下面是您如何获取每个层的
id
类型的方法:

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);   
});

这是我的。请查看控制台。

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

我的意思是如果我不知道源代码的层。例如:
map.addSource()
来添加自定义向量层服务,因此有时我们可能不知道源代码的层id和层名称,因此如果有一个函数来获取源代码的元信息可能非常有用,因此我们可以使用默认样式添加源代码。