前期的配置啥的就不说了,主要是上代码。
private MapView mMapView = null;
public BaiduMap mBaiduMap = null;
private LocationClient mLocationClient = null;
public BDLocationListener mListener = new MyLocationListener();
private void initMapView() {
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
mMapView.showZoomControls(false);//屏蔽百度地图的放大按钮
// 获取百度地图兵进行当前位置定位---------------------
mBaiduMap.setMyLocationEnabled(true);
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(16).build()));
mLocationClient = new LocationClient(mContext);
mLocationClient.registerLocationListener(mListener);
mBaiduMap.setMyLocationConfigeration(
new MyLocationConfiguration(MyLocationConfiguration.LocationMode.FOLLOWING, true, null));
initLocation();
}
//设置定位的模式 坐标,需不需要开GPS等
private void initLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);
option.setCoorType("bd09ll");
// option.setScanSpan(0);
// option.setIsNeedAddress(true);
option.setOpenGps(true);
// option.setIsNeedLocationDescribe(true);
mLocationClient.setLocOption(option);
}
//定位当前位置-----------------------------------
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// TODO Auto-generated method stub
if (location == null) {
return;
}
main_BDlocation = location;
MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius()).direction(100)
.latitude(location.getLatitude()).longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
}
}
}