D'après votre expérience, combien d'entités ponctuelles peuvent être ajoutées à une couche vectorielle OpenLayers (nouvelle OpenLayers.Layer.Vector ("Point Layer")) avant qu'elle ne devienne anormalement lente?
Mon cas d'utilisation est d'afficher des points à partir d'une table de base de données. L'utilisateur peut décider de la période à visualiser. Par conséquent, le résultat peut aller de très peu à potentiellement 100 000 points. Je voudrais introduire une limite raisonnable et avertir l'utilisateur si sa requête retournerait plus de fonctionnalités.
openlayers
web-mapping
obscur
la source
la source
Réponses:
Je n'ai pas de réponse définitive pour vous mais vous j'ai mis en place une page où vous pouvez jouer avec différents nombres de points sur une carte OL: http://derekswingley.com/lab/olpts/
la source
Si l'affichage ralentit en raison du nombre de fonctions trop élevé, cela signifie que les données à afficher ne sont pas adaptées au niveau de zoom. Habituellement, lorsque la densité des fonctionnalités devient trop élevée, l'affichage ne peut plus être lisible (voir cet exemple ). Même s'il n'y avait pas de limite de traitement et que tous les dispositifs d'affichage pouvaient afficher 1000000000000 de fonctionnalités en 0,001s sur un petit écran, la visualisation resterait impossible.
La loi radix du Töpfer stipule que la densité des caractéristiques doit rester sous un seuil constant quel que soit le niveau de zoom. Un moyen de résoudre ce problème et d'adapter les données à l'échelle de visualisation consiste à les transformer à l'aide d' opérations de généralisation comme celle-ci ou celle-ci .
la source
Je ne pense pas qu'il soit impossible de donner une réponse solide à cette question. Les points / polygones de rendu dépendent entièrement du navigateur et du matériel (CPU et mémoire), pas avec OpenLayers. J'ai eu un problème avec Openlayers et IE6 pour l'un des rendus Lake (Polygon). mais, il s'est bien chargé dans Firefox. Et la meilleure option serait de surveiller la mémoire et l'utilisation du processeur avec Chrome ou certains outils seraient mieux.
la source
Comme d'autres, je n'ai pas de réponse concernant cette question, mais l'application d'une stratégie BBox pourrait vous aider à conserver uniquement les données nécessaires car elle n'affiche que les fonctionnalités situées dans la zone de délimitation donnée.
la source
Dans OpenLayers 6, il existe un rendu de point WebGL qui devrait vous permettre de rendre des centaines de milliers de fonctionnalités, avec un filtrage basé sur le temps. Vous voudrez peut-être consulter la dernière version de l'atelier officiel à https://openlayers.org/workshop/en/webgl/ .
Avec OpenLayers 2, que je ne recommande vraiment plus d'utiliser, le maximum de fréquence d'images acceptable ne sera que de quelques centaines de fonctionnalités.
la source
Je suis tombé sur un cas d'utilisation similaire, je ne sais pas s'il conviendra aux besoins mentionnés ci-dessus, mais
Clustering
dans OL 5, c'est ce que j'ai adopté.Le regroupement, comme les mots le suggèrent, prend un groupe de points et les fusionne en un seul point, par exemple, vous avez 100 points dans une ville particulière, tous les points seront visibles comme un point à partir d'un zoom de disons,
4
mais comme des points individuels à partir d'un zoom de let dites10
donc que ce que vous pouvez faire, c'est quand le zoom est que4
vous pouvez joindre ces points en un seul, ce que cela fait, cela permet de réduire le nombre de points à rendre dans une zone particulière.En d'autres termes, disons que vous avez 10000 points à rendre sur la carte et qu'ils sont assez proches les uns des autres, vous pouvez donc en créer des grappes et réduire le rendu et lorsque l'utilisateur effectue un zoom avant, vous continuez à casser les grappes. Cela garantira que vous avez moins de rendu et de meilleures performances.
Des performances satisfaisantes. Lien vers des exemples de clustering sur Openlayers
la source