我有一个在 js 中循环的数组,用于在谷歌地图上放置自定义标记。我需要为每个标记添加一个隐藏的信息窗口,以便单击它时显示相关的信息窗口。目前我正在做以下事情:
for(var i=0; i<google_map_item.length; i++)
{
latlon = new google.maps.LatLng(google_map_item[i].lat, google_map_item[i].lon)
bounds.extend(latlon);
var iconcolor = google_map_item[i].iconColor;
marker = new google.maps.Marker({
map: map,
position: latlon,
icon: "https://chart.googleapis.com/chart?chst=d_map_pin_letter_withshadow&chld=" + (i + 1) + "|"+iconcolor+"|000000",
type: 'flat',
icon_color: '#ff0000',
label_color: '#ffffff',
width: '20',
height: '20',
label_size: '11',
clickable: true
});
marker.info = new google.maps.InfoWindow({
content: '<b>Speed:</b> knots'
});
google.maps.event.addListener(marker, 'click', function() {
marker.info.open(map, marker);
});
map.fitBounds(bounds);
}
然而,这只会创建 1 个信息框,无论您单击哪个点,该信息框都会显示。
谢谢你的帮助
查看这篇博文:
http://you.arenot.me/2010/06/29/google-maps-api-v3-0-multiple-markers-multiple-infowindows/ http://you.arenot.me/2010/06/29/google-maps-api-v3-0-multiple-markers-multiple-infowindows/
基本上,您将使用新的标记对象覆盖每个标记对象。您需要使每个标记都特定于上下文,使用this
.
您的事件侦听器应如下所示:
google.maps.event.addListener(marker, 'click', function() {
marker.info.open(map, this);
});
您可能需要进行更多更改以确保为每次迭代创建新对象。试试这个并让我们知道!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)