Bonjour,
J'un problème de timing et ordre dans mes fonctions. Je précise que je travaille avec l'api de google maps, mais que le problème n'est pas lié.
En résumé :
- Je génère avec php un fichier XML contenant mes données (données aléatoires)
- Je lis ce fichier avec JS grace a la commande 'downloadUrl' de l'outil de google (http://gmaps-samples-v3.googlecode.c...nk/xmlparsing/)
- Je précharge mes icones de markers en les ajoutant au DOM dans un div invisible
- Je charge mes markers sur la carte en chargeant une icone perso (préchargée), que je redimenttionne avec un 'new google.maps.MarkerImage(icone, null, null, null, scale)'
- Tout fonctionne très bien.
Voici mon code (abbreggé) :
Le problème est que apparement il n'attend pas que toutes les images soient préchargées avant de placer les markers. De ce fait il ne parvient pas à les redimentionner. En fait il en redimentionne une dizaine, et les suivante sont de taille normale, comme si il n'attendais pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 downloadUrl(searchUrl, function(data) { preloadImg(data); getMarkers(data); }); function preloadImg(data){ markersXml = data.documentElement.getElementsByTagName(\"marker\"); for (var i = 0; i < markersXml.length; i++) { var img = document.createElement('IMG'); img.src = markersXml[i].getAttribute('icon') ; document.getElementById('preloadimages').appendChild(img); } } function getMarkers(data) { markersXml = data.documentElement.getElementsByTagName(\"marker\"); for (var i = 0; i < markersXml.length; i++) { // prépare les markers // assigne l'icone à la bonne taille scale = 0.5 ; icone = new google.maps.MarkerImage(markersXml[i].getAttribute('icon'), null, null, null, scale) ; // attache les markers a la carte } }
Mon problème ne vient pas de google maps, car si dans preloadImg(data); je ne charge qu'une image manuellement, cela fonctionne très bien, elle est bien dimentionnée dans la carte
Donc ma question est de savoir comment je peux etre sur que l'ajout des images dans le DOM est réelment terminé avant de continuer mon code.
J'avais pensé a un settimeout mais cela ne parait pas très pro...
Toute aide est bienvenue.
Merci, Cédric
Partager