在我的初始化 map 函数中,我为每个标记创建点击监听器
google.maps.event.addListener(marker, 'click', function() {
createInfoWindow(marker);
});
然后,如果您单击标记,我将创建工作正常的信息窗口:
function createInfoWindow(marker) {
var infowindow = new google.maps.InfoWindow({
maxWidth: 300,
name: ''
});
infowindow.setContent(marker.name);
infowindow.open(map, marker);
map.panTo(marker.getPosition());
}
但是当我在 knockout foreach 循环上单击调用相同的方法时, map 仅平移到标记,但不会打开信息窗口:
<ul class="object-list" data-bind="foreach: list.Objects">
<li class="object-list-item">
<a href="#" data-bind="text: name, click: getMarkerInfo"></b></a>
</li>
</ul>
self.getMarkerInfo = function() {
var mark = markers.find(function(o) {
return o.name === obj.name;
})
createInfoWindow(mark);
};
所以标记被正确解析(否则平底锅将无法工作),但我真的被信息窗口困在这里。
最佳答案
好吧,显然我的初始化 map 函数运行了两次,并且我的标记数组中有重复项。接下来我将检查重复项,但这里有一段可处理重复项的代码:
self.getMarkerInfo = function(obj) {
var mark = markers.filter(function(o) {
return o.name === obj.name;
})
mark = mark[1]
createInfoWindow(mark);
};
关于javascript - 谷歌地图打开信息窗口不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41049693/