#1 Fri 04 May 2012 13:21
- rboussant
- Juste Inscrit !
- Date d'inscription: 20 Apr 2012
- Messages: 4
Zoom sur un extent de features
Bonjour,
Je travaille sur OpenLayers en JavaScript et je suis confronté à un problème. J'ai la possibilité de dessiner sur une même couche des features de couleur différente que je peux trier grâce à une liste déroulante (j'applique un filter pour cela).
Lorsque je sélectionne une couleur dans ma liste déroulante, j'aimerai pouvoir zoomer automatiquement sur l'extent de toutes les features de la couleur sélectionnée.
Le problème est que je fais un refresh de toutes mes couches pour pouvoir appliquer le filtre (layer.refresh({force:true}) et que le code javascript continue de s'exécuter alors pour calculer les extents alors que le refresh n'est pas encore terminé.
Je ne sais pas si j'ai été bien clair mais en tout cas, si vous savez comment on peut récupérer l'état du refresh des couches, cela m'aiderait beaucoup !
Hors ligne
#2 Sat 05 May 2012 11:54
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: Zoom sur un extent de features
Bonjour,
je n'ai pas la solution, mais je cherche déjà à cerner ce que tu souhaites.
Tu choisis une couleur dans la liste déroulante.
Cela applique le filtre qui colorise les features correspondant au choix de ta liste déroulante. Suite à cela, tu fais un layer.refresh.
Tu voudrais avoir un callback sur la terminaison du layer.refresh.
Dans ce callback, tu voudrais déclencher un zoom sur les features de la couleur sélectionnée.
C'est bien çà ?
Tu sais zoomer sur des features en particulier ? zoomToExtent()
avoir un callback sur la terminaison du layer.refresh ? là, je me demande si je n'avais pas cherché cela, sans succès.
Dernière modification par sigdu80 (Sat 05 May 2012 11:54)
Hors ligne
#3 Wed 09 May 2012 08:59
- rboussant
- Juste Inscrit !
- Date d'inscription: 20 Apr 2012
- Messages: 4
Re: Zoom sur un extent de features
Bonjour,
C'est bien ça.
Du coup, le code est censé créer le filtre, l'appliquer sur les différentes couches, rafraichir les couches (seules les features de la couleur sélectionnée doivent être affichées), pour enfin faire un extent sur les features affichées.
Le problème étant que le serveur qui stocke mon fond de carte est situé à l'autre bout de la France et le réseau n'est pas très rapide.
L'allé/retour entre le poste client et le serveur pour rafraichir les couches mettant du temps, le code javascript continue à s'exécuter et le calcul des extents est déjà lancé alors que que le refresh n'est pas terminé. Du coup, ça m'affiche l'extent des features qui étaient affichées avant que j'applique le filtre.
Je ne sais pas si j'ai été clair, mais en résumé, je veux juste pouvoir lancer le calcul de mes extens seulement une fois que mon layer.refresh({force:true}); est terminé.
Merci !
Hors ligne
#4 Wed 09 May 2012 10:44
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: Zoom sur un extent de features
Bonjour,
oui, tu cherches à avoir un callback déclenché sur la fin de chargement d'un layer.
Dans l'API d'OpenLayers, je n'arrive pas à trouver la méthode refresh de layer.
Peux-tu la mettre en lien ici si tu la retrouves ?
Hors ligne
#5 Wed 09 May 2012 10:47
- rboussant
- Juste Inscrit !
- Date d'inscription: 20 Apr 2012
- Messages: 4
Re: Zoom sur un extent de features
Je mettrai une solution en ligne dès que je la trouve !
Hors ligne
#6 Wed 09 May 2012 11:09
- sigdu80
- Participant actif
- Date d'inscription: 2 Sep 2010
- Messages: 112
Re: Zoom sur un extent de features
On parle bien d'un lien sur la doc de la méthode refresh de Layer ?
Dès que tu trouves, oui, met là.
Hors ligne