如何获取Mapbox中图层的类型

问题描述 投票:5回答:1

我正在使用Mapbox GL构建交互式地图应用。

我一直在创建的地图现在可以扩展到许多层,并且我创建了用于管理它们的边栏。

我将它们分组为一个下拉列表,使按钮能够带有图标的颜色和图标,包括信息按钮,并且默认情况下可以选择按钮的打开或关闭。

问题是,在侧边栏上选择图层时我无法获得图层的类型。

关于类型,需要更改滤镜和属性,例如线条颜色填充颜色圆圈颜色等。

map.setPainProperty(layer, type, value);

这里,我可以通过选择图层从侧边栏获取layerID和值。我找到了一个临时解决方案,那就是根据包含layerID和类型的对象创建数组。

喜欢这个

var layers = [
    {id: 'layer1', type'fill'},
    {id: 'layer2', type'line'}
];

但是它使代码混乱并且不负责动态层,因为它是hardcoded

请帮助我提供简单的解决方法。

谢谢。

javascript html css mapbox mapbox-gl
1个回答
3
投票

我之前也遇到过这样的问题,并仔细检查了[[Mapbox API参考,但找不到合适的函数来直接获取图层的类型。

在旧版本中,它们不提供像getLayerType这样的功能。

在这种情况下,您可以使用getLayer功能,该功能可用于多种用途。

getLayer功能在验证

Layer

时也可以使用。const layer = map.getLayer(layerID); if (layer) { map.setPainProperty(layerID, layer.type, value); }
这里layer是一个对象,其中包含各种典型值,例如

id

type等...,以及在将图层添加到地图时由您定义的自定义值。例如:

map.addLayer({ 'id': layerID', 'type': 'symbol', 'source': source, 'layout': { 'visibility': 'visible' }, layout: { "text-field": "{Name}", "text-size": { stops: [ [11, 10], [12, 12] ] } }, "source-layer": sourceLayer, paint: { "text-halo-color": "#ffffff", "text-halo-width": 5, "text-opacity": { stops: [ [8, 0], [9, 1] ] } } });

希望对您有帮助。

问候

© www.soinside.com 2019 - 2024. All rights reserved.