Suite

Comment chronométrer les appels de fonction dans OpenLayers ?


Nous avons une application existante qui a une fonction qui enveloppe le constructeur OpenLayers.Layer.Vector, qui obtient ses informations de couche à partir d'une source KML via http. Une fois cette fonction terminée, j'ai besoin d'exécuter une autre fonction qui lira certaines des données de couches à partir de l'objet carte.

Normalement, en JavaScript, j'utiliserais bien sûr un rappel lors de l'exécution d'un appel AJAX distant comme celui-ci. Mais dans ce cas - peut-être parce que je suis encore assez novice en JavaScript - je ne sais pas comment retarder l'exécution de ma fonction jusqu'à ce que le constructeur Vector soit terminé. Il ne semble pas y avoir de possibilité de passer un rappel au constructeur OpenLayers.Layer.Vector. Aucune suggestion? Merci.

[Addenda]

Comment ajouter l'écouteur à la couche avant le chargement du KML ?

var newLay = new OpenLayers.Layer.Vector(name, { displayInLayerSwitcher : true, visibilité : visible, styleMap : MapLayers.styleMaps.polygonMap, stratégies : [new OpenLayers.Strategy.Fixed()], protocole : new OpenLayers.Protocol.HTTP ({ url : url, format : new OpenLayers.Format.KML({ maxDepth : 2, extractAttributes : true, extractStyles : useStyles }) }) }); function loadEndListener() { alert('chargement terminé); } var events = new OpenLayers.Events(newLay); events.on({"loadend": loadEndListener});

Vous pouvez utiliser l'enregistrement d'événement charge sur ta couche. Plus sur:

http://dev.openlayers.org/docs/files/OpenLayers/Events-js.html#OpenLayers.Events.on

Tu devrais appeler ça comme ça :

newLay.events.on({"loadend":loadEndListener});

Je l'ai fait il y a longtemps, mais cela devrait probablement fonctionner. Sur un autre site j'ai trouvé que ça devrait être tuiles chargées auditeur, mais je ne le vérifie pas.

Je suis désolé que si tard, mais j'ai un libre.


Décidé de renflouer après avoir trouvé trop de personnes ayant des problèmes avec le fonctionnement de la charge. Je vais simplement émettre un autre appel au serveur plutôt que d'essayer de savoir quand ma couche kml a fini de se charger. Merci.