1、前言
用户触发事件一般是通过view交互,无法和map和layer直接交互。一般情况下,通过和view交互就可以满足平常的需求
2、需求
2.1 相同view中实现不同的点击事件
- view绑定事件
/* 为当前视图绑定click事件
* 注意需要把绑定用变量保存
*/
let viewListener = currentView.on('click', function(data) {
console.log(`addViewListener`)
})
- view解除绑定
// 保存的绑定变量viewListener只有一个方法,remove
viewListener.remove();
- view更新绑定
// 首先判断绑定变量是否为空,若不为空则remove
if(viewListener){
viewListener.remove();
}
// remove后为view重新绑定click事件
viewListener = currentView.on('click', function(data) {
console.log(`addViewListener1`)
})
2.2 触发layer和map事件
查看arcgis api 发现layer和map 是具有on方法的,就是说可以绑定事件,那么怎么触发layer 和 map的事件,layer与map事件触发有相似性,这里以layer举例
- 为featureLayer绑定click事件
// 初始化FeatureLayer
const layer = FeatureLayer({
// 此处为自定义的feature的rest路径
url: this.mapService.featureLayer
})
// 当前地图添加FeatureLayer
this.currentMap.add(layer);
- 触发featureLayer 的click事件,可以在view的事件中触发,也可以在其他地方
layer.emit('click');
说明
arcgis api
版本为4.11- 访问源码可访问gis-blog