agm-marker的markerClick()返回null

时间:2018-03-27 06:50:35

标签: angular google-maps-markers angular-google-maps

从角度google maps API,我们有一个带有以下定义的markerClick()函数,

 @Output() markerClick: EventEmitter<void> = new EventEmitter<void>();

但是当我在我的应用程序中使用时,我得到 NULL

我有以下应用程序代码,

在我的HTML文件中,

<agm-map [latitude]="latitude" [longitude]="longitude" [zoom]="zoom">
        <agm-marker *ngFor="let marker of coordinates;" 
        [iconUrl]="icon" 
        [latitude]="marker.latitude" 
        [longitude]="marker.longitude"
        [markerClickable]="true"
        (markerClick)="markerClicked($event)">
    </agm-marker>
    </agm-map>

在.TS文件中,

 markerClicked($event: MouseEvent) {
    console.log('clicked'); ----------------(1)
    console.log($event);--------------------(2)
  }

对于语句(2),我得到NULL作为控制台输出。 我期待它成为标记对象。我的理解错了吗? 如何从markerClick()函数获取lat和lng。

注意,我已经在 agm-map标记中使用 mapClick() 功能,但是当我使用该功能时,它没有响应地图上已绘制标记的点击次数。

2 个答案:

答案 0 :(得分:1)

如果你深入研究FILE,它总会发出null

this.markerClick.emit(null); // line no : 192

你能做的就是改变这个:

(markerClick)="markerClicked($event)"

致:

(markerClick)="markerClicked(marker)" // this way you will get the marker object

WORKING DEMO (点击任何可用的标记)

答案 1 :(得分:0)

在app.component.html

<agm-map>
<agm-marker  *ngFor="let place of markers" [latitude]=place.lat [longitude]=place.lng  title={{place.title}}  (markerClick)="clickedMarker(place.lat, place.lng)" >
<agm-info-window><strong>{{place.label}}</strong></agm-info-window>
</agm-marker>
</agm-map>

在app.components.ts

markers: any[] = [];

selectedLat: Number = 0;
selectedLng: Number = 0;

clickedMarker(lat: number, lng: number) {
this.selectedLat = lat;
this.selectedLng = lng;
}

在此处单击标记时,它将调用clickedMarker(lat: number, lng: number)函数。从(markerClick)="clickedMarker(place.lat, place.lng)

的发送参数中更新selectedLat和selectedLng变量

不以这种方式使用(markerClick)="markerClicked($event)"