Javascript addDomListener事件逻辑?
我有以下代码Javascript addDomListener事件逻辑?,javascript,html,google-maps,Javascript,Html,Google Maps,我有以下代码 function init() { var mapDiv = document.getElementById('map-canvas'); var map = new google.maps.Map(mapDiv, { center: new google.maps.LatLng(31.949454, 35.932913), zoom: 8, mapTypeId: google.maps.MapTypeId
function init() {
var mapDiv = document.getElementById('map-canvas');
var map = new google.maps.Map(mapDiv, {
center: new google.maps.LatLng(31.949454, 35.932913),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
debugger;
var mapcity = {};
mapcity['amman'] = {
center: new google.maps.LatLng(31.949454, 35.932913),
population: 50000,
name: 'Amman'
};
mapcity['zarqa'] = {
center: new google.maps.LatLng(33.79, 33.39),
population: 100000,
name: 'Zarqa'
};
for (var city in mapcity) {
var cityInfo = {
strokeWeight: 2,
fillColor: 'cyan',
center: mapcity[city].center,
radius: mapcity[city].population,
map: map,
strokeOpacity: 0.8,
fillOpacity: 0.3,
}
Circle = new google.maps.Circle(cityInfo)
google.maps.event.addDomListener(Circle, 'click', function () {
alert(mapcity[city].name);
});
}
};
google.maps.event.addDomListener(window, 'load', init);
我想画一张有两个圆圈的地图,每个圆圈上都有一个事件,但问题是点击事件为两个圆圈提供了相同的值!它为两个圆圈的第二个城市命名!!!可能是因为它在for循环中,所以圆对象总是取最后一个值。
我试着用switch语句或者IF-ELSE来使用函数,但是没有用
请对此提供帮助。在匿名函数中,您关闭了城市变量,但不断更改城市变量的值。您需要冻结它,最简单的方法是将其作为函数的参数
google.maps.event.addDomListener(Circle, 'click', (function (city) {
return function() {
alert(mapcity[city].name);
}
})(city));
没有人能解决它!!!!!!!