我遇到了一个问题,我不确定如何面对它。
我有一个数组(来自数据库的一组记录)和一个循环来遍历数组。在循环中,我使用Google Maps api创建标记对象。标记采用具有各种信息(位置,相关地图等)设置的键值对。它还有一个标题,我想指定一个特定的文本来包含特定于该标记的信息。然而,当我遍历代码时,似乎我总是最终得到所有标记引用的相同字符串(即,点击时只显示一个标题消息,它只与单个标记有关,尽管它出现在所有标记。
我的代码是:
for (record = 0; record < numRecords; record++){
zomLat =parseFloat(data[record][1]);
zomLng = parseFloat(data[record][2]);
posterName = data[record][3];
headline = data[record][7];
details = data[record][8];
type = data[record][4];
num = data[record][5];
timePosted = data[record][6];
mapLabel = data[record][9]; //this is the key info I'd like added to each marker
//creates a position object for the marker
zomLATLNG = getCustomLatLng(Lat,Lng);
marker = new google.maps.Marker(
{
position: zomLATLNG,
map: window.map,
icon: window.Icon,
draggable:true,
title://How can I add a unique string here?
});
//and add a click listener
google.maps.event.addListener(marker, 'click', function()
{
alert(marker.title);
});
window.zomMarkers.push(marker);
}
我认为我需要做的是在每个循环中,创建一个新的独立字符串对象(基本上是由data [record] [0]定义的mapLabel对象的副本。但是经过几个小时的尝试,我可以&#39似乎做对了。
提前感谢任何想法或帮助。
答案 0 :(得分:0)
正如Dr.Molle所建议的非常有帮助,使用this.title而不是marker.title解决了这个问题。我在分配&#39;标题时直接使用了mapLabel变量。标记选项的关键。
这里的最终代码(非常感谢Dr.Molle!):
for (record = 0; record < numRecords; record++){
zomLat =parseFloat(data[record][1]);
zomLng = parseFloat(data[record][2]);
posterName = data[record][3];
headline = data[record][7];
details = data[record][8];
type = data[record][4];
num = data[record][5];
timePosted = data[record][6];
mapLabel = data[record][9]; //this is the key info I'd like added to each marker
//creates a position object for the marker
zomLATLNG = getCustomLatLng(Lat,Lng);
marker = new google.maps.Marker(
{
position: zomLATLNG,
map: window.map,
icon: window.Icon,
draggable:true,
title:mapLabel
});
//and add a click listener
google.maps.event.addListener(marker, 'click', function()
{
alert(this.title);
});
window.zomMarkers.push(marker);
}