我的谷歌地图标记存在问题。实际上,在我的地图上,我添加了几个带有事件监听器的标记,以便在点击时触发事件,但它们都会缝合以触发相同的功能。
for(var j = 0; j < lat_long.length; j ++) {
markers[j] = new google.maps.Marker({
position: latitudeAndLongitudeOne,
icon: self.icon,
scaledSize: new google.maps.Size(50, 50),
map: self.map,
title: lat_long[i].name
});
google.maps.event.addListener(markers[j], 'click', function() {
alert(j);
});
}
我有 alert(x),其中x是插入的最后一项的ID。无论我点击什么标记。
有什么想法吗? 谢谢
答案 0 :(得分:4)
var markers= [];
for(var i = 0; i < lat_long.length; i ++) {
var marker = new google.maps.Marker({
position: latitudeAndLongitudeOne,
icon: self.icon,
scaledSize: new google.maps.Size(50, 50),
map: self.map,
title: lat_long[i].name
});
marker.addListener('click', function() {
alert(marker.title);
});
markers.push(marker);
}
我不确定但你可以试试
答案 1 :(得分:1)
这是因为你无法像你那样定义标记。创建一个全局数组,并在该数组中插入每个创建标记的实例。
所以: 对于所有标记,定义一个数组以保留每个已创建标记的引用:
var markers = []; //Global Marker Array
function printMarker(lat, lng){
var marker = new google.maps.Marker({
position: {lat: lat, lng: lng},
icon: icon,
map: map
});
markers.push(marker);
}
现在您只需将clickListener添加到循环中标记的当前引用即可。