本章节将对各类监听事件做介绍,地图事件监听(地图状态改变、各种手势、截屏)等。
sdk定义了各种地图相关事件的监听,提供相应的事件监听方法,包括地图状态的改变、手势事件、地图渲染、地图截屏事件等。如下所示:
地图状态改变接口:
onmapstatuschangelistener listener =newonmapstatuschangelistener(){baidumap.onmapstatuschangelistener listener =newbaidumap.onmapstatuschangelistener(){/*** 手势操作地图,设置地图状态等操作导致地图状态开始改变。** @param status 地图状态改变开始时的地图状态*/@overridepublicvoidonmapstatuschangestart(mapstatus status){}/*** 手势操作地图,设置地图状态等操作导致地图状态开始改变。** @param status 地图状态改变开始时的地图状态** @param reason 地图状态改变的原因*///用户手势触发导致的地图状态改变,比如双击、拖拽、滑动底图//int reason_gesture = 1;//sdk导致的地图状态改变, 比如点击缩放控件、指南针图标//int reason_api_animation = 2;//开发者调用,导致的地图状态改变//int reason_developer_animation = 3;@overridepublicvoidonmapstatuschangestart(mapstatus status, int reason){}/*** 地图状态变化中** @param status 当前地图状态*/@overridepublicvoidonmapstatuschange(mapstatus status){}/*** 地图状态改变结束** @param status 地图状态改变结束后的地图状态*/@overridepublicvoidonmapstatuschangefinish(mapstatus status){}};//设置地图状态监听mbaidumap.setonmapstatuschangelistener(listener);
地图单击事件监听接口:
baidumap.onmapclicklistener listener =newbaidumap.onmapclicklistener(){/*** 地图单击事件回调函数** @param point 点击的地理坐标*/@overridepublicvoidonmapclick(latlng point){}/*** 地图内 poi 单击事件回调函数** @param mappoi 点击的 poi 信息*/@overridepublicvoidonmappoiclick(mappoi mappoi){}};//设置地图单击事件监听mbaidumap.setonmapclicklistener(listener);
地图双击事件监听接口:
baidumap.onmapdoubleclicklistener listener =newbaidumap.onmapdoubleclicklistener(){/*** 地图双击事件监听回调函数** @param point 双击的地理坐标*/@overridepublicvoidonmapdoubleclick(latlng point){}};//设置地图双击事件监听mbaidumap.setonmapdoubleclicklistener(listener);
地图长按事件监听接口:
baidumap.onmaplongclicklistener listener =newbaidumap.onmaplongclicklistener(){/*** 地图长按事件监听回调函数** @param point 长按的地理坐标*/@overridepublicvoidonmaplongclick(latlng point){}};//设置地图长按事件监听mbaidumap.setonmaplongclicklistener(listener);
地图 marker 覆盖物点击事件监听接口:
onmarkerclicklistener listener =newonmarkerclicklistener(){/*** 地图 marker 覆盖物点击事件监听函数* @param marker 被点击的 marker*/public boolean onmarkerclick(marker marker){}};
触摸地图回调接口:
baidumap.onmaptouchlistener listener =newbaidumap.onmaptouchlistener(){/*** 当用户触摸地图时回调函数** @param motionevent 触摸事件*/@overridepublicvoidontouch(motionevent motionevent){}};//设置触摸地图事件监听者mbaidumap.setonmaptouchlistener(listener);
地图加载完成回调接口:
baidumap.onmaploadedcallback callback =newbaidumap.onmaploadedcallback(){/*** 地图加载完成回调函数*/@overridepublicvoidonmaploaded(){}};//设置地图加载完成回调mbaidumap.setonmaploadedcallback(callback);
地图渲染完成回调接口:
自4.1.0起,增加地图渲染完成的监听接口onmaprenderfinished(),每次对地图有操作时,绘制完成时调用。
baidumap.onmaprendercallback callback =newbaidumap.onmaprendercallback(){/*** 地图渲染完成回调函数*/@overridepublicvoidonmaprenderfinished(){}};//设置地图渲染完成回调mbaidumap.setonmaprendercallbadk(callback);
地图截屏回调接口:
baidumap.snapshotreadycallback callback =newbaidumap.snapshotreadycallback(){/*** 地图截屏回调接口** @param snapshot 截屏返回的 bitmap 数据*/@overridepublicvoidonsnapshotready(bitmap snapshot){}};/*** 发起截图请求** @param callback 截图完成后的回调*/mbaidumap.snapshot(callback);
地图定位图标点击事件监听接口:
注意:确保开启定位图层
baidumap.onmylocationclicklistener listener =newbaidumap.onmylocationclicklistener(){/*** 地图定位图标点击事件监听函数*/@overridepublic boolean onmylocationclick(){returnfalse;}};//设置定位图标点击事件监听mbaidumap.setonmylocationclicklistener(listener);
自v4.1.0起,加入事件处理机制,对于polyline和marker的点击事件,开发者可以通过相关回调接口捕获处理。示例如下:
marker点击事件接口:
baidumap.onmarkerclicklistener listener =newbaidumap.onmarkerclicklistener(){/*** 地图 marker 覆盖物点击事件监听函数* @param marker 被点击的 marker*/@overridepublic boolean onmarkerclick(marker marker){returnfalse;//是否捕获点击事件}};// 设置地图 marker 覆盖物点击事件监听者,自3.4.0版本起可设置多个监听对象,停止监听时调用removemarkerclicklistener移除监听对象mbaidumap.setonmarkerclicklistener(listener);//停止监听时移除监听对象mbaidumap.removemarkerclicklistener(listener);
polyline点击事件接口:
baidumap.onpolylineclicklistener listener =newbaidumap.onpolylineclicklistener(){/*** 地图 polyline 覆盖物点击事件监听函数** @param polyline 被点击的 polyline*/@overridepublic boolean onpolylineclick(polyline polyline){returnfalse;//是否捕获点击事件}};//设置地图 polyline 覆盖物点击事件监听mbaidumap.setonpolylineclicklistener(listener);
当开发者对上述点击不处理时,向下传递,等同于地图点击事件,可由onmapclicklistener捕获。
上一篇
下一篇
本篇文章对您是否有帮助?