【问题标题】:MapBox change feature properties of Vector mapMapBox 改变 Vector map 的特征属性
【发布时间】:2022-08-16 10:45:14
【问题描述】:

我正在修改图层中的功能,并想使用类似于 \"setData()\" 到矢量图层?从谷歌搜索一些地方我读到它不可能将该 setData 函数用于向量并且只能用于geojsons。

我正在做的是首先我从图层中获取特征属性

let features = this.map.queryRenderedFeatures({layers:[\"maakunta-fills\"]}).map(item=>{
        const copied = {...item}
        copied.properties.modified = \"some_modified_value\"
        return copied;
    });

然后我的愿望是我可以做类似的事情:this.map.getSource(\"sourcename\").setData(features) 但是 mapbox 会通过说 setData 不是函数来抛出错误(我假设因为这个 \"sourcename\" 是一个矢量瓦片。看起来像这样:

this.map.addSource(\"maakunta\", {
            type: \"vector\",
            tiles: [tileServiceURL + \"base.maakunta/{z}/{x}/{y}.pbf\"],
            promoteId: \"id\"
        });

    标签: mapbox mapbox-gl-js mapbox-gl mapbox-android mapbox-marker


    【解决方案1】:

    最好的方法是使用 setFeatureState。它不会更改矢量数据,但您可以更改样式并拦截任何点击事件并推送更新的数据。这当然仅限于当前的客户端会话。例如,理想情况下,您将更新数据库中的源数据,以便当新用户查看新的数据库磁贴请求时,他们将有权访问新数据。

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      相关资源
      最近更新 更多