google-maps-api-3 - marcadores - marker google maps
haga clic en el agente de escucha de eventos en iconos y etiquetas de mapas con estilo (2)
Me doy cuenta de que esta es una antigua Q, pero esto fue corregido recientemente en Maps API. Ahora puede escuchar eventos de clic en iconos de mapa.
Comenzando con la versión 3.26, debe escuchar el evento "click" en el objeto Map. Si el usuario hace clic en un PDI, se genera un evento IconMouseEvent. Esta clase extiende el Regular MouseEvent y contiene una propiedad llamada placeId. Entonces puede verificar si el objeto del evento ha definido placeId. El campo placeId contiene, por supuesto, un ID de lugar, que puedes utilizar con la API de Places para obtener más información sobre el ícono en el que se hizo clic. Llamar a stop () en el evento en sí evitará que Maps API muestre la ventana de información predeterminada.
Preparé una pequeña demostración que demuestra cómo capturar el evento click y mostrar tu propia ventana de información.
¿Es posible agregar un detector para el evento de clic en los íconos y / o etiquetas que aparecen para los mapas con estilo? Tengo un formulario que permite la entrada de Puntos de interés. Como el estilo de poi muestra iconos y / o etiquetas para muchos candidatos potenciales, y al hacer clic en uno se abre una ventana de información de direcciones, etc., me gustaría capturar esta información de dirección en los campos de mi formulario si el usuario hace clic en uno.
No hay acceso basado en API a los PDI.
Pero hay una posible solución.
Cuando hace clic en un PDI, se abre InfoWindow. Es posible modificar el prototipo de InfoWindow para poder acceder al contenido de InfoWindow sin tener una referencia a la instancia de InfoWindow.
//store the original setContent-function
var fx = google.maps.InfoWindow.prototype.setContent;
//override the built-in setContent-method
google.maps.InfoWindow.prototype.setContent = function (content) {
//when argument is a node
if (content.querySelector) {
//search for the address
var addr = content.querySelector(''.gm-basicinfo .gm-addr'');
if (addr) {
alert(addr.textContent);
//leave the function here
//when you don''t want the InfoWindow to appear
}
}
//run the original setContent-method
fx.apply(this, arguments);
};
Demostración: http://jsfiddle.net/doktormolle/Vkf43/
Nota: los selectores para la ventana de información no están documentados, pueden cambiar en el futuro