Creo que se trata de un problema de alcance. Como el evento se desencadena después de que he agregado todos los oyentes, num_markers siempre ha sido anulado por el siguiente ciclo en el ciclo.Google maps: pasar información a un evento Escucha
¿Hay alguna forma en que pueda pasar variables a la función de evento?
Intenté este enfoque pero no lo hizo para mí. Google Maps: Event Listener only remembering final value of variable
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
var info_window = new google.maps.InfoWindow();
var markers = [];
function load_markers() {
var bounds_url = map.getBounds().toUrlValue();
$.ajax({
url:'/retailer-markers?bounds='+bounds_url,
dataType: 'json',
success: function(data) {
for(i = 0; i < data.length; i++) {
var marker_pos = new google.maps.LatLng(data[i]['lat'], data[i]['long']);
//Every time the listener event is called this number is the length of the array
var marker_num = get_markers_count();
markers[marker_num] = new google.maps.Marker({
position: marker_pos,
map: map,
title:data[i]['Title'],
icon: image
});
google.maps.event.addListener(markers[marker_num], 'click', function() {
info_window.setContent('hello');
var pos = markers[marker_num].getPosition();
info_window.setPosition(pos);
info_window.open(map, markers[marker_num]);
});
}
}
});
}
Ese '' .get' y .set' fue de gran ayuda para un proyecto mío, saludos! – Kokos
El método '.set' funciona porque la clase' google.maps.Marker' amplía ['google.maps.MVCObject'] (https://developers.google.com/maps/documentation/javascript/reference#MVCObject) – ruhong