mapbox 更改源 属性
mapbox change source property
我想用 mapbox 制作一个簇层,是的,我做到了 :D。但我希望能够将其关闭
所以我正在制作一个来源
const source = {
type: "geojson",
data: {
"type": "FeatureCollection",
"features": []
},
cluster: true,
clusterRadius: 10
}
this.map.addSource(id, source);
现在我可以设置数据了:
this.map.getSource(this.id).setData({
"type": "FeatureCollection",
"features": this.createInnerCircles()
})
在此之后,我将设置簇和圆的图层。现在集群正在运行
但是现在:如何从源代码中将 cluster: true
设置为 false。好吧,也许我可以扔掉源代码并制作一个新的,但那太丑了。
所以丑陋的方式是
const SOURCE = this.map.getSource(id);
SOURCE._options.cluster = false;
this.map.removeSource(id);
this.map.addSource(id, SOURCE._options);
糟糕,这不起作用,现在我得到:
Source "test" cannot be removed while layer "test-outer" is using it.
更新
我能够启用/禁用集群感谢@Steve Bennett
setCluster(isVisable, clusterRadius = 10) {
const style = this.map.getStyle()
style.sources.test.cluster = isVisable;
if(isVisable) {
style.sources.test.clusterRadius = clusterRadius;
}
this.map.setStyle(style)
}
更改没有特定方法的属性的一般方法是:
const style = map.getStyle()
style.sources.X.Y = Z;
map.setStyle(style)
Mapbox GL JS 将执行差异,然后进行您需要的更改。
我想用 mapbox 制作一个簇层,是的,我做到了 :D。但我希望能够将其关闭
所以我正在制作一个来源
const source = {
type: "geojson",
data: {
"type": "FeatureCollection",
"features": []
},
cluster: true,
clusterRadius: 10
}
this.map.addSource(id, source);
现在我可以设置数据了:
this.map.getSource(this.id).setData({
"type": "FeatureCollection",
"features": this.createInnerCircles()
})
在此之后,我将设置簇和圆的图层。现在集群正在运行
但是现在:如何从源代码中将 cluster: true
设置为 false。好吧,也许我可以扔掉源代码并制作一个新的,但那太丑了。
所以丑陋的方式是
const SOURCE = this.map.getSource(id);
SOURCE._options.cluster = false;
this.map.removeSource(id);
this.map.addSource(id, SOURCE._options);
糟糕,这不起作用,现在我得到:
Source "test" cannot be removed while layer "test-outer" is using it.
更新
我能够启用/禁用集群感谢@Steve Bennett
setCluster(isVisable, clusterRadius = 10) {
const style = this.map.getStyle()
style.sources.test.cluster = isVisable;
if(isVisable) {
style.sources.test.clusterRadius = clusterRadius;
}
this.map.setStyle(style)
}
更改没有特定方法的属性的一般方法是:
const style = map.getStyle()
style.sources.X.Y = Z;
map.setStyle(style)
Mapbox GL JS 将执行差异,然后进行您需要的更改。