浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

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

key验证事件监听

SDK初始化时会自动掉调用Manifest中添加的开发密钥进行鉴权,鉴权结果以广播的形式回馈,开发者可以监听相关广播并作出处理。使用方法如下:

1Manifest.xml
<application>
    android:name="baidumapsdk.demo.DemoApplication"  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发密钥" />  
</application>
2定义广播监听器类
public class SDKReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {
            //key验证失败,做相应处理
        } else if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK)) {
            //key验证成功,做相应处理
        }
    }
}
3注册广播
IntentFilter iFilter = new IntentFilter();
iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK);
mReceiver = new SDKReceiver();
registerReceiver(mReceiver, iFilter);
4取消注册
unregisterReceiver(mReceiver);
地图事件监听

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 boolean onMapPoiClick(MapPoi mapPoi) {
        return false;
    }
};
//设置地图单击事件监听
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捕获。

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消