谷歌地图,标记信息窗口不会显示?

问题描述:

我已经写过这段代码,它循环遍历经纬度/长度坐标数组,并在每个坐标处放置一个标记。一切正常,豁免信息窗口将不会出现一旦点击标记。谷歌地图,标记信息窗口不会显示?

var ExpTowerIcon = new GIcon(); 
    ExpTowerIcon.image = "tower.png"; 
    ExpTowerIcon.iconSize = new GSize(75, 75); 
    ExpTowerIcon.iconAnchor = new GPoint(37, 65); 
    ExpTowerIcon.infoWindowAnchor = new GPoint(37, 20); 


var marker=new Array(); 

for (i=0 ; i < lat.length ; i++) { 

    var MarkerPoint = new GLatLng(lat[i],long[i]); 
    marker[i] = new GMarker(MarkerPoint,{icon:ExpTowerIcon}) 
    map.addOverlay(marker[i]); 

    GEvent.addListener(marker[i] , 'click', function() { marker[i].openInfoWindowHtml('Hello!') ; }); 

    var polyline = new GPolyline([ new GLatLng(lat[i],long[i]) , new GLatLng(lat[i+1],long[i+1]) ], "#ff0000", 5); 
    map.addOverlay(polyline); 

    } 

任何想法?谢谢!

单击处理:

function() { window['marker'+i].openInfoWindowHtml('Hello!') ; } 

引用(全局)变量i将被设置为lat.length当for循环退出。

我建议:

function() { this.openInfoWindowHtml('Hello!') ; } 

编辑:

如果你需要有Click事件处理程序内的标记号,我建议:

function getHandler(i) { 
    return function() { this.openInfoWindow('tower' + i) ; }; 
} 

for (i = 0; i < lat.length; i++) { 
    ... 
    GEvent.addListener(marker[i] , 'click', getHandler(i)); 
    ... 
} 

这个绑定变量我到点击处理程序(处理程序现在是关闭)。更多关于关闭,见Working with Closures - MDC

+0

天色工作,现在所有的标记具有信息窗口,但... 我已经使用这个功能 GEvent.addListener(标记[我],“点击”,函数(){这一点。 openInfoWindow('tower'+ i);}); ,它会将所有标记标记为'tower6',而不是它的当前数组。 – 2010-04-19 08:48:45

+0

作品!谢啦! – 2010-04-19 10:21:12