你的做法是对的。拥有一个信息窗口对象就像拥有一个标记对象一样。然后,信息窗口的内容会根据您单击的标记而变化。需要注意的一件事(如果您在循环内创建标记,也会发生这种情况),危险是所有信息窗口最终都会显示最后一个信息窗口的内容。因此,让我们创建一个更新内容的新函数。
另外,顺便说一句,您不必在标记对象上调用 setMap() 函数,您只需在创建标记时传递的选项中指定地图属性即可。
var infowindow = new google.maps.InfoWindow({
content: ''
});
var marker_obj = new google.maps.Marker({
position: myLatlng,
title:"This is Marker 1",
map: map
});
bindInfoWindow(marker_obj, map, infowindow, 'Marker 1');
marker_obj = new google.maps.Marker({
position: myLatlng,
title:"This is Marker 2",
map: map
});
bindInfoWindow(marker_obj, map, infowindow, 'Marker 2');
然后是一个新函数:
function bindInfoWindow(marker, map, infowindow, html) {
marker.addListener('click', function() {
infowindow.setContent(html);
infowindow.open(map, this);
});
}