谷歌地图,标记信息窗口不会显示?
问题描述:
我已经写过这段代码,它循环遍历经纬度/长度坐标数组,并在每个坐标处放置一个标记。一切正常,豁免信息窗口将不会出现一旦点击标记。谷歌地图,标记信息窗口不会显示?
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
天色工作,现在所有的标记具有信息窗口,但... 我已经使用这个功能 GEvent.addListener(标记[我],“点击”,函数(){这一点。 openInfoWindow('tower'+ i);}); ,它会将所有标记标记为'tower6',而不是它的当前数组。 – 2010-04-19 08:48:45
作品!谢啦! – 2010-04-19 10:21:12