1.定义 定位客户端 并且用getApplicationContext()【官方推荐】初始化:
LocationClient mBdLocationManager = new LocationClient(getApplicationContext());2.为定位客户端配置定位所需要的参数:
LocationClientOption lcOption = new LocationClientOption(); //设置定位模式:高精度,低功耗,仅设备 lcOption.setLocationMode(LocationMode.Hight_Accuracy); //设置坐标系 lcOption.setCoorType("bd09ll"); //设置GPS打开 lcOption.setOpenGps(true); //设置需要地址信息 lcOption.setIsNeedAddress(true); //设置每秒更新一次位置信息 lcOption.setScanSpan(1000); //设置需要位置描述信息 lcOption.setIsNeedLocationDescribe(true); mBdLocationManager.setLocOption(lcOption);3.为位置客户端注册位置监听器并实现:
mBdLocationManager.registerLocationListener(mBdLocationListener); private BDAbstractLocationListener mBdLocationListener = new BDAbstractLocationListener() { //当位置对象为空或者因为退出而到时地图对象销毁为空时,不监听 public void onReceiveLocation(BDLocation location) { if (location == null || mMapView == null) return; Log.v("aaa","方向:" + location.getDirection() + ",纬度:" + location.getLatitude() + ",经度:" + location.getLongitude() + ",时间:" + location.getTime() + ",描述:" + location.getLocationDescribe() + ",地址:" + location.getAddrStr() + ",精度:" + location.getRadius()); } };4.定位客户端开始启动定位:
mBdLocationManager.start();5.实现定位到当前位置并且有图标:
5.1:地图对象开启定位图层: mBaiduMap.setMyLocationEnabled(true); 5.2:地图对象设置定位时的地图缩放级别(500米): mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(15.0f)); 5.3:为地图对象设置定位数据:精度,方向,经度,纬度 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) .latitude(location.getLatitude()) .longitude(location.getLongitude()) .direction(100) .build(); mBaiduMap.setMyLocationData(locData); 5.4:为地图对象配置参数:定位方式(罗盘态,跟随态,常态),是否允许显示方向,用户自定义显示图标: MyLocationConfiguration myLocConfig = new MyLocationConfiguration(locationMode, true, mLocBitmap); mBaiduMap.setMyLocationConfiguration(myLocConfig);