百度地图SDK版本:v3.4
实现功能:在地图上显示定位
准备工作:
把整个SDK下下来,demo里相关的.jar,.so(放在\lib\armeabi下)文件引入工程;
按照官网说的把权限,key,service加到.xml文件里;
需要一个Application,初始化context。
主要类:
LocationClientOption:
LocationClientOption option = new LocationClientOption(); option.setOpenGps(false); option.setCoorType("bd09ll"); option.setIsNeedAddress(true); option.setLocationMode(LocationMode.Battery_Saving);
option.setScanSpan(5000); //每隔5s自动定位
BDLocationListener:
BDLocationListener mListener = new BDLocationListener() { @Override public void onReceiveLocation(BDLocation location) { if (location == null || mapView == null) return; address = location.getAddrStr(); latitude = location.getLatitude(); longitude = location.getLongitude(); radius = location.getRadius(); point = new LatLng(latitude, longitude); MyLocationData locData = new MyLocationData.Builder() .accuracy(radius).latitude(latitude) .longitude(longitude).build(); baiduMap.setMyLocationData(locData); if (isFirstLoc) { isFirstLoc = false; MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(point); baiduMap.animateMapStatus(u); bt.setEnabled(true); } }
};
LocationClient:
LocationClient mLocationClient = new LocationClient(getApplicationContext(), option); mLocationClient.registerLocationListener(mListener); mLocationClient.start(); mLocationClient.requestLocation(); //请求定位
MapView:
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dip" android:clickable="false" />
MapView mapView = (MapView) findViewById(R.id.bmapView);
BaiduMap:
BaiduMap baiduMap = mapView.getMap(); baiduMap.setMyLocationEnabled(true); baiduMap.setMyLocationConfigeration(new MyLocationConfiguration( MyLocationConfiguration.LocationMode.FOLLOWING, false, null));
需要注意顺序
@Override protected void onDestroy() { mLocationClient.stop(); baiduMap.setMyLocationEnabled(false); mapView.onDestroy(); mapView = null; super.onDestroy(); }