Мой проект использует JSON-канал для сбора информации о землетрясениях в пределах определенной широты и долготы, по существу создавая прямоугольник. Я беру эту информацию и превращаю все результаты в маркеры на карте Google. Мне нужно, чтобы каждый маркер также отображал некоторую дополнительную информацию, поэтому я пытаюсь использовать встроенные объекты InfoWindow, чтобы при нажатии на маркер открывалась подсказка с некоторой информацией, связанной с этим маркером. Однако я обнаружил, что независимо от того, на какой маркер я нажимаю, одно и то же информационное окно всегда появляется над одним и тем же маркером этой группы, и я считаю, что это всегда последнее информационное окно, созданное в моем цикле. Вот код.
$.getJSON(url, function(json) {
for(var i = 0; i < json.earthquakes.length; i++)
{
var pos = new google.maps.LatLng(json.earthquakes[i].lat, json.earthquakes[i].lng);
var info = json.earthquakes[i].lat + ", " + json.earthquakes[i].lng;
var marker = new google.maps.Marker({
map: map,
position: pos,
title: json.earthquakes[i].eqid
})
var tooltip = new google.maps.InfoWindow({
content: info
})
google.maps.event.addListener(marker, 'click', function() {
tooltip.open(map, marker);
});
markers.push(marker);
tooltips.push(tooltip);
}
});
markers - это массив для всех объектов маркеров на карте, а всплывающие подсказки - это еще один массив для хранения объектов infowindows. Они глобальные.