MapBox更改矢量贴图的特征特性



我正在修改层中的特性,并希望使用类似于";setData(("到矢量层?从谷歌上搜索到的一些地方,我发现不可能将setData函数用于向量,而只能用于geojson。

我所做的是首先从层中获得特征属性

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

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

最新更新