gpt4 book ai didi

javascript - 多边形对象引用问题的谷歌地图信息窗口

转载 作者:行者123 更新时间:2023-11-30 17:36:06 25 4
gpt4 key购买 nike

我正在向多边形添加信息窗口(在我的 map 上显示每个邮政编码边界多边形的邮政编码值)。但是,信息窗口始终显示在具有最后一个邮政编码值的最后一个多边形中心点处。这就像 Javascript 以某种方式引用图层(多边形)、InfoWindow 或 Zipcode - 从而覆盖第一个使用的?我不确定这是否是对象引用的 JS 问题,我不明白 - 还是 Google map 的事件监听器有问题?

// inside a class ...
var self = this;
self.map = The google map object
// ...

self.createZipcodePolygons = function(zipcodes) {
for (index = 0; index < zipcodes.length; index++) {
var zipcode = zipcodes[index];

var layer = new google.maps.Polygon({
paths: self.polygonToGooglePath(zipcode.polygon),
strokeColor: '#666',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#666',
fillOpacity: 0.35,
editable: true
});

layer.infowindow = new google.maps.InfoWindow({
content: zipcode.value.toString()
});

google.maps.event.addListener(layer,'mouseover',function(){
layer.infowindow.setPosition(new google.maps.LatLng(zipcode.center.lat, zipcode.center.lng));
layer.infowindow.open(self.map);
});
google.maps.event.addListener(layer,'mouseout',function(){
layer.infowindow.close();
});

layer.setMap(self.map);
}
}

最佳答案

鉴于 geocodezip 的评论,我修改了创建事件监听器的方式,现在它可以工作了:

        google.maps.event.addListener(layer,'mouseover',(function(layer,zipcode){
return function() {
console.log('over');
infowindow.setContent(zipcode.value.toString());
infowindow.setPosition(new google.maps.LatLng(zipcode.center.lat, zipcode.center.lng));
infowindow.open(self.map);
}
})(layer,zipcode));

关于javascript - 多边形对象引用问题的谷歌地图信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com