У меня есть несколько полилиний на карте Google и добавьте обработчик событий «щелчок» для каждого. Все эти полилинии добавляются через код javascript. Однако, когда я нажимаю на любую полилинию на карте, событие click для последней добавленной полилинии запускается. Это затрудняет идентификацию нажатой линии.Неправильная полилиния Нажмите, если у вас несколько полилиний на карте
код, который создает полилиний:
$.ajax({
type: "GET",
url: "MapData.html",
success: function (json) {
mapData = JSON.parse(json);
var newroad;
for (var i = 0; i < mapData.length; i++) {
newroad = new google.maps.Polyline({
ID: mapData[i].ID,
path: google.maps.geometry.encoding.decodePath(mapData[i].latLngs),
strokeColor: 'blue',
strokeOpacity: 0.75,
strokeWeight: 3
});
newroad.setMap(map);
google.maps.event.addListener(newroad, 'click', function() {
setSelectedRoad(newroad);
});
}
},
error: function() {
alert('Critical Data Failure');
}
});
Данные правильно получены с сервера и все полилинии отображаются синим цветом, как и ожидалось. Функция, которая вызывается, когда ломаная щелкнул является
function setSelectedRoad(road) {
road.strokeColor = 'black';
road.setOptions({ strokeColor: 'black', strokeOpacity: 1.0 });
selectedRoadID = road.ID;
}
Однако «selectedRoadID» всегда оказывается добавлена последняя ломаная и цвет для этой линии изменяется на черный, даже если какой-либо другой полилинии щелкнул.
Сложная часть состоит в том, что если я нарисую на карте новую полилинию и поставлю ее событие щелчка на ту же функцию, то это работает правильно. Я получаю правильный идентификатор для щелчка полилинии. Это работает для любого количества новых линий, нарисованных и правильно работающих, чтобы щелкнуть их в любом порядке.