百度地图3.0初用笔记(二)
一、自己定义定位图层配置
用百度地图进行显示定位时,能够配置定位图层的显示方式、方向及定位图标,这是通过 MyLocationConfigeration 对象来设置,并用BaiduMap 对象的 setMyLocationConfigeration 方法来设置的。更改showLocation 方法例如以下:
public void showLocation(BDLocation location) { // 构造定位数据 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发人员获取到的方向信息。顺时针0-360 .direction(location.getDirection()).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); // 设置定位数据 mBaiduMap.setMyLocationData(locData); // 默认配置 if (isFirstLoc) { isFirstLoc = false; // 设置地图缩放比例:17级100米 MapStatusUpdate ms = MapStatusUpdateFactory.zoomTo(17); mBaiduMap.setMapStatus(ms); } // 自己定义配置 MyLocationConfigeration config = new MyLocationConfigeration( mCurrentMode, false, mCurrentMarker); mBaiduMap.setMyLocationConfigeration(config); }
这里使用了自己定义配置来显示定位图层,MyLocationConfigeration 构造器有3个參数:
mode:定位图层显示方式, 默觉得 LocationMode.NORMAL 普通态
enableDirection:是否同意显示方向信息
customMarker:设置用户自己定义定位图标,能够为 null
演示样例中的 mCurrentMode和 mCurrentMarker定义及赋值例如以下:
// 定义 BitmapDescriptor mCurrentMarker = null; MyLocationConfigeration.LocationMode mCurrentMode = null; // 初始化 mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.icon_marka); mCurrentMode = MyLocationConfigeration.LocationMode.FOLLOWING;
mCurrentMode 也能够有3中方式:
COMPASS: 罗盘态,显示定位方向圈,保持定位图标在地图中心
FOLLOWING: 尾随态,保持定位图标在地图中心
NORMAL: 普通态,更新定位数据时不正确地图做不论什么操作
本例效果例如以下(FOLLOWING模式):
罗盘模式(COMPASS模式,自己定义图标为null 。显示方向为 true)例如以下:
当然。默认的NORMAL普通模式下,百度地图是不会更新的。因此不能再屏幕中心看到定位图层,但它是存在的,仅仅是没显示而已。当手动将地图移动到该位置时,能够看到定位层效果。在(一)中之所以使用了 animateMapStatus() 方法来动态地显示定位层,就是由于默认的NORMAL模式不更新地图,所以採用了手动方式来实时地显示定位图层。
二、地图事件监听
BaiduMap类有各种地图事件监听接口。比方单击、双击、截屏、地图状态改变等。通过设置对应的监听函数后,便能够响应各种地图事件。比方对于单击事件,首先定义一个OnMapClickListener 对象:
OnMapClickListener listener = new OnMapClickListener() { @Override public boolean onMapPoiClick(MapPoi poiLocation) { // TODO Auto-generated method stub return false; } @Override public void onMapClick(LatLng location) { // 弹出提示框,显示经纬度 new AlertDialog.Builder(MainActivity.this) .setTitle("Prompt") .setMessage( "MapClick:\n 纬度: " + location.latitude + "\n 经度: " + location.longitude) .setPositiveButton("OK", null).show(); } };
然后调用 mBaiduMap.setOnMapClickListener(listener) 语句来设置后,便能够监听并响应地图的单击事件。
三、地图广播监听
地图有3个广播能够监听:
网络错误广播:SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR
key 验证失败广播:SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR
key 验证失败广播,intent中附加信息错误码键:SDK_BROADTCAST_INTENT_EXTRA_INFO_KEY_ERROR_CODE
首先,须要定义一个广播监听器:
public class SDKReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action = intent.getAction(); if (action .equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) { // key 验证失败,演示样例显示提示框 new AlertDialog.Builder(MainActivity.this).setTitle("Prompt") .setMessage("The KEY of BaiduMap verifies failed") .setPositiveButton("OK", null).show(); } else if (action .equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) { // network error } else if (action .equals(SDKInitializer.SDK_BROADTCAST_INTENT_EXTRA_INFO_KEY_ERROR_CODE)) { // key 验证失败。Intent中附加信息错误码键 } } }
然后再注冊广播监听事件:
// 广播事件监听。在不须要时进行反注冊。比方销毁时 IntentFilter iFilter = new IntentFilter(); iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR); iFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR); //iFilter.addAction(SDKInitializer.SDK_BROADTCAST_INTENT_EXTRA_INFO_KEY_ERROR_CODE); mBroadcastRec = new SDKReceiver(); registerReceiver(mBroadcastRec, iFilter);
这样,便能够监听到广播事件了,比方,当地图的KEY密钥错误的时候:
当然,在不须要监听的时候能够用 unregisterReceiver(mReceiver)进行反注冊就可以。
相关文章
- 试用百度云计算平台Python环境
- 织梦企业官网小程序插件下载(支持百度小程序,微信小程序,支付宝小程序等)
- php使用服务器进行远程抓取百度网页内容
- Destoon7.0百度批量循环推送至百度
- python制作的翻译器基于爬取百度翻译【笔记思路】
- 百度sdk定位不成功,关闭定位
- 2013百度世界大会
- Python爬虫实战(二):爬百度贴吧
- python实现百度OCR图片识别
- 仿百度壁纸客户端(一)——主框架搭建,自定义Tab+ViewPager+Fragment
- 一个百度贴吧下载指定单个帖子所有回复的工具(JavaScript)实现
- atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99
- 一个百度贴吧下载指定单个帖子所有回复的工具(JavaScript)实现
- iOS百度地图:根据经纬度来添加固定标注
- AI公开课:19.03.27韦韬—百度CSS《AI产业面临的安全威胁与挑战》课堂笔记以及个人感悟
- AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟
- python采集百度图片数据呐~没有你采集不了得图,只有你不想要
- vue加百度统计代码(亲测有效)
- ubuntu14.04安装百度云Bcloud
- 测试开发之Vue学习笔记-H5实例百度音乐
- go xpath 百度
- 百度「文心一言」阿里「通义千问」腾讯的AI将会叫什么呢
- 测试开发之Vue学习笔记-H5实例百度音乐