2009-04-06 6 views
5

Il me semble que je devrais pouvoir faire ce qui suit pour détecter un événement de clic sur une ligne sur une carte Google:Comment détecter un événement de clic sur une superposition de Google Maps PolyLine?

var line = new GPolyline(...); 
map.addOverlay(line); 
GEvent.addListener(line, "click", function(latlng){ alert("clicked"); }); 

Le api reference dit ceci est disponible dans la version 2.88, qui a été publié en 2007 (!?), donc je suppose que c'est ce que j'utilise, mais je ne sais pas comment le confirmer.

J'ai également essayé de définir explicitement l'option {clickable:true} (elle est supposée être la valeur par défaut). J'ai testé FireFox 3 et Opera 9.6, donc je doute que ce soit spécifique au navigateur. J'utilise aussi jQuery sur la page. J'ai beaucoup de code de détection de clics sur les marqueurs qui fonctionne bien, en cliquant sur les lignes serait vraiment agréable, quelqu'un peut-il m'éclairer?

Répondre

2

Je viens de faire un test rapide et le code suivant travaillé sur ma page de test:

var polyline = new GPolyline([ 
    new GLatLng(37.4419, -122.1419), 
    new GLatLng(37.4519, -122.1519) 
], "#ff0000", 10); 
map.addOverlay(polyline); 

GEvent.addListener(polyline, 'click', function() { 
    alert('you clicked polyline'); 
}); 

La façon de dire quelle version de google vous cartes avez est de regarder le v = paramètre des google maps src url vous

http://maps.google.com/maps?file=api&v=2&key=MY_API_KEY

Dans ce cas, j'ai « v = 2 », cela signifie que je suis en utilisant la dernière stable 2 version, qui prend en charge les polylignes cliquables (comme d'aujourd'hui 2.101 est la version la plus récente). "v = 2.x" signifie que vous utilisez une libération de bord. Et tout "v = 2.5" où le rien après la période (.) Est un numéro se réfère à une version spécifique

+0

Ok, merci pour les informations sur la version, mais je ne vois toujours pas comment vous êtes censé savoir ce qu'est la "dernière version stable" ... A .version ou .getVersion() sur l'objet GMap2 ne s'égarerait pas. – Tom

+0

Aucune idée pourquoi, mais aujourd'hui, quand je suis en train de tester dans Mozilla, ça marche (nouveau code de test, donc il doit y avoir une différence subtile quelque part ...), mais pas de chance dans Opera. Salutations pour votre aide. – Tom

+0

C'est l'endroit le plus proche que j'ai trouvé où vous pouvez trouver ce que v = 2 et v = 2.x sont égaux à http://groups.google.com/group/Google-Maps-API/web/api- version-changements? pli = 1 – howardr

1

merci pour cela!

  1. beaucoup des exemples de clic GMarker ont le GEvent AVANT le addListener(), qui ne fonctionne pas, je trouve. inverser l'ordre le fait fonctionner.

  2. vous pouvez trouver votre vraie version avec l'alerte (G_API_VERSION);

En utilisant l'URL stnadard src ci-dessus, est-mes: // G_API_VERSION == 208a

merci encore!

0

GPolylines peuvent être cliquable en ajoutant un événement de clic pour eux comme avec d'autres objets (code tiré de la réponse précédente):

var polyline = new GPolyline([ 
    new GLatLng(37.4419, -122.1419), 
    new GLatLng(37.4519, -122.1519) 
], "#ff0000", 10); 
map.addOverlay(polyline); 

GEvent.addListener(polyline, 'click', function() { 
    alert('you clicked polyline'); 
}); 

Cependant, vous devez également savoir que après l'événement GPolyline est élevé, un événement click sur la carte elle-même au même endroit est déclenché. En outre, il existe actuellement un bug (en date d'avril 2010) dans cet événement particulier, car les paramètres d'événement ne sont pas correctement transmis à l'événement click de carte. Ceci est un bug connu par Google et ils travaillent pour le réparer.

5

Mise à jour: dans la version 3 de l'API, vous souhaitez utiliser google.maps.event.addListener(object, event, function);

par exemple

google.maps.event.addListener(polyline, 'click', function() { 
    alert('you clicked polyline'); 
    }); 

Pour plus de détails, voir le events api

0

S'il vous plaît noter qu'il semble ne pas être possible d'avoir des événements de clic dans Symboles qui sont sur une polyligne. Ils n'héritent pas non plus des événements click attachés au Polyline lui-même. Plus d'informations ici: Google Maps: clickable polyline icon

Questions connexes