GMaps v3 Markers AddListener问题
我正在尝试将mouseover / mouseout事件监听器添加到我的标记中,但我总是得到for循环的最后一个值在所有事件中,它似乎得到for的最后一个值而不是当前值。这是我的代码
for( mark in data ) {
markers[mark] = new google.maps.Marker({
position: new google.maps.LatLng(data[mark].lat,data[mark].lng), map: map,
});
google.maps.event.addListener(markers[mark], "mouseover", function() {
alert(mark);
});
google.maps.event.addListener(markers[mark], "mouseout", function() {
alert(mark);
});
}
结果是鼠标上/下的警报,所有10个标记的值都相同,我希望每个警报都有标记ID。
感谢 此致
答案 0 :(得分:10)
你遇到的问题是mark的值是全局的,并且被设置为循环中的最后一个值。可以通过函数闭包修复该问题。我认为这样可行(未经测试):
function createMarker(latlng, id)
{
var marker= new google.maps.Marker({
position: latlng, map: map,
});
google.maps.event.addListener(marker, "mouseover", function() {
alert(id);
});
google.maps.event.addListener(marker, "mouseout", function() {
alert(id);
});
return marker;
}
for( mark in data ) {
markers[mark] = createMarker(new google.maps.LatLng(data[mark].lat,data[mark].lng),
mark);
}