IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Infobulles et liens [Google Maps]


Sujet :

APIs Google

  1. #1
    Membre à l'essai Avatar de clemissile
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut Infobulles et liens
    Salut à tous,

    Dans le cadre d'un cours, je dois créer une application qui sert à afficher des parcours de randonnée (pédestre, VTT ou à cheval) sur une carte. Nous est fourni un fichier XML, et nous devons l'utiliser pour en extraire les informations utiles à la carte. J'ai donc affiché sur cette carte des markers et infobulles. Ces dernières contiennent une rapide description et un lien "Voir les détails".

    Au clic sur ce lien, les détails sont censés s'afficher dans une section à droite de la carte. J'ai donc essayé d'utiliser une fonction getInfos et d'utiliser l'id de chacun des liens pour récupérer les détails dans le fichier XML. Cependant, quand je clique sur un lien et que je recherche à afficher this.id (pour commencer) cela me note "undefined".

    Et là, je ne comprends pas car j'ai bien défini un id différent a chacun de mes liens. Voici mon code JS :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    var map;
     
    var initialize = function() {
      map = new google.maps.Map(document.getElementById('mapSection'), {
      center: {lat: 45.993, lng: 2.281},
      zoom: 5,
      mapTypeId: google.maps.MapTypeId.HYBRID
      });
     
      var infoBulle = new google.maps.InfoWindow();
     
      setMarkers(map, infoBulle);
     
    }
     
    // Fonction qui determine la position des Markers et le contenu de l'infobulle associée         
    function setMarkers(map, infoBulle) {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', 'data/randos.xml', true);
      xhr.onload = function() {
       var doc = xhr.responseXML;
       var element = doc.getElementsByTagName('rando:depart'); // On recupère toutes les coordonnées
       var title = doc.getElementsByTagName('dc:title'); // On recupère tout les titres
        for (var i = 1; i <= element.length; i++) {
          var pos = element[i-1].getElementsByTagName('gpx:trkpt');
          var lat = pos[0].getAttribute("gpx:lat"); // On récupère la latitude
          var lon = pos[0].getAttribute("gpx:lon"); // Et la longitude
     
          var point = new google.maps.LatLng(parseFloat(lat), parseFloat(lon));
     
          var content = '<h3>'+ title[i].firstChild.data +'</h3>' +
                        '<p>' + doc.getElementsByTagName('dc:description')[i].firstChild.data + '</p>' +
                        '<a href="#" onclick="getInfos()" id="'+ i +'">Voir les détails</a>';
     
          var marker = createMarker(point, content, infoBulle);
       };
      };
     
      xhr.send(null);
    };
     
    // Fonction qui créé les Markers et les infoBulles associées     
    function createMarker(point, content, infoBulle) {
      var marker = new google.maps.Marker({
        position: point,
        map: map,
        draggable: false,
        animation: google.maps.Animation.DROP
      });
     
      google.maps.event.addListener(marker, 'click', function() {
        infoBulle.setContent(content);
        infoBulle.open(map, marker);
      });
     
    };
     
    function getInfos() {
      document.getElementById('details').innerHTML += this.id;
    }
     
    window.onload = initialize;
    J'espère avoir été clair et que quelqu'un à une solution à mon problème, ou au moins juste une piste.

    Cordialement,
    Clemissile

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 120
    Points : 44 917
    Points
    44 917
    Par défaut
    Bonjour,
    fait un console.log( this) pour te rendre compte que le this n'est pas celui que tu crois !

    Passe en paramètre ton objet cliqué onclick="getInfos(this)" que tu récupères dans la fonction

  3. #3
    Membre à l'essai Avatar de clemissile
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Salut,

    Effectivement le this n'était pas celui que je pensais!
    C'était finalement tout bête, merci beaucoup!

    Cordialement,
    Clemissile

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Infobulle en haut du lien
    Par afrodje dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 18/11/2008, 16h00
  2. infobulle sur un lien
    Par eveilside dans le forum Flash
    Réponses: 1
    Dernier message: 09/10/2007, 08h44
  3. Une infobulle sans javascript (si possible) et sans lien
    Par Rakken dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/02/2007, 12h13
  4. Infobulle imagée au survol d'un lien
    Par magikman dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/01/2007, 14h39
  5. [Java Script] Lien avec infobulle...
    Par greg1386 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/02/2006, 21h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo