Ng-map - иногда не появляется информационное окно на маркерах

Я использую директиву ng-map для отображения карты. На карте есть маркеры, которые показывают информационное окно при наведении курсора на маркер. Однако иногда информационное окно не появляется.

Кроме этого, я не смог определить какую-либо закономерность в том, что происходит, поскольку проблема каждый раз возникает для другого маркера. Я вывожу данные в информационное окно, однако проблема не кажется «связанной с данными», поскольку все данные для выбранного местоположения кажутся правильными в момент возникновения проблемы.

У меня есть метод showInfo, который вызывается при наведении курсора следующим образом:

showInfo(event, loc, infoWindowTemplate, map, mapsController) {
  • loc - данные для кликнутого местоположения
  • infoWindowTemplate — используемый шаблон информационного окна (это всегда одно и то же для конкретной карты, однако это настраивается, поэтому, если я показываю карту для мобильного устройства, я использую один шаблон информационного окна, если я показываю карту для настольного компьютера, пользуюсь другим)
  • 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' периодически почему-то терпит неудачу (хотя в консоли нет ошибок). Будем признательны за любые комментарии или ответы с идеями о том, что может быть причиной проблемы или что еще я могу сделать, чтобы ее диагностировать!


person Chris Halcrow    schedule 25.09.2017    source источник
comment
та же проблема, с которой я сталкиваюсь. у вас есть какое-либо решение этого?   -  person Manoj Patidar    schedule 28.11.2017
comment
Только что понял - см. мой ответ   -  person Chris Halcrow    schedule 13.12.2017


Ответы (1)


Я обнаружил, что это проблема времени. Задержка «хода», в котором вызывается showInfoWindow (путем добавления короткого тайм-аута), устранила проблему:

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

            ....

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

}.bind(this));
person Chris Halcrow    schedule 13.12.2017