2009-11-11 17 views
1

J'ai lu des messages similaires, mais je n'ai toujours pas trouvé de solution pour moi-même. Fondamentalement, j'ai un tableau avec les pays + villes en PHP et j'ai besoin de les montrer sur la carte avec des marqueurs. Voici mon code:Géocodage des noms de villes à leurs coordonnées dans une boucle

function showAddress(markers) { 

    var address = "<?php echo $Fcity[$j], " , ", $Fcountry[$j]?>"; 
    if (geocoder) { 
     geocoder.getLatLng(address, function(point) { 
      if (!point) { 
       alert(address + " not found"); 
      } else { 

      var marker = new GMarker(point); 
      map.addOverlay(marker); 
      markers[i] = marker;   
       marker.openInfoWindowHtml(address); 

      } 
      } 
     ); 
     } 
    } 

Tout semble fonctionner si je géocodage un endroit, mais je ne peux pas le mettre dans une boucle pour traiter tous.

for (var i = 0; i < markers.length; i++) { 
      showAddress(markers[i]); 
     } 
+0

Euh, est-ce que les gens font vraiment ça? Entrelacer PHP et JavaScript? C'est vraiment compliqué ... Je suggérerais d'assigner PHP à des variables Javascript quelque part, et ensuite de faire de la logique sur les variables Javascript. Ce code va être difficile à déboguer. –

Répondre

0

Dans votre fonction showAddress, vous référencez les marqueurs [i].

Cependant, vous ne transmettez pas i ... cette variable ne fait pas partie de la portée de la fonction. Donc, vous ne itérez pas et vous ajoutez, vous ajoutez des variables encore et encore à un endroit inexistant dans le tableau.

Vous devez soit transmettre i ou ne pas encapsuler showAddress dans une fonction.

Que diriez-vous de rendre la fonction showAddresses et mettre la boucle dans la fonction.

+0

J'ai essayé cela, mais il n'a pas aidé, même si mis juste un nombre dans "i <" fonction showAddress (adresse) { pour ($ i = 0; $ i <" "; $ i ++) { \t var address =" "; \t si (géocodage) { geocoder.getLatLng (adresse, fonction (point) { si (point) { alerte (adresse + "not found")! } else { map.addOverlay (nouveau GMarker (point) marqueur.openInfoWindowHtml (adresse); } } } ); } } – Vladimir