Leaflet geoJSON onEachFeature鼠标事件

Leaflet geoJSON onEachFeature鼠标事件,leaflet,angular5,ngx-leaflet,Leaflet,Angular5,Ngx Leaflet,我遇到了一个问题,我试图将onEachFeature方法用于geoJSON层。我尝试为每个功能分配一个单击侦听器。 问题是,当我单击某个功能时,总是会出现该错误: 未捕获的TypeError:无法读取未定义的属性“detectChanges” 我可以认为这是因为层是在构造函数运行之前分配的,但是在ngOnInit函数中这样做也不起作用。如果有一个好办法,那就太酷了:) 构造函数(私有changeDetector:ChangeDetectorRef){} fitBounds:LatLngBoun

我遇到了一个问题,我试图将onEachFeature方法用于geoJSON层。我尝试为每个功能分配一个单击侦听器。 问题是,当我单击某个功能时,总是会出现该错误:

未捕获的TypeError:无法读取未定义的属性“detectChanges”

我可以认为这是因为层是在构造函数运行之前分配的,但是在ngOnInit函数中这样做也不起作用。如果有一个好办法,那就太酷了:)

构造函数(私有changeDetector:ChangeDetectorRef){}
fitBounds:LatLngBounds;
geoLayer=geoJSON(statesData,{onEachFeature:this.onEachFeature});
onEachFeature(特征,图层){
层上('点击',(e)=>{
此.fitBounds=[
[0.712, -74.227],
[0.774, -74.125]
];
this.changeDetector.detectChanges();
});

}
您需要确保可以在回调中访问正确的
。您可以使用Javascript中的
function.bind()
实现这一点。见:

构造函数(私有changeDetector:ChangeDetectorRef){}
fitBounds:LatLngBounds;
geoLayer=geoJSON(statesData{
//需要在该上下文中绑定适当的
onEachFeature:this.onEachFeature.bind(this)
});
onEachFeature(特征,图层){
//“this”现在将引用组件的上下文
让那=这;
层上('点击',(e)=>{
那.fitBounds=[
[0.712, -74.227],
[0.774, -74.125]
];
//别名“that”表示“this”,因此它在范围内
that.change检测器.detectChanges();
});
}

let that=this
技巧是确保在
click
事件处理程序上没有相同的问题。但是,您也可以将该处理程序设置为类中的函数,并使用bind设置
this

,您需要确保在回调中可以访问正确的
this
。您可以使用Javascript中的
function.bind()
实现这一点。见:

构造函数(私有changeDetector:ChangeDetectorRef){}
fitBounds:LatLngBounds;
geoLayer=geoJSON(statesData{
//需要在该上下文中绑定适当的
onEachFeature:this.onEachFeature.bind(this)
});
onEachFeature(特征,图层){
//“this”现在将引用组件的上下文
让那=这;
层上('点击',(e)=>{
那.fitBounds=[
[0.712, -74.227],
[0.774, -74.125]
];
//别名“that”表示“this”,因此它在范围内
that.change检测器.detectChanges();
});
}

let that=this
技巧是确保在
click
事件处理程序上没有相同的问题。但是,您也可以将该处理程序设置为类中的一个函数,并使用bind设置

可能重复的可能重复的可能重复的可能重复的感谢您的快速和我的问题解决答案:)@replace如何嵌套ngx传单单击事件?我已经使用上面的示例成功单击多边形,以显示位于该多边形内的关联点。然后,我希望能够单击各个点以显示更深层次的点。我将如何使用
来区分这两个层?@lauren单击与多边形重叠的各个点可能涉及CSS(例如指针事件)和故意的层排序。至于区分,您可以将它们分为单独的geoJSON层,每个层都有不同的onEachFeature属性。感谢您的快速解答和我的问题解决答案:)@replace如何嵌套ngx传单点击事件?我已经使用上面的示例成功单击多边形,以显示位于该多边形内的关联点。然后,我希望能够单击各个点以显示更深层次的点。我将如何使用
来区分这两个层?@lauren单击与多边形重叠的各个点可能涉及CSS(例如指针事件)和故意的层排序。至于区分,您可以将它们划分为单独的geoJSON层,并且每个层都有不同的onEachFeature属性。