Evento desencadenante con InfoWindow o InfoBox al hacer clic en Google Map API V3

Quiero saber cómo activar un evento cuando hago clic en una ventana de información usando Google Maps API v3. En este ejemplo, cuando hago clic en un marcador, aparece una ventana de información con un mensaje único, según el marcador en el que hice clic. También quiero poder hacer clic en la ventana de información y aparecer una alerta que dice

“Hiciste clic en la ventana de información para ( __ completar una ubicación en blanco _ )

Encontré algunos ejemplos usando Google Maps API v2 y jQuery, pero no con el antiguo API de Google Maps v3.

   jQuery mobile with Google maps - Google maps jQuery plugin       var cityList = [ ['Chicago', 41.850033, -87.6500523, 1], ['Illinois', 40.797177,-89.406738, 2] ]; var demoCenter = new google.maps.LatLng(41,-87); var map; function initialize() { map = new google.maps.Map(document.getElementById('map_canvas'), { zoom: 7, center: demoCenter, mapTypeId: google.maps.MapTypeId.ROADMAP }); addMarkers(); } function addMarkers() { var marker, i; var infowindow = new google.maps.InfoWindow(); for (i = 0; i < cityList.length; i++) { marker = new google.maps.Marker({ position: new google.maps.LatLng(cityList[i][1], cityList[i][2]), map: map, title: cityList[i][0] }); google.maps.event.addListener(marker, 'click', (function(marker, i) { var contentString = '
' +'
' +'

' + "This location is:
" + marker.title +'

' +'
' + '
'; return function() { infowindow.setContent(contentString); infowindow.open(map, marker); google.maps.event.addListener(infowindow, 'click', (function(i){ alert("You clicked on the infowindow for" + cityList[i][0]); })); } })(marker, i)); } }

Actualización También terminé averiguando esto para InfoBox, que se incluye a continuación en mi respuesta.

Ok, me di cuenta de esto para infoWindow , pero luego también lo descubrí para InfoBox ya que es más bonito y más personalizable. Soy nuevo en JavaScript y estos cierres pueden ser muy difíciles.

Para infoWindow

 < !doctype html>   jQuery mobile with Google maps - Google maps jQuery plugin           

Para InfoBox

 < !doctype html>   jQuery mobile with Google maps - Google maps jQuery plugin             

El objeto InfoWindow no tiene un evento ‘clic’, por lo que no puede hacer

 google.maps.event.addListener(infowindow, 'click',.... 

en su lugar, puede adjuntar un controlador de eventos al objeto DOM, como

 function addMarker(latLng, name){ var marker = new google.maps.Marker({ map:map, position:latLng }); G.event.addListener(marker,'click',function(mev){ var div = document.createElement('div'); div.innerHTML = name; div.onclick = function(){iwClick(name)}; infoWindow.setContent(div); infoWindow.setPosition(mev.latLng); infoWindow.open(map); }); } function iwClick(str){ alert(str); }; 

y lo llamas con

 var chicago = new google.maps.LatLng(41.850033, -87.6500523); addMarker(chicago,'chicago'); 

Gracias! Erin es el hombre! ¡Solucionaste mi problema! ¡Lo estuve atacando por 4 días ahora! Los cierres son un dolor en * si eres nuevo para ellos.

Este es mi código de trabajo (Sencha Touch 2 y Google maps API v3). Permitirá abrir una ventana de información.

 var openedInfoWindow = null; var boxList = []; var marker, i; //build info box object var infoWindow = new google.maps.InfoWindow({ enableEventPropagation: true, }); //handle close google.maps.event.addListener(infoWindow, 'closeclick', function() { openedInfoWindow = null; }); //loop trough store data... for(i in data) { //data var itemData = data[i].getData(); //marker var geopos = new google.maps.LatLng(itemData['lat'], itemData['lng']); var marker = new google.maps.Marker({ position: geopos, //icon: image, map: map, title: itemData['title'], id: i, animation: google.maps.Animation.DROP }); //add info window content to DOM var boxText = document.createElement("div"); boxText.id = i; boxText.className = "labelText" + i; boxText.data = itemData; boxText.innerHTML = '' + itemData['title'] + '' + (itemData['distance'] ? ' (' + itemData['distance'] + ')' : '') + '
' + (itemData['address'] != itemData['title'] ? itemData['address'] : '') + (itemData['price'] ? '
' + itemData['price'] : '') + '
Meer info'; boxList.push(boxText); //add marker click event google.maps.event.addListener(marker, 'click', (function(marker, i) { if (openedInfoWindow != null) openedInfoWindow.close(); return function() { infoWindow.setContent(boxList[this.id]); infoWindow.open(map, marker); openedInfoWindow = infoWindow; } })(marker, i)); //when infowindow is clicked, open view... google.maps.event.addDomListener(boxList[i],'click',(function(marker, i) { return function(){ iStuddy.app.pushView('kames_detail',boxList[i].data); } })(marker, i)); }

mi solución: prueba usar onClick en xml

  
{alert('hello')}} class="wow slideInLeft">
nhà trọ cho thuê
1.500.000đ