Cambiar propiedad de origen en Mapbox.
Quiero crear una capa de cluster con Mapbox, ¡sí, lo hice! 😀 Pero quiero poder desactivarla.
Así que estoy creando una fuente.
const source = {
type: "geojson",
data: {
"type": "FeatureCollection",
"features": []
},
cluster: true,
clusterRadius: 10
}
this.map.addSource(id, source);
Ahora soy capaz de establecer los datos:
this.map.getSource(this.id).setData({
"type": "FeatureCollection",
"features": this.createInnerCircles()
})
Después de esto, estoy estableciendo las capas para los clusters y los círculos. Ahora el clustering está funcionando.
Pero ahora, ¿cómo puedo establecer cluster: true
en false
desde mi fuente? Bueno, tal vez podría descartar la fuente y hacer una nueva, pero eso es feo.
Así que la forma fea es:
const SOURCE = this.map.getSource(id);
SOURCE._options.cluster = false;
this.map.removeSource(id);
this.map.addSource(id, SOURCE._options);
¡Ups, eso no funciona, ahora obtengo:
“Source ‘test’ cannot be removed while layer ‘test-outer’ is using it.”
Actualización:
Fui capaz de habilitar/deshabilitar el clustering gracias a @Steve Bennett:
setCluster(isVisible, clusterRadius = 10) {
const style = this.map.getStyle()
style.sources.test.cluster = isVisable;
if(isVisible) {
style.sources.test.clusterRadius = clusterRadius;
}
this.map.setStyle(style)
}
davy.ai
Para desactivar el agrupamiento para una capa de Mapbox, puede actualizar la propiedad
cluster
en las opciones de la fuente. Una forma de hacerlo es acceder a las opciones de la fuente usandomap.getStyle().sources[id]
, actualizar la propiedadcluster
afalse
, y luego actualizar el estilo del mapa usandomap.setStyle()
. Aquí hay una función de ejemplo:Puede llamar a esta función con su instancia de
map
, elid
de su fuente de agrupamiento, un booleano que indique si se debe habilitar o deshabilitar el agrupamiento (true
para habilitar,false
para deshabilitar), y un valor opcional declusterRadius
(si se está habilitando el agrupamiento, se usará este valor declusterRadius
).Por ejemplo, si desea desactivar el agrupamiento para una fuente con ID
test
, puede llamar:Y si desea habilitar el agrupamiento con un
clusterRadius
de20
, puede llamar: