Pb code google maps / Affichage de pls points geolocalisés

Consultez la formation Google Maps, News, Images de WebRankInfo / Ranking Metrics

Or3
Nouveau WRInaute
 
Messages: 10
Inscription: Lun Nov 26, 2007 12:52

Pb code google maps / Affichage de pls points geolocalisés

Message le Lun Nov 26, 2007 13:00

Bonjour à tous !

Déjà merci pour ce forum, je suis ravie de découvrir qu'il existe, car google devient si important !

Alors pour ma part je m'attaque un peu aux google maps.
Mon but : faire afficher plusieurs points avec infos (au clic sur le point) d'un fichier xml (que je génère en dynamique de ma base de données) sur 1 google map.
Je veux utiliser le gecoding, c'est-à-dire le faire à partir d'adresses.

Voici mon code javascript :

Code: Tout sélectionner
<script type="text/javascript">
     //<![CDATA[
     var geocoder = null;
   
     function load()
    {
       if (GBrowserIsCompatible())
      {
         var map = new GMap2(document.getElementById("map"));
         map.addControl(new GSmallMapControl());
         map.addControl(new GMapTypeControl());
         //map.setCenter(new GLatLng(48.7, 2.3), 8);
      
       geocoder = new GClientGeocoder();
       if (geocoder)
       {
        var address = "HAUTE-SAVOIE";
        geocoder.getLatLng
        (
           address,
           function(pt)
           {
            if (!pt)
            {
              alert(address + " not found");
            }
            else
            {
               //positionnement de la carte
               map.setCenter(pt, 8);
               
               ///affichage des points du xml
               function creerMarker(point, onglet1, onglet2)
               {
                  var marker = new GMarker(point);
                  var infoTabs = [
                   new GInfoWindowTab("Infos", onglet1),
                   new GInfoWindowTab("Détails", onglet2)
                   ];
                  GEvent.addListener(marker, "click", function() {
                   marker.openInfoWindowTabsHtml(infoTabs);
                   });
                  return marker;
               }
               
               GDownloadUrl("donnees.xml", function(data)
               {
                  var xml = GXml.parse(data);
                  var markers = xml.documentElement.getElementsByTagName("marker");
                  
                  for (var i = 0; i < markers.length; i++)
                  {
                    add = markers[i].getAttribute("adresse");
                    info = markers[i].getAttribute("info");
                   details = markers[i].getAttribute("details");
                  
                    geocoder.getLatLng
                   (
                       add,
                       function(p)
                       {
                         alert(info);
                         marker = creerMarker(p, info, details);
                          map.addOverlay(marker);
                       }
                    );
                   
                  }
               });
            }
           }
         );
        }
 
       }
     }
 
     //]]>
     </script>


et mon code xml :

Code: Tout sélectionner
<?xml version="1.0" encoding="utf-8" ?>
<markers>
   <marker adresse="AIX LES BAINS" info="JuJu city" details="Quelques informations supplémentaires" />
   <marker adresse="RUMILLY" info="Chez moi !" details="Quelques informations supplémentaires" />
   <marker adresse="ANNECY" info="Annecy, le lac, les montagnes" details="Quelques informations supplémentaires" />
   <marker adresse="GENEVE" info="Geneve, capitale de la Suisse" details="Quelques informations supplémentaires" />
</markers>



Les 4 points de mon doc xml s'affiche bien à 4 endroits bien distincts.
Mais le souci est qu'ils ont tous la même "info" et "details", à savoir l'attribut "info" du dernier noeud de mon xml.
Je pense que le problème vient du fait que ma fonction est réecrasée à chaque passage de la boucle et qu'elle est donc établie au dernier noeud...
Comment faire pour résoudre cela ?

Sinon si vous avez des exemples du même type, je suis preneuse !

Merci énormément de votre aide !

Aurélie
Dernière édition par Or3 le Lun Nov 26, 2007 14:25, édité 1 fois.


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Lun Nov 26, 2007 14:12

je mettrais "map.addOverlay(marker);" avant "GEvent.addListener(marker, "click", function() { "

Pour un exemple qui marche avec un fichier XML : http://annuaire.lamogere.fr/carte.html

Or3
Nouveau WRInaute
 
Messages: 10
Inscription: Lun Nov 26, 2007 12:52

Message le Lun Nov 26, 2007 14:20

merci de ton aide ! :o)
Mais malheureusement ce n'est pas çà....
L'exemple est là :
http://www.daniel-guerin.com/test3.php

Comme tu peux le voir, tous mes points on la même info, qui est celle du dernier neud de mon xml
(et je pense que c ma fonction qui s'écrase avec la boucle et prend donc en compte que la derniere valeur)..

L'exemple que tu m'as donné utilise en effet un xml, mais malheuresement pas la géolocalisation.
Je ne veux pas positionner mes points à partit de Longitude et Latitude mais à partir de l'adresse postale....

hummm....
:?

Aurélie


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Lun Nov 26, 2007 15:14

il est beaucoup plus performant de déterminer la lat/long avant avec le géocodeur et de la mettre dans le fichier XML (une seule détermination).
Je pense que l'erreur vient du fait que la déclaration de la fonction creerMarker se trouve dans la fonction load. Il faut la décaler avant ou après.

Or3
Nouveau WRInaute
 
Messages: 10
Inscription: Lun Nov 26, 2007 12:52

Message le Lun Nov 26, 2007 15:45

D'accord avec toi sur la géolocalisation au préalable !
Mais grrrr m'énerve de pas trouver comment faire...le problème ne vient pas de la place de la fonction (je l'ai bougé, pas de changement)
Je sais que l'erreur vient du fait que lorsque creerMarker() est appelé mes variables vallent toutes la valeur du dernier noeud.
et qu'il me faudrait une sorte de propriété valable dans la boucle..
Mais là je touche vraiment plus à du javascript pur et dur....

(soupir)

Merci pour tout en tous cas !

Aurélie


Formation recommandée sur ce thème :

Formation Google Maps, Google News et Google Images : apprenez comment optimiser le référencement de votre site pour la recherche universelle et notamment Google Maps, Google Actualités et Google Images. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités