Dans OpenLayers, j'ai une stratégie de cluster pour limiter le nombre de fonctionnalités / points que l'utilisateur voit sur la carte. Lorsque l'utilisateur est complètement zoomé, je souhaite désactiver la stratégie de clustering afin que toutes les fonctionnalités soient affichées. Pour ce faire, j'attrape l'événement de zoom comme celui-ci:
map.events.register("zoomend", this, function (e) { if (map.getZoom() === this.mapMaxZoom) { // Don't cluster at this level. No matter what. this.vector.strategies[0].threshold = 1000; console.log("setting the clustering strategy to 1000"); } });
9 Réponses :
Vous devez appeler redraw () code> méthode sur la couche non mappe -
this.vector.redraw () code> p> p>
Merci, mais j'ai essayé cela aussi, et cela n'a pas fonctionné (bien que je pense que cela devrait!)
Je ne suis pas sûr, mais vous pouvez également essayer d'appeler la méthode de rafraîchissement () sur la couche. J'essaierais également d'appeler la méthode de désactivation () sur la stratégie plutôt que sur la définition de la Tholdhold élevée - ceci.vector.stractions [0] .deactiver (). Vous pouvez également essayer d'écouter «Movestart» de la carte au lieu de «Zoomend». Je pense que les fonctionnalités ne sont pas encore dessinées sur Movestart, vous avez donc une meilleure chance d'empêcher les choses de se produire.
vectorlayer.refresh ({Force: true}); code>
Essayez ceci. P>
J'ai trouvé que dans Openlayers 3, vous devez appeler Actualiser sur l'objet source, pas le calque.
J'ai trouvé la réponse dans ce post. cluster OpenLayers Recalculez P>
Fondamentalement, je dois définir la stratégie de cluster, puis "recluster". Fonctionne un régal. P>
J'ai résolu le même problème grâce à ce fichier: centrécluster.js, que j'inclus après