android百度地图:地图定位
16lz
2021-01-26
使用百度地图定位功能重要的几个类:
LocationClient:定位的主力
LocationClientOption:设置定位参数包括:定位模式(单次定位,定时定位),返回坐标类型,是否打开GPS等等
LocationData:定位信息,包括:accuracy 定位精度、direction 定位时的gps角度、latitude 维度、longitude 经度、satellitesNum 卫星数目、speed gps定位时的速度
BDLocationListener:监听定位,LocationClient.setListener(BDLocationListener)。BDLocationListener接口有2个方法需要实现:接收异步返回的定位结果和接收异步返回的POI查询结果,参数均是BDLocation类型参数。
BDLocation:触发BDLocationListener时得到的参数。
MyLocationOverlay:显示用户当前位置的Overlay,通过覆盖方法dispatchTap()处理当前位置的点击事件。MyLocationOverlay不绑定位置数据来源,可通过 setData(LocationData)方法设置位置信息,通过setMarker(marker)更新位置图标(marker为null则使用默认图标)。
步骤:
定位init:
mLocClient = new LocationClient( this ); locData = new LocationData(); mLocClient.registerLocationListener( myListener );//myListener为后面步骤完成监听的MyLocationListenner类 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);//打开gps option.setCoorType("bd09ll"); //设置坐标类型 option.setScanSpan(5000); mLocClient.setLocOption(option); mLocClient.start();
设置图层:
//定位图层初始化myLocationOverlay = new LocationOverlay(mMapView);//设置定位数据 myLocationOverlay.setData(locData);//也可调用myLocationOverlay.getMyLocation()获取当前图层的坐标信息 //添加定位图层mMapView.getOverlays().add(myLocationOverlay);//开启定位图层接受方向数据功能,当定位数据中有方向时,定位图标会旋转至该方向 or disableCampass()myLocationOverlay.enableCompass();//修改定位数据后刷新图层生效mMapView.refresh();
定位动作:
mLocClient.requestLocation();
定位完成后由图层设置图标:
myLocationOverlay.setMarker(marker); //修改图层,需要刷新MapView生效 mMapView.refresh();
完成监听:
public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { if (location == null || isLocationClientStop) return ; locData.latitude = location.getLatitude(); locData.longitude = location.getLongitude(); //如果不显示定位精度圈,将accuracy赋值为0即可 locData.accuracy = location.getRadius(); locData.direction = location.getDerect(); //更新定位数据 myLocationOverlay.setData(locData); //更新图层数据执行刷新后生效 mMapView.refresh(); } public void onReceivePoi(BDLocation poiLocation) { if (poiLocation == null){ return ; } } }
图层自定义:
//继承MyLocationOverlay重写dispatchTap实现点击处理 public class LocationOverlay extends MyLocationOverlay{ public LocationOverlay(MapView mapView) { super(mapView); // TODO Auto-generated constructor stub } @Override protected boolean dispatchTap() { // TODO Auto-generated method stub //处理点击事件 return true; } }
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- 一句话锁定MySQL数据占用元凶
- 使用JTDS连接sqlserver数据库
- 【Storage】数据存储概述
- Android(安卓)UI美化之Shape Drawable的使用
- Android(安卓)给CheckBox设置背景
- 安卓的简单笔记
- android:PopupWindow的使用
- 【Android】MediaPlayer使用方法简单介绍