我在Google Map上有多条多段线并为每个多线段添加一个“单击”事件处理程序。所有这些折线都是通过javascript代码添加的。但是,当我点击地图上的任何多段线时,会触发最后一次添加的折线的点击事件。这使得识别被点击的线路变得困难。不正确的多段线在地图上有多个多段线时点击发射
创建的折线的代码是:
$.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”始终原来是添加的最后一个折线和该行的颜色变为黑色,即使单击其他任何折线。
令人困惑的是,如果我在地图上绘制一条新的折线,并将它的点击事件设置为相同的功能,那么就可以正常工作。我确实得到了点击的多段线的正确ID。这适用于绘制的任何数量的新线条,并适用于以任何顺序单击它们。