本章节将对各类监听事件做介绍,地图事件监听(地图状态改变、各种手势、截屏)等。
SDK定义了各种地图相关事件的监听,提供相应的事件监听方法,包括地图状态的改变、手势事件、地图渲染、地图截屏事件等。如下所示:
地图状态改变接口:
OnMapStatusChangeListener listener = new OnMapStatusChangeListener() {BaiduMap.OnMapStatusChangeListener listener = new BaiduMap.OnMapStatusChangeListener() {/*** 手势操作地图,设置地图状态等操作导致地图状态开始改变。** @param status 地图状态改变开始时的地图状态*/@Overridepublic void onMapStatusChangeStart(MapStatus status) {}/*** 手势操作地图,设置地图状态等操作导致地图状态开始改变。** @param status 地图状态改变开始时的地图状态** @param reason 地图状态改变的原因*///用户手势触发导致的地图状态改变,比如双击、拖拽、滑动底图//int REASON_GESTURE = 1;//SDK导致的地图状态改变, 比如点击缩放控件、指南针图标//int REASON_API_ANIMATION = 2;//开发者调用,导致的地图状态改变//int REASON_DEVELOPER_ANIMATION = 3;@Overridepublic void onMapStatusChangeStart(MapStatus status, int reason) {}/*** 地图状态变化中** @param status 当前地图状态*/@Overridepublic void onMapStatusChange(MapStatus status) {}/*** 地图状态改变结束** @param status 地图状态改变结束后的地图状态*/@Overridepublic void onMapStatusChangeFinish(MapStatus status) {}};//设置地图状态监听mBaiduMap.setOnMapStatusChangeListener(listener);
地图单击事件监听接口:
BaiduMap.OnMapClickListener listener = new BaiduMap.OnMapClickListener() {/*** 地图单击事件回调函数** @param point 点击的地理坐标*/@Overridepublic void onMapClick(LatLng point) {}/*** 地图内 Poi 单击事件回调函数** @param mapPoi 点击的 poi 信息*/@Overridepublic void onMapPoiClick(MapPoi mapPoi) {}};//设置地图单击事件监听mBaiduMap.setOnMapClickListener(listener);
地图双击事件监听接口:
BaiduMap.OnMapDoubleClickListener listener = new BaiduMap.OnMapDoubleClickListener() {/*** 地图双击事件监听回调函数** @param point 双击的地理坐标*/@Overridepublic void onMapDoubleClick(LatLng point) {}};//设置地图双击事件监听mBaiduMap.setOnMapDoubleClickListener(listener);
地图长按事件监听接口:
BaiduMap.OnMapLongClickListener listener = new BaiduMap.OnMapLongClickListener() {/*** 地图长按事件监听回调函数** @param point 长按的地理坐标*/@Overridepublic void onMapLongClick(LatLng point) {}};//设置地图长按事件监听mBaiduMap.setOnMapLongClickListener(listener);
地图 Marker 覆盖物点击事件监听接口:
OnMarkerClickListener listener = new OnMarkerClickListener() {/*** 地图 Marker 覆盖物点击事件监听函数* @param marker 被点击的 marker*/public boolean onMarkerClick(Marker marker){}};
触摸地图回调接口:
BaiduMap.OnMapTouchListener listener = new BaiduMap.OnMapTouchListener() {/*** 当用户触摸地图时回调函数** @param motionEvent 触摸事件*/@Overridepublic void onTouch(MotionEvent motionEvent) {}};//设置触摸地图事件监听者mBaiduMap.setOnMapTouchListener(listener);
地图加载完成回调接口:
BaiduMap.OnMapLoadedCallback callback = new BaiduMap.OnMapLoadedCallback() {/*** 地图加载完成回调函数*/@Overridepublic void onMapLoaded() {}};//设置地图加载完成回调mBaiduMap.setOnMapLoadedCallback(callback);
地图渲染完成回调接口:
自4.1.0起,增加地图渲染完成的监听接口onMapRenderFinished(),每次对地图有操作时,绘制完成时调用。
BaiduMap.OnMapRenderCallback callback = new BaiduMap.OnMapRenderCallback() {/*** 地图渲染完成回调函数*/@Overridepublic void onMapRenderFinished() {}};//设置地图渲染完成回调mBaiduMap.setOnMapRenderCallbadk(callback);
地图截屏回调接口:
BaiduMap.SnapshotReadyCallback callback = new BaiduMap.SnapshotReadyCallback() {/*** 地图截屏回调接口** @param snapshot 截屏返回的 bitmap 数据*/@Overridepublic void onSnapshotReady(Bitmap snapshot) {}};/*** 发起截图请求** @param callback 截图完成后的回调*/mBaiduMap.snapshot(callback);
地图定位图标点击事件监听接口:
注意:确保开启定位图层
BaiduMap.OnMyLocationClickListener listener = new BaiduMap.OnMyLocationClickListener() {/*** 地图定位图标点击事件监听函数*/@Overridepublic boolean onMyLocationClick() {return false;}};//设置定位图标点击事件监听mBaiduMap.setOnMyLocationClickListener(listener);
自V4.1.0起,加入事件处理机制,对于Polyline和Marker的点击事件,开发者可以通过相关回调接口捕获处理。示例如下:
Marker点击事件接口:
BaiduMap.OnMarkerClickListener listener = new BaiduMap.OnMarkerClickListener() {/*** 地图 Marker 覆盖物点击事件监听函数* @param marker 被点击的 marker*/@Overridepublic boolean onMarkerClick(Marker marker) {return false;//是否捕获点击事件}};// 设置地图 Marker 覆盖物点击事件监听者,自3.4.0版本起可设置多个监听对象,停止监听时调用removeMarkerClickListener移除监听对象mBaiduMap.setOnMarkerClickListener(listener);//停止监听时移除监听对象mBaiduMap.removeMarkerClickListener(listener);
Polyline点击事件接口:
BaiduMap.OnPolylineClickListener listener = new BaiduMap.OnPolylineClickListener() {/*** 地图 Polyline 覆盖物点击事件监听函数** @param polyline 被点击的 polyline*/@Overridepublic boolean onPolylineClick(Polyline polyline) {return false;//是否捕获点击事件}};//设置地图 Polyline 覆盖物点击事件监听mBaiduMap.setOnPolylineClickListener(listener);
当开发者对上述点击不处理时,向下传递,等同于地图点击事件,可由OnMapClickListener捕获。
上一篇
下一篇
本篇文章对您是否有帮助?