2009-04-06 14 views
5

Me parece que debería ser capaz de hacer lo siguiente para detectar un evento click en una línea en un mapa de Google:¿Cómo puedo detectar un evento de clic en una superposición de mapas de Google Polilínea?

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

El api reference dice que esto está disponible en la versión 2.88, que fue lanzado en 2007 (!?), así que estoy asumiendo que es lo que estoy usando, pero no sé cómo confirmar eso.

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

Tengo un montón de código de detección de clics en los marcadores que funciona bien, al hacer clic en líneas sería muy bueno, puede alguien me ilumine?

Respuesta

2

que acabo de hacer una prueba rápida y el siguiente código trabajaron 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 manera de saber qué versión de Google Maps que se tiene es que mirar el v = parámetro de los mapas de Google src url tiene

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

En este caso tengo "v = 2", que significa que estoy usando la última versión estable 2, que apoya polilíneas se puede hacer clic (a fecha 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 un lanzamiento específico

+0

Ok, gracias por la información sobre la versión, pero todavía no veo cómo se supone que debes saber cuál es la "última versión estable" ... A .version o .getVersion() en el objeto GMap2 no se extraviaría. – Tom

+0

No tengo idea por qué, pero hoy cuando estoy probando en Mozilla está funcionando (código de prueba nuevo, por lo que debe haber habido una diferencia sutil en alguna parte ...), pero no hubo suerte en Opera. Saludos por tu ayuda. – Tom

+0

Este es el lugar más cercano que encontré donde puede averiguar qué v = 2 y v = 2.x son iguales a http://groups.google.com/group/Google-Maps-API/web/api- version-changes? pli = 1 – howardr

1

¡gracias por esto!

  1. muchos de los ejemplos clic GMarker tienen la GEvent ANTES de la addListener(), que no funciona He encontrado. invertir el orden lo hace funcionar.

  2. puede encontrar su versión real con alerta (G_API_VERSION);

utilizando la URL stnadard src anteriormente, mi es: // == G_API_VERSION 208a

gracias de nuevo!

0

GPolylines se pueden hacer se puede hacer clic mediante la adición de un evento de clic a ellos como con otros objetos (código tomado de 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 se debe tener en cuenta que después de que se ha producido el evento GPolyline, se eleva un evento click en el mismo mapa en el mismo lugar. 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. Se trata de un error conocido por Google y están trabajando para solucionarlo.

5

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

por ejemplo,

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

Para más detalles, ver el events api

0

Tenga en cuenta que parece no ser posible tener eventos de clic dentro símbolos que forman parte de una polilínea. Tampoco heredan los eventos de clic que están adjuntos al Polyline. Más información aquí: Google Maps: clickable polyline icon

Cuestiones relacionadas