Pages: 1
- Sujet précédent - [OpenLayers] capturer l'événement fin de changement de taille fenêtre - Sujet suivant
#1 Tue 06 December 2011 12:28
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
[OpenLayers] capturer l'événement fin de changement de taille fenêtre
Bonjour
je fais un affichage plein écran et je constate le problème suivant :
au fur et à mesure que la taille de la fenêtre est modifiée en étirant
par exemple celle-ci à la souris, une rafale de requêtes wms
est envoyée ; je souhaiterais déclencher la requête wms uniquement
sur réception de l'événement fin de modification de la taille de la fenêtre
j'ai essayé de partir du code javascript suivant :
Code:
$(window).resize(function() { if(this.resizeTO) clearTimeout(this.resizeTO); this.resizeTO = setTimeout(function() { $(this).trigger('resizeEnd'); }, 500); console.log("resizing") }) $(window).bind('resizeEnd', function() { //do something, window hasn't changed size in 500ms console.log("end of resize") });
au niveau javascript ces événements sont bien interceptés ;
par contre je n'arrive toujours pas à les intercepter au niveau d'OpenLayers
quelqu'un a-t'il une solution ?
merci d'avance
Jean-Marie
Hors ligne
#2 Tue 06 December 2011 13:39
Re: [OpenLayers] capturer l'événement fin de changement de taille fenêtre
Tu devrais jeter un oeil du côté de l'event Listener moveend :
http://les-ejk.cz/skoleni/hslayers-pres … vents.html
Ce lien peut éventuellement t'être également utile.
edit : et ici une page d'exemple http://dev.openlayers.org/releases/Open … vents.html
Dernière modification par simon_g (Tue 06 December 2011 13:42)
Hors ligne
#3 Wed 07 December 2011 18:02
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [OpenLayers] capturer l'événement fin de changement de taille fenêtre
merci pour le lien mais "movend" correspondant à l'événement fin de déplacement de la carte à la souris ;
il ne correspond pas à l'événement fin de changement de taille de la fenêtre
"zoomend" me servira pour un zoom rapide réalisé à la molette
je continue mes recherches
JM
Hors ligne
#4 Tue 13 December 2011 16:07
- badenski
- Juste Inscrit !
- Date d'inscription: 13 Dec 2011
- Messages: 1
Re: [OpenLayers] capturer l'événement fin de changement de taille fenêtre
Pour un problème similaire, j'ai fait ceci :
Une nouvelle classe qui hérite de WMS dans laquelle je redéfinis les méthodes onMapResize() et moveTo(), j'ajoute aussi une variable timerId.
En gros, j'utilise onMapResize qui est appelé par la map à chaque redimensionnement et je place dans une file d'attente la fonction de mise à jour de mon layer au lieu d'un appel direct grace à la fonction javascript setTimeout().
vu qu'on redimensionne de plusieurs pixels (redimensionnement de fenêtre), je vire le dernier chargement de la file d'attente pour en mettre un nouveau de manière à limiter les mises à jour de mon layer.
dernier point, la méthode moveTo est modifiée pour supporter ce nouveau mécanisme.
dans la première méthode (onMapResize), voici ce que je fais :
Code:
onMapResize: function() { if(this.timerId !== false){ window.clearTimeout(this.timerId); } this.timerId = window.setTimeout('OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply', 1000, this, arguments); },
dans la seconde (moveTo) :
Code:
moveTo:function(bounds, zoomChanged, dragging) { if(this.timerId === false){ this.timerId = window.setTimeout('OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply', 10, this, arguments); } ... // le reste est identique à la méthode parente de Grid.js
si ça peut t'aider
Hors ligne
Pages: 1
- Sujet précédent - [OpenLayers] capturer l'événement fin de changement de taille fenêtre - Sujet suivant