Question

Je ne parviens pas à optimiser les plans de type Google. Cela fonctionne bien pour des centaines de points, mais lorsqu'il s'agit de quantités plus importantes, des milliers, cela devient flou et lent. Aussi discret, cela a l'air bizarre.

Je voudrais savoir comment optimiser l'algorithme de dessin afin de dessiner moins de place, de sorte que le résultat soit comme s'il était affiché dans Google Maps.

Toutefois, je trace également des liens entre des lieux et je ne peux pas optimiser cela.

S'il vous plaît, publiez tout ce que vous pouvez penser, je dois terminer et l'envoyer demain.

Voici à quoi cela ressemble:

zoomé a effectué un zoom arrière

Était-ce utile?

La solution

Je pense que je serais tenté de ne pas tracer de lignes plus courtes qu'un seuil (et je parle de la fenêtre d'affichage plutôt que des termes de distance absolue). Cela signifie que lorsque la carte est réduite, vous aurez moins de choses à dessiner, la carte semblera moins occupée et, lorsque la carte sera agrandie, les lignes entre ces points proches deviendront visibles. Edit: en fait, en y réfléchissant un peu plus, je pense que je n’appliquerais cette restriction de longueur que s’il y a un grand nombre de lignes à l’écran - ou que le seuil de longueur soit fonction du nombre de lignes à l’écran.

Je pense que je serais également tenté de ne pas tracer de lignes partant de points qui sont hors écran (hors de la fenêtre d'affichage) ou, du moins, assez éloignés de l'écran (à un seuil du centre de la fenêtre d'affichage). Je suggérerais d'essayer ce changement d'abord.

Ces changements peuvent donner l’impression de cacher des informations (et ils le feront) mais, dans l’état actuel, la carte est tellement occupée que les informations présentées sont pratiquement inutiles.

Autres conseils

Voici deux idées:

  1. Chaque objet dessiné sur une carte a une valeur supplémentaire dans la base de données, "Niveau de zoom". Lorsque vous effectuez un zoom avant, des éléments supplémentaires sont affichés en fonction de cette valeur.

  2. Une autre solution consiste à utiliser le regroupement. Si les éléments commencent à se chevaucher, affichez un point avec [10 éléments]. Affichez uniquement les éléments situés en dessous lorsque vous effectuez un zoom avant.

quelques astuces:

  1. région de clip, pour dessiner des points uniquement dans la région de clip
  2. vous pouvez vérifier le projet SIG opensource et voir comment il optimise le dessin.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top