Ng-map - 有时不显示标记的信息显示

时间:2017-09-25 10:23:07

标签: javascript angularjs google-maps ng-map

我正在使用ng-map指令来显示地图。地图上有标记,只要标记上有鼠标悬停,就会显示信息窗口。然而,有时候,infowindow不会出现。

除此之外,我无法确定任何正在发生的模式,因为每次都会出现不同标记的问题。我正在向infowindow输出数据,但问题似乎并不是“数据相关”,因为所选位置的所有数据在发生问题时似乎都是正确的。

我有一个showInfo方法,在这样的鼠标悬停上调用:

showInfo(event, loc, infoWindowTemplate, map, mapsController) {
  • loc - 点击位置的数据
  • infoWindowTemplate - 要使用的信息窗口模板(对于特定地图,这总是相同的,但这是可配置的,所以如果我显示移动地图,我会使用一个infowindow模板,如果我正在显示桌面地图,我使用不同的一个)
  • map - 对控制器上的NgMap对象的引用
  • mapsController - 控制器本身(我强烈怀疑这是一个糟糕的代码味道 - 这是我在鼠标悬停后可以找到引用回控制器的最简单方法)

以下是该方法的主体:

        map.getMap(mapsController.mapId).then(function (myMap) {

            var selectedMarker = myMap.markers["L: " + loc.position[0] + ", " + loc.position[1]];
            selectedMarker.locationInfo = loc;

            console.log("about to show infowindow - infoWindowTemplate = " + infoWindowTemplate);
            // console output = "cached-myTemplate.html"

            myMap.showInfoWindow(infoWindowTemplate, selectedMarker);

selectedMarker肯定是指正确的标记对象。我的模板如下所示:

<script id="cached-myTemplate.html" type="text/ng-template">
        <a class="map-location__link" href="/locations/{{anchor.locationInfo.locationId}}" target="_blank">
                <img src="{{anchor.locationInfo.locationImageThumbnail}}" />
        </a>
</script>

问题似乎是调用'showInfoWindow'以某种方式间歇性地失败(尽管控制台中没有错误)。任何评论或答案与可能导致问题的想法或我可以做什么来诊断它将不胜感激!

1 个答案:

答案 0 :(得分:1)

我发现这是一个时间问题。延迟转弯&#39;其中调用showInfoWindow(通过添加短暂超时)修复了问题:

map.getMap(mapsController.mapId).then(function (myMap) {

            ....

            this.$timeout(function () {
                dealmap.showInfoWindow(infoWindowTemplate, selectedMarker);
            }, 100)

}.bind(this));