android百度地图(二)之定位
16lz
2021-01-24
其实百度地图定位到设备当前位置还是比较简单的。首先是定位初始化以及设定地图配置。
private LocationClient mLocationClient;//定位的客户端private MyLocationListener mMyLocationListener;//定位的监视器private LocationMode mCurrentMode = LocationMode.NORMAL;//当前定位的模式
// 第一次定位,boolean isFristLocation = true; // 定位初始化 mLocationClient = new LocationClient(this); mMyLocationListener = new MyLocationListener(); mLocationClient.registerLocationListener(mMyLocationListener); // 设置定位的相关配置 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);// 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000);//每隔一秒进行定位 mLocationClient.setLocOption(option); mLocationClient.start();//注意,不可丢失
注意:mLocationClient.start();不要忘记。若是不要的话,定位是不能成功的,只能显示地图界面而定位失败。
其中MyLocationListener类主要是实现定位监听,这里是以一个内部类的形式实现,具体代码如下:
public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) return; // 构造定位数据 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); // 设置定位数据 mBaiduMap.setMyLocationData(locData); // 设置自定义图标BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.navi_map_gps_locked);MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker); mBaiduMap.setMyLocationConfigeration(config); // 第一次定位时,将地图位置移动到当前位置 if (isFristLocation) { isFristLocation = false;LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); mBaiduMap.animateMapStatus(u); } } }
重写onReceiveLocation()方法,首先构造并设置定位数据;设置图标以及显示模式,并设定配置。判断是否为首次定位,若为则将地图移至当前位置。
定位是比较耗电的,所以在Activity进入到相应进程的时候,MapView也要进入相应进程,而且在执行onDestroy()方法时要销毁定位和关闭定位图层。
@Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 // 退出时销毁定位 mLocationClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; }
最后的显示结果为:
更多相关文章
- Android中的数据库——SQLite
- Sqlite3 增删改查操作实例
- Android(安卓)ListView实现通讯录的例子
- Android(安卓)MediaPlayer播放prepareAsync called in state 8解
- 教你做android 上的google map 地图
- Android数据储存之SharedPreferences
- Activity之SharedPreferences探究
- Android开发:高德地图通过经纬度反编译其位置名称
- Android(安卓)表单模拟,文件上传!