Pregunta ¿Cómo puedo detectar un evento de clic en una superposición PolyLine de google maps?


Me parece que debería poder hacer lo siguiente para detectar un evento de clic en una línea en un mapa de Google:

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

los api reference dice que esto está disponible en la versión 2.88, que se lanzó en 2007 (!?), así que supongo que eso es lo que estoy usando, pero no sé cómo confirmarlo.

También intenté configurar el {clickable:true} opción explícitamente (se supone que es la predeterminada). He probado en FireFox 3 y Opera 9.6, así que dudo que sea específico del navegador. También estoy usando jQuery en la página.

Tengo muchos códigos detectando clics en marcadores que funcionan bien, hacer clic en las líneas sería realmente agradable, ¿alguien puede aclararme?


5
2018-04-06 10:04


origen


Respuestas:


Acabo de hacer una prueba rápida y el siguiente código trabajó en mi página de prueba:

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 forma de saber qué versión de google maps tienes es mirar el parámetro v = de la url de google maps src que tienes

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

En este caso, tengo "v = 2", eso significa que estoy usando la última versión estable 2, que admite polilíneas seleccionables (a partir de hoy 2.101 es la versión más reciente). "v = 2.x" significa que está utilizando una versión de borde. Y cualquier "v = 2.5" donde el elemento después del período (.) Es un número se refiere a una publicación específica


2
2018-04-07 23:07



Actualización: en la versión 3 de la API, desea usar google.maps.event.addListener(object, event, function);

p.ej.

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

Para más detalles, vea el eventos api


6
2017-11-08 12:38



¡gracias por esto!

  1. muchos de los ejemplos de clics de GMarker tienen el evento GEvent ANTES del addListener (), que no funciona, lo encontré. invertir el orden lo hace funcionar.

  2. puedes encontrar tu versión real con alerta (G_API_VERSION);

Usando la urna stnadard src arriba, mi es: // G_API_VERSION == 208a

¡gracias de nuevo!


1
2018-04-12 21:08



Se puede hacer clic en GPolylines agregando un evento de clic para ellos como con otros objetos (código tomado de la respuesta anterior):

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');
});

Sin embargo, también debe tener en cuenta que después de que se genera el evento GPolyline, se genera un evento de clic en el mapa en la misma ubicación. Además, actualmente hay un error (a partir de abril de 2010) en este evento en particular, ya que los parámetros del evento no se pasan correctamente al evento click del mapa. Este es un error conocido de Google y están trabajando para solucionarlo.


0
2018-04-13 23:10



Tenga en cuenta que parece que no es posible tener eventos de clic dentro de Símbolos que están en una polilínea. Tampoco heredan los eventos de clic que están adjuntos al Polilínea sí mismo. Más información aquí: Google Maps: icono de polilínea clicable


0
2018-05-14 10:37