我是一个初学者,并使用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+'');});点在循环中,事件侦听器在循环之外。
有人能告诉我到底出了什么问题吗?
发布于 2010-02-02 02:13:23
您只将单击事件与最后一个标记相关联。您需要为要添加到地图中的每个标记调用GEvent.addListener。
您还需要确保在触发事件时,回调中的标记是与事件关联的标记。您可以通过将标记创建代码移动到一个单独的函数(利用Javascript闭包来确保回调中的标记是外部函数范围内的标记)来做到这一点。
看看这个基于示例的示例 (代码)。
https://stackoverflow.com/questions/2083927
复制相似问题