我是初学者并使用 openInfoWindowHtml 来显示气球文字。我的应用程序可以选择显示单个位置和多个位置。
我的单个位置气球文字可以正常使用 openInfoWindowHtml ();
但是当我进入多个时,它总是显示最后一个点文本,所有点的点击事件都不会发生。
代码段:
var markers =[];
for(var i=0;i<(geoList.length)-1;i++)
{
var geo = (geoList[i]).split(',');
map.setCenter(new GLatLng(geo[3], geo[4]), 2);
var ip_point = new GLatLng(geo[3], geo[4]);
//creating a marker
marker = new GMarker(ip_point);
map.addOverlay(marker);
markers[i] = marker;
// The ballon text which shows the details of the ip address
var ip = "<div style=\"font-family:Verdana;font-size:10px;text-align:left\">";
//var dbName = base64_decode(geo[5]); // added on 14Dec2009
//If IP is not found it goes to else loop
if(geo.length== 9){
ip += "<span class=\"FSColorBold\">"+geo[5]+"</span><br /> ";
ip += "<?php __('IP:'); ?>"+geo[6]+"<br />";
ip += "<?php __('ID:'); ?>"+geo[7]+"<br />";
ip += "<?php __('Last Accessed: '); ?>"+geo[8]+"<br />";
ip += geo[2]+","+geo[1]+"<br />";
}
}
// shows IP details info by default
map.openInfoWindow(map.getCenter(),ip);
// Reloads the IP details info on clicking the marker
GEvent.addListener(marker, "click", function(){
marker.openInfoWindowHtml(ip+'');});
这些点位于循环中,事件侦听器位于循环之外。
谁能告诉我到底出了什么问题?
答案 0 :(得分:0)
您只是将点击事件与最后一个标记相关联。您需要为要添加到地图的每个标记调用 GEvent.addListener 。
您还需要确保在触发事件时,回调中的标记是与事件关联的标记。您可以通过将标记创建代码移动到单独的函数中来实现这一点(利用Javascript Closures确保回调中的标记是外部函数中作用域中的标记。)