从角度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() 功能,但是当我使用该功能时,它没有响应地图上已绘制标记的点击次数。
答案 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)
不以这种方式使用(markerClick)="markerClicked($event)"