San*_*ago 5 google-maps google-maps-markers
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);
});
}
Run Code Online (Sandbox Code Playgroud)
结果是鼠标上/下的警报与所有10个标记的值相同,我期望每个警报上都有标记ID.
感谢和问候
geo*_*zip 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5607 次 |
| 最近记录: |