小编Kom*_*mal的帖子

在新标记上单击Angular Google Map Close Info窗口

我正在使用Angular谷歌地图:https : //angular-maps.com/。现在作为默认功能,它将打开标记内定义的信息窗口。在单击任何新标记时,它仍保持打开的旧窗口。单击另一个标记时,我需要关闭信息窗口。这是html代码:

<agm-map [latitude]="lat" [longitude]="lng" [zoom]="zoom">
          <agm-marker 
              *ngFor="let m of markers; let i = index"
              (markerClick)="clickedMarker(m.label, infoWindow, i)"
              [latitude]="m.lat"
              [longitude]="m.lng"
              [markerDraggable]="m.draggable"                
              [iconUrl]="m.icon">

            <agm-info-window #infoWindow>
              <strong>{{m.name}}</strong><br>
            </agm-info-window>

          </agm-marker>
        </agm-map>
Run Code Online (Sandbox Code Playgroud)

这是单击标记时的代码:

clickedMarker(label: string, infoWindow, marker, index: number) {
     if( this.infoWindowOpened ===  infoWindow)
      return;

    if(this.infoWindowOpened !== null)
    {
     this.infoWindowOpened.close();
    }
    this.infoWindowOpened = infoWindow;
}
Run Code Online (Sandbox Code Playgroud)

页面刷新时有效。但是,只要刷新标记变量,它就会显示此错误:

ERROR TypeError: Cannot read property 'then' of undefined
at InfoWindowManager.close (info-window-manager.js:48)
at AgmInfoWindow.close (info-window.js:94)
at SearchComponent.clickedMarker (search.component.ts:188)
Run Code Online (Sandbox Code Playgroud)

刷新标记的组件代码:

this.markers.push({
              name: item.Name,  
              lat: parseFloat(item.latitude.toString()),
              lng: parseFloat(item.longitude.toString()), …
Run Code Online (Sandbox Code Playgroud)

google-maps angular

5
推荐指数
1
解决办法
4519
查看次数

标签 统计

angular ×1

google-maps ×1