全部服务产品
开发者频道
定价
登录
事件交互
下载开发文档

本章节将对各类监听事件做介绍,地图事件监听(地图状态改变、各种手势、截屏)等。

地图事件监听

SDK定义了各种地图相关事件的监听,提供相应的事件监听方法,包括地图状态的改变、手势事件、地图渲染、地图截屏事件等。如下所示:

地图状态改变接口:

OnMapStatusChangeListener listener = new OnMapStatusChangeListener() {
BaiduMap.OnMapStatusChangeListener listener = new BaiduMap.OnMapStatusChangeListener() {
/**
* 手势操作地图,设置地图状态等操作导致地图状态开始改变。
*
* @param status 地图状态改变开始时的地图状态
*/
@Override
public void onMapStatusChangeStart(MapStatus status) {
}
/**
* 手势操作地图,设置地图状态等操作导致地图状态开始改变。
*
* @param status 地图状态改变开始时的地图状态
*
* @param reason 地图状态改变的原因
*/
//用户手势触发导致的地图状态改变,比如双击、拖拽、滑动底图
//int REASON_GESTURE = 1;
//SDK导致的地图状态改变, 比如点击缩放控件、指南针图标
//int REASON_API_ANIMATION = 2;
//开发者调用,导致的地图状态改变
//int REASON_DEVELOPER_ANIMATION = 3;
@Override
public void onMapStatusChangeStart(MapStatus status, int reason) {
}
/**
* 地图状态变化中
*
* @param status 当前地图状态
*/
@Override
public void onMapStatusChange(MapStatus status) {
}
/**
* 地图状态改变结束
*
* @param status 地图状态改变结束后的地图状态
*/
@Override
public void onMapStatusChangeFinish(MapStatus status) {
}
};
//设置地图状态监听
mBaiduMap.setOnMapStatusChangeListener(listener);

地图单击事件监听接口:

BaiduMap.OnMapClickListener listener = new BaiduMap.OnMapClickListener() {
/**
* 地图单击事件回调函数
*
* @param point 点击的地理坐标
*/
@Override
public void onMapClick(LatLng point) {
}
/**
* 地图内 Poi 单击事件回调函数
*
* @param mapPoi 点击的 poi 信息
*/
@Override
public void onMapPoiClick(MapPoi mapPoi) {
}
};
//设置地图单击事件监听
mBaiduMap.setOnMapClickListener(listener);

地图双击事件监听接口:

BaiduMap.OnMapDoubleClickListener listener = new BaiduMap.OnMapDoubleClickListener() {
/**
* 地图双击事件监听回调函数
*
* @param point 双击的地理坐标
*/
@Override
public void onMapDoubleClick(LatLng point) {
}
};
//设置地图双击事件监听
mBaiduMap.setOnMapDoubleClickListener(listener);

地图长按事件监听接口:

BaiduMap.OnMapLongClickListener listener = new BaiduMap.OnMapLongClickListener() {
/**
* 地图长按事件监听回调函数
*
* @param point 长按的地理坐标
*/
@Override
public 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 触摸事件
*/
@Override
public void onTouch(MotionEvent motionEvent) {
}
};
//设置触摸地图事件监听者
mBaiduMap.setOnMapTouchListener(listener);

地图加载完成回调接口:

BaiduMap.OnMapLoadedCallback callback = new BaiduMap.OnMapLoadedCallback() {
/**
* 地图加载完成回调函数
*/
@Override
public void onMapLoaded() {
}
};
//设置地图加载完成回调
mBaiduMap.setOnMapLoadedCallback(callback);

地图渲染完成回调接口:

自4.1.0起,增加地图渲染完成的监听接口onMapRenderFinished(),每次对地图有操作时,绘制完成时调用。

BaiduMap.OnMapRenderCallback callback = new BaiduMap.OnMapRenderCallback() {
/**
* 地图渲染完成回调函数
*/
@Override
public void onMapRenderFinished() {
}
};
//设置地图渲染完成回调
mBaiduMap.setOnMapRenderCallbadk(callback);

地图截屏回调接口:

BaiduMap.SnapshotReadyCallback callback = new BaiduMap.SnapshotReadyCallback() {
/**
* 地图截屏回调接口
*
* @param snapshot 截屏返回的 bitmap 数据
*/
@Override
public void onSnapshotReady(Bitmap snapshot) {
}
};
/**
* 发起截图请求
*
* @param callback 截图完成后的回调
*/
mBaiduMap.snapshot(callback);

地图定位图标点击事件监听接口:

注意:确保开启定位图层

BaiduMap.OnMyLocationClickListener listener = new BaiduMap.OnMyLocationClickListener() {
/**
* 地图定位图标点击事件监听函数
*/
@Override
public boolean onMyLocationClick() {
return false;
}
};
//设置定位图标点击事件监听
mBaiduMap.setOnMyLocationClickListener(listener);
对线和标注引入事件分发机制

自V4.1.0起,加入事件处理机制,对于Polyline和Marker的点击事件,开发者可以通过相关回调接口捕获处理。示例如下:

Marker点击事件接口:

BaiduMap.OnMarkerClickListener listener = new BaiduMap.OnMarkerClickListener() {
/**
* 地图 Marker 覆盖物点击事件监听函数
* @param marker 被点击的 marker
*/
@Override
public 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
*/
@Override
public boolean onPolylineClick(Polyline polyline) {
return false;//是否捕获点击事件
}
};
//设置地图 Polyline 覆盖物点击事件监听
mBaiduMap.setOnPolylineClickListener(listener);

当开发者对上述点击不处理时,向下传递,等同于地图点击事件,可由OnMapClickListener捕获。

上一篇

控件和手势

下一篇

方法交互

本篇文章对您是否有帮助?