Je souhaite placer des marqueurs sur une carte. La source est une requête json, qui renvoie des villes.Rappels sur les rappels
J'ai une fonction (sencha) qui retourne les enregistrements (asynchrone) et une fonction (google maps api) qui renvoie le lng, lat pour des villes spécifiques (asynchrone) et une méthode (google maps), qui met marqueurs sur la carte.
Le résultat devrait être un marqueur sur la carte à l'emplacement calculé par google avec une légende récupérée de l'enregistrement.
records de charge
offers = App.stores.offers.load({
callback: function(records, operation, success){...}
})
get emplacement
geocoder = new google.maps.Geocoder();
geocoder.geocode(
{'address': adress},
function(results, status) {...}
}
et le marqueur mis
marker = new google.maps.Marker({
map: map,
position: loc,
title: text
});
Ce que je wan't à faire est, charger l'enregistrement, boucle sur chaque enregistrement , renseignez-vous sur l'emplacement de la ville et placez un marqueur.
synchrone je ferais:
records = App.stores.offers.load();
for (var i=0; i < records.length; i++) {
setMarker(map, getLocation(records[i].data["city"]), cords[i].data["text"]);
}
Quelle est la bonne façon de le mettre en même temps que les fonctions asynchrones?
En fait, ce fut ma première supposition aussi, mais si je dois le texte à partir des dossiers [i] .text pour définir le titre des marqueurs, cela ne fonctionnera pas .. – Beffa
vous n'étiez pas très clair sur ce dont vous avez besoin, je vais essayer de comprendre sth – slawekwin
Pourquoi les résultats devraient [i] stocker le texte? Parce que c'est "i" asynchrone est dans le rappel de "geocode" pas ce que vous attendez, c'est probablement records.length, parce que la boucle est (beaucoup) plus rapide que d'obtenir la réponse de google back. – Beffa