geometria
@geometria

Почему infoWindow в vue-google-map не открывается?

Ошибок в консоли нет, но окно infoWindow не открывается. Подскажите, как его открывать по клику на маркере с минимальными правками или небольшими дополнениями в этом коде:
<template>
<!--............................................-->
        <gmap-info-window 
        id="infoWinOpen"
        :options="infoOptions" 
        :position="infoWindowPos" 
        :opened="infoWinOpen" 
        @closeclick="infoWinOpen=false">
        </gmap-info-window>
<!--............................................-->
</template>
<script>
        /*....................................*/
        export default {
            data () {
              return {
               center: {lat: 45.101637, lng: 38.986345},
                markers: [],
                        infoContent: '',
                        infoWindowPos: null,
                        infoWinOpen: false,
                            infoOptions: {
                            pixelOffset: {
                            width: 0,
                            height: -35
                            }
                        },
            }
        },

        /*.......................................*/
        addMarker(e) {
              this.markers.push({
              position: e.latLng,
              infoWinOpen: true,
              });
            },
          onMarkerClick(e) {
        infoWinOpen: true    
            }
          },
    </script>
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Не открывается, потому что вместо изменения значения свойства компонента, отвечающего за состояние infoWindow, у вас в методе onMarkerClick какая-то ересь.

Делайте так:

<gmap-info-window 
  :options="infoOptions" 
  :position="infoWindowPos" 
  :opened="infoWinOpen"
  @closeclick="infoWinOpen = false"
>
  {{ infoContent }}
</gmap-info-window>

onMarkerClick(e) {
  this.infoWindowPos = e.latLng; // задаём положение окна, над кликнутым маркером
  this.infoContent = JSON.stringify(e.latLng); // задаём контент окна, передаётся в слот
  this.infoWinOpen = true; // открываем окно
},
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы