2012-05-07 8 views
0

J'ai une carte, avec une barre latérale div à côté. J'essaye de faire en sorte que chaque marqueur sur la carte ait un lien hypertexte correspondant dans la barre latérale, et quand on clique dessus, la boîte d'information pour ce marqueur apparaît.Lien hypertexte pour ouvrir l'infowindow du marqueur sur Google Map

function linkClick(){ 
    google.maps.event.trigger(gmarkers[cpid], "click"); 
} 

content += '<a href="javascript:linkClick(' + cpid + ')">'+tmpName+"</a><br>"; 
$("#cplist").html(content); 

DCIP est un identifiant unique pour chaque point sur la carte, une valeur qui est stockée dans la base de données avec le reste de l'information pour les marqueurs. J'ai mes marqueurs sur la carte, et mes liens dans la barre latérale, mais je ne suis pas sûr de savoir comment faire la connexion entre deux. J'ai créé la fonction « LINKCliquez » pour essayer de réaliser cela, mais je viens d'obtenir l'erreur:

ReferenceError: Can't find variable: linkClick 

Actuellement tout le code ci-dessus est dans la boucle qui trace les repères sur la carte. Je pense que j'ai inclus assez de détails/code.

Voici un exemple de ce que je veux réaliser http://www.geocodezip.com/v3_MW_example_categories.html

Répondre

0

J'ai fait quelque chose de similaire une fois, mais au lieu d'utiliser un élément a i utilisé un bouton et comme javascript pur en cas OnClick je placerai mon gestionnaire d'événements et cela fonctionne, donc dans votre cas j'ai essayé de gérer l'événement comme celui-ci

<a onClick=linkClick(' + cpid + ')">'+tmpName+"</a> 
0

pour la fonction que vous ne passe pas une variable, c'est pourquoi il donne ReferenceError: vous ne trouvez pas la variable: LINKCliquez

function linkClick(cpid){ 
    google.maps.event.trigger(gmarkers[cpid], "click"); 
} 

content += <a onClick=linkClick(' + cpid + ')">'+tmpName+"</a><br>"; 
$("#cplist").html(content); 
+0

Même après avoir changé le code comme ci-dessus, j'ai toujours la même erreur malheureusement. – paulyay

+0

pouvez-vous le déboguer .. –

2

Je suggère de changer votre approche - plutôt que d'essayer de pousser l'événement click, allez directement à la InfoWindow et appelez open. Quelque part ailleurs dans votre code, vous avez un écouteur d'événement click pour chaque marqueur qui ouvre un InfoWindow; alors conservez les références à vos instances InfoWindow et ouvrez-les, tout comme dans le marqueur click, lorsque la fonction onlick associée au lien est appelée.

Ou, si vous suivez une stratégie commune et de travailler avec un seul InfoWindow global, il suffit d'écrire une fonction qui accepte la cpid, place le contenu nécessaire dans le InfoWindow, définit la position correcte, puis appelle InfoWindow.open(map).

Donc, si cela est votre code écouteur d'événement:

google.maps.event.addListener(marker, 'click', function() { 
    infowindow.setContent(tmpName+" is "+tmpDist+"km away from you."); 
    infowindow.open(map, this); 
}); 

Ajouter une nouvelle fonction:

function openInfoWindow(cpidAndWhateverElseParam) { 
    infowindow.setContent(tmpName+" is "+tmpDist+"km away from you."); 
    infowindow.open(map, this); 
} 

Et changer votre code de lien à:

content += '<a href="javascript:openInfoWindow(' + cpidAndWhateverElseParam + 
    ')">'+tmpName+"</a><br>"; 
+0

Je suis encore un peu confus ..Dans ma boucle pour tracer des marqueurs/remplir la barre latérale avec du contenu j'ai ce code pour les fenêtres d'information 'google.maps.event.addListener (marqueur, 'click', function() { infowindow.setContent (tmpName +" est "+ tmpDist +" km loin de vous. "); infowindow.open (map, this); });' Suggérez-vous que j'ai du code dans cet auditeur pour dire quand le lien est cliqué ouvrir la fenêtre d'information? – paulyay

+0

Non, je dis que lorsque le lien est cliqué, avoir une fonction qui contient essentiellement le même code (que vous avez dans l'écouteur d'événement) et appelez la fonction qui contient le code de la 'onClick'. –

+0

J'ai ajouté plus de détails à ma réponse pour essayer de clarifier. Excusez-moi si ma première réponse était brève. –

Questions connexes