Я работаю над страницей, которая выбирает код с помощью Javascript httpObject и использует его для обновления двух элементов на странице - карты Google и DIV, в котором перечислены элементы, на которые указывает маркер.
Этот бит отлично работает. Проблема в том, что когда я создаю маркеры, я делаю это через цикл for и добавляю слушатели к маркеру в каждом цикле. Затем, когда я проверяю страницу, я обнаруживаю, что то же самое происходит с каждым маркером.
При наведении курсора на маркер должен изменить цвет границы соответствующего бита DIV. Вместо этого каждый маркер меняет границу последнего бита. Кажется, что каждый раз, когда я добавляю слушателей, я также перезаписываю слушателей ранее добавленных маркеров.
Я понял, что это связано с тем, что API Карт Google сохраняет идентификатор маркера даже при создании нового в Javascript. Что я не понимаю, как обойти это - я попытался создать массив вне цикла, и изменив
var newMarker = new GMarker(newLatLng);
с
newMarker [count] = новый GMarker (newLatLng);
но все равно не работает.
Помогите мне, StackOverflow. Ты моя единственная надежда. :)
Редактировать: немного больше кода
for (count=0;count<=LatArray.length;count++)
{
thisLat = LatArray[count];
thisLong = LongArray[count];
thisHTML = HTMLArray[count];
newLatLng = new GLatLng(thisLat, thisLong, true);
if (mapBounds.containsLatLng(newLatLng))
{
//alert(count);
var dinnerNumber = "dinner_"+count;
newMarkers[count] = new GMarker(newLatLng);
map.addOverlay(newMarkers[count]);
GEvent.addListener(newMarkers[count],'mouseover',function(){document.getElementById(dinnerNumber).style.borderColor = '#000000';
});
}// for