agm-marker 的 markerClick() 返回 null
agm-marker's markerClick() is returning null
从 angular google 地图 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() 函数获取纬度和经度。
注意,我已经在 mapClick() 函数中使用 agm-map 标签, 但当我使用该功能时,它不响应点击地图上已绘制的标记。
如果你深入研究 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(点击任何可用标记)
在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)
函数。 selectedLat 和 selectedLng 变量从 (markerClick)="clickedMarker(place.lat, place.lng)
的发送参数更新
不会这样使用(markerClick)="markerClicked($event)"
从 angular google 地图 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() 函数获取纬度和经度。
注意,我已经在 mapClick() 函数中使用 agm-map 标签, 但当我使用该功能时,它不响应点击地图上已绘制的标记。
如果你深入研究 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(点击任何可用标记)
在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)
函数。 selectedLat 和 selectedLng 变量从 (markerClick)="clickedMarker(place.lat, place.lng)
不会这样使用(markerClick)="markerClicked($event)"