本帖最后由 liuwei 于 2016-9-28 12:15 编辑
百度地图事件** Key验证事件** 在工程Manifest中添加相应的开发密钥,SDK会自动去调用这个开发密钥,相应的鉴权状态将已广播的形式反馈给开发者。具体使用方法如下所示: 开发密钥位置: <applicationandroid:name="baidumapsdk.demo.DemoApplication" <meta-data android:name="com.baidu.lbsapi.API_KEY"android:value="开发密钥" /></application> 广播**方法: 第一步、定义广播**者 public classSDKReceiver extends BroadcastReceiver { public void onReceive(Context context,Intent intent) { String action = intent.getAction(); if(action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)){ // key 验证失败,相应处理 } } } 第二步、注册广播**者 IntentFilteriFilter = new IntentFilter();iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);iFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);mReceiver = new SDKReceiver(); registerReceiver(mReceiver, iFilter); 第三步、不使用地图 SDK 时,取消广播** unregisterReceiver(mReceiver); 一般事件** 自v3.0.0版本起,取消了BMapManager方法,即初始化工程不再需要开发者自己完成,而是由SDK内部自行实现。相应的事件**,采用了广播机制,具体使用方法如下所示: 第一步、定义广播**者; public classSDKReceiver extends BroadcastReceiver { public void onReceive(Context context,Intent intent) { String action = intent.getAction();if(action.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {// 网络出错,相应处理 } } } 第二步、注册广播**者; IntentFilteriFilter = new IntentFilter();iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);iFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);mReceiver = new SDKReceiver(); registerReceiver(mReceiver, iFilter); 第三步、不使用地图SDK时,取消广播**; unregisterReceiver(mReceiver); 地图事件** 百度地图支持各种事件**,提供了相应的事件**方法,具体**接口如下: 地图状态改变相关接口: OnMapStatusChangeListenerlistener = new OnMapStatusChangeListener() { /** * 手势操作地图,设置地图状态等操作导致地图状态开始改变。 * @param status 地图状态改变开始时的地图状态 */ public void onMapStatusChangeStart(MapStatus status){ } /** * 地图状态变化中 * @param status 当前地图状态 */ public voidonMapStatusChange(MapStatus status){ } /** * 地图状态改变结束 *@param status 地图状态改变结束后的地图状态 */ public voidonMapStatusChangeFinish(MapStatus status){ } }; 地图单击事件**接口: OnMapClickListenerlistener = new OnMapClickListener() { /** * 地图单击事件回调函数 * @param point 点击的地理坐标 */ public voidonMapClick(LatLng point){ } /** * 地图内 Poi 单击事件回调函数 * @param poi 点击的 poi 信息 */ public boolean onMapPoiClick(MapPoi poi){ } }; 地图加载完成回调接口: OnMapLoadedCallbackcallback = new OnMapLoadedCallback() { /** * 地图加载完成回调函数 */ public void onMapLoaded(){ } }; 地图双击事件**接口: OnMapDoubleClickListenerlistener = new OnMapDoubleClickListener() { /** * 地图双击事件**回调函数 * @param point 双击的地理坐标 */ public void onMapDoubleClick(LatLng point){ } }; 地图长按事件**接口: OnMapLongClickListenerlistener = new OnMapLongClickListener() { /** * 地图长按事件**回调函数 * @param point 长按的地理坐标 */ public voidonMapLongClick(LatLng point){ } }; 地图 Marker 覆盖物点击事件**接口: OnMarkerClickListenerlistener = new OnMarkerClickListener() { /** * 地图 Marker 覆盖物点击事件**函数 * @param marker 被点击的 marker */ public boolean onMarkerClick(Marker marker){ } }; 地图定位图标点击事件**接口: OnMyLocationClickListenerlistener = new OnMyLocationClickListener() { /** * 地图定位图标点击事件**函数 */ public boolean onMyLocationClick(){ }}; 地图截屏回调接口: SnapshotReadyCallbackcallback = new SnapshotReadyCallback() { /** * 地图截屏回调接口 * @param snapshot 截屏返回的 bitmap 数据 */ public void **napshotReady(Bitmap snapshot){ } }; 触摸地图回调接口: mBaiduMap.setOnMapTouchListener(newOnMapTouchListener() { /** * 当用户触摸地图时回调函数* @param event 触摸事件 */ public void onTouch(MotionEventevent) { } });
|