百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能

百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能

1、要完成定位功能,不光是要下载百度地图SDK(baidumapapi_v3_2_0.jar ;libBaiduMapSDK_v3_2_0_15.so),还需要下载百度的定位SDK(locSDK_4.2.jar;liblocSDK4d.so),需要到官网下载如上述的库和jar包。并且需要将jar包右键添加到build path中

2、需要在manifest.xml文件中添加需要的key,service以及权限。如果没有添加service。则定位服务无法启动,会造成回调onReceiveLocation 无法运行

下面我们直接来看代码:

在acticity中主要代码如下:

/** * 定位的客户端 */ private LocationClient mLocationClient; /** * 定位的监听器 */ public MyLocationListener mMyLocationListener; /** * 当前定位的模式 */ private LocationMode mCurrentMode = LocationMode.NORMAL; /*** * 是否是第一次定位 */ private volatile boolean isFristLocation = true; /*** 最新一次的经纬度*/private double mCurrentLantitude;private double mCurrentLongitude;/*** 当前的精度*/private float mCurrentAccracy;

//初始化定位信息private void initMyLocation(){// 定位初始化mLocationClient = new LocationClient(this);if(mLocationClient == null){Log.i(TAG, "mLocationClient is null");return;}mMyLocationListener = new MyLocationListener();mLocationClient.registerLocationListener(mMyLocationListener);// 设置定位的相关配置LocationClientOption option = new LocationClientOption();option.setOpenGps(true);// 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型option.setScanSpan(5000); //5s 定位一次mLocationClient.setLocOption(option);}

/*** 实现实时定位回调监听*/public class MyLocationListener implements BDLocationListener{@Overridepublic void onReceiveLocation(BDLocation location){Log.i(TAG, "onReceiveLocation");// map view 销毁后不在处理新接收的位置if (location == null || mMapView == null)return;// 构造定位数据MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(mXDirection).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mCurrentAccracy = location.getRadius();// 设置定位数据mBaiduMap.setMyLocationData(locData);mCurrentLantitude = location.getLatitude();mCurrentLongitude = location.getLongitude();// 设置自定义图标BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.navi_map_gps_locked); //显示的当前位置的图标资源MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);mBaiduMap.setMyLocationConfigeration(config);Log.i(TAG,"CURRENT LAT -> " + mCurrentLantitude + "; LON -> " + mCurrentLongitude);// 第一次定位时,,将地图位置移动到当前位置if (isFristLocation){isFristLocation = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatus mMapStatus = new MapStatus.Builder().target(ll).zoom(18).build();// 定义MapStatusUpdate对象,以便描述地图状态将要发生的变化MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);// 改变地图状态mBaiduMap.setMapStatus(mMapStatusUpdate);//MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);//mBaiduMap.animateMapStatus(u);}}}

@Overrideprotected void onStart(){// 开启图层定位mBaiduMap.setMyLocationEnabled(true);if (!mLocationClient.isStarted()){mLocationClient.start();int i = mLocationClient.requestLocation();Log.i(TAG, "mLocationClient started –> " + i);}super.onStart();}@Overrideprotected void onStop(){// 关闭图层定位mBaiduMap.setMyLocationEnabled(false);mLocationClient.stop();super.onStop();}

manifest.xml文件代码如下:

像一颗深绿色的宝石镶嵌在云南大地上,

百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能

相关文章:

你感兴趣的文章:

标签云: