一种干净的方法来消除mapbox FeatureCollections而不会丢失图层和来源?

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

我正在通过添加链接到它们的源和图层来初始化mapbox地图。

    mapbox.addSource(MY_SOURCE, {
        'type': 'geojson',
        'data': {
            'type': 'FeatureCollection',
            'features': [],
        },
    });

    mapbox.addLayer({
        'id': MY_LAYER,
        'type': 'circle',
        'source': MY_SOURCE,
        'paint': {
            'circle-radius': 6,
            'circle-color': '#d31467',
        },
    });

我的目标是 - 我想让这些定义完成一次然后 - 如果我需要更新源我只是:

    mapbox.getSource(MY_SOURCE).setData(geojson);

有时虽然我需要消灭所有多边形,所有点,一切。如何在不丢失所有这些定义的情况下做到这一点?我只能看到.removeSource.removeLayer - 这告诉我实际上我需要重新创建这些定义。

是否有一种破坏性较小的方式呢?

mapbox mapbox-gl-js
1个回答
2
投票

你有两个选择:

  1. 隐藏图层 map.setLayoutProperty(<layer-id>, 'visibility', 'none');
  2. 通过设置空geojson删除源中的所有功能 map.getSource(<source-id>).setData({ type: 'FeatureCollection', features: [] // <--- no features });

同样删除和重新添加源和层可能不是最糟糕的选择,具体取决于您要执行此操作的频率。

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