javascript - 谷歌地图打开信息窗口不起作用

标签 javascript google-maps google-maps-api-3 knockout.js

在我的初始化 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/

相关文章:

javascript - 谷歌翻译下拉菜单 - 设置该语言本身的语言选项标签

javascript - 如何在 Url.Action() 中传递多个参数

android - 从 Google Play 服务加载 MapFragment 时出现致命信号 11

android - 自定义 OverlayItem 不绘制

javascript - Angular-在特定 ID 内显示谷歌地图

javascript - 谷歌地图API拖放图钉

javascript - Google Maps API - 基于复选框状态的 loadGeoJson

javascript - Promise Chaining 和 .then/.catch 语句

javascript - 是否可以调用像数组索引这样的 TypeScript 方法?

javascript - api 中的 Google map 旅行模式