我想显示infowindow,每个多边形都有自己不同于excel表的内容,但是我的代码显示的是同一个infowindow,其中包含所有多边形的最后一行excel的内容
请有人解决这个问题吗? 提前谢谢。
for(m=0; m < array.length; m++)
{
var lat = array[m][1];
var lon = array[m][2];
var latOffset = 0.5;
var lonOffset = 2;
var latOffset2 = 0.5;
var lonOffset2 = 2;
var polygon = new GPolygon([
new GLatLng(lat , lon ),
new GLatLng(lat - latOffset2, lon + (lonOffset-1)),
new GLatLng(lat - latOffset2, lon - (lonOffset-1)),
new GLatLng(lat , lon ),
], "#ff0000", 0.1 , 0.9, "#ff0000", 0.9);
a=array[m][1];
b=array[m][2];
c=array[m][0];
f=array[m][3];
h=array[m][4];
s=array[m][6];
bsc=array[m][5];
GEvent.addListener(polygon, "click", function(overlay,lat,lon)
{
map.openInfoWindowHtml(overlay,"Site"+ s +"<br>"+"BSC"+ bsc +"<br>"+"Cell"+ c +"<br>"+"Cell lattitude"+ lat +"<br>"+"Cell longitude" + lon + "<br>"+"Freq"+ f +"<br>"+"Height"+ h );});
map.addOverlay(polygon);
}
}
答案 0 :(得分:1)
addListener
方法中有a very common closure problem。
封闭在闭包中的变量共享相同的单一环境,因此在调用click
方法的addListener
回调时,循环将运行其变量{{1} },s
,bsc
,c
,f
,h
和lat
将指向{中的最后一个元素的值{1}}。
您可以使用函数工厂解决更多闭包问题:
lon
如果你不熟悉闭包的工作方式,这可能是一个非常棘手的话题。您可以查看以下Mozilla文章以获得简要介绍: