У меня проблемы с Google Maps / Javascript. Я думаю, что знаю, в чем проблема, но просто не знаю, как ее обойти.
Пример моей проблемы здесь . На какой бы маркер вы ни щелкали, появляется второй. Я, очевидно, передаю неверную информацию своему слушателю событий, но я просто не могу понять, что код правильный. Вот сокращенная часть кода:
Во-первых, вот часть моего кода:
if (GBrowserIsCompatible() && mapResults != null) {
// Read in the JSON
var mapDetailsArray = loadJSON();
// Create a map
var map = new google.maps.Map2(document.getElementById(elementId));
map.setCenter(new google.maps.LatLng(mapDetailsArray[0].getLatitude(),
mapDetailsArray[0].getLongitude()), 13);
map.addControl(new google.maps.SmallMapControl());
// Add the points and center
var mgr = new google.maps.MarkerManager(map);
var bounds = new google.maps.LatLngBounds();
for ( var i = 0; i < mapDetailsArray.length; i++) {
var mapDetails = mapDetailsArray[i];
var point = new google.maps.LatLng(mapDetails.getLatitude(), mapDetails
.getLongitude());
bounds.extend(point);
// Create our marker
var marker = new google.maps.Marker(point);
// What action do we use to show the hover
var infoAction = "mouseover";
marker.value = mapDetails;
google.maps.Event.addListener(marker, infoAction, function() {
alert(marker.value);
map.openInfoWindowHtml(point, getResultInfoContent(marker.value));
});
mgr.addMarker(marker, 1);
}
mgr.refresh();
}
«marker.value» всегда заканчивается как последнее значение того, что было mapDetails. Во всяком случае, я ожидал бы, что он будет «неопределенным», так как после завершения цикла, разве это значение не должно исчезнуть? Я пробовал разные значения (например, marker.value = i + 1;), но оно будет одинаковым для обеих точек.
Кто-нибудь знает, как я могу передать правильные значения в прослушиватель событий?