private MapView mMapView; private BaiduMap bdMap; private MyLocationConfiguration.LocationMode mCurrentMode; public LocationClient mLocationClient = null;
boolean firstLoc=true; //是否首次定位
private LatLng mLatLng;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); initView(); initData(); } void initView() { mMapView = findViewById(R.id.bmapView); bdMap = mMapView.getMap(); mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL; //默认为 LocationMode.NORMAL 普通态 NORMAL,FOLLOWING, COMPASS; // mCurrentMode = MyLocationConfiguration.LocationMode.COMPASS; //定位罗盘态 BitmapDescriptor bitmap1= BitmapDescriptorFactory .fromResource(R.drawable.education_show); MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, bitmap1); bdMap.setMyLocationConfiguration(config); } void initData() { bdMap.setMyLocationEnabled(true);//开启定位图层 mLocationClient = new LocationClient(getApplicationContext()); LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置高精度定位定位模式 option.setCoorType("bd09ll");//坐标类型 option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要 option.setOpenGps(true);//打开Gps option.setScanSpan(1000);//1000毫秒定位一次 option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到 mLocationClient.setLocOption(option); mLocationClient.start();//启动定位 mLocationClient.registerLocationListener(mLocationClientListener); } private BDLocationListener mLocationClientListener =new BDLocationListener() { @Override public void onReceiveLocation(BDLocation location) { // TODO Auto-generated method stub if(location==null) return; //将获取的location信息给百度map MyLocationData data = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100) .latitude(location.getLatitude()) .longitude(location.getLongitude()) .build(); bdMap.setMyLocationData(data); mLatLng = new LatLng(location.getLatitude(), location.getLongitude()); if (firstLoc) { //获取经纬度 MapStatusUpdate status = MapStatusUpdateFactory.newLatLng(mLatLng); bdMap.animateMapStatus(status);//动画的方式到中间 firstLoc = false; Toast.makeText(SureActivity.this,"位置:" + location.getAddrStr(),Toast.LENGTH_LONG).show(); } } }; protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mLocationClient.stop(); bdMap.setMyLocationEnabled(false); mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); }清单文件中加入,实现实时定位
<service android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"></service>
前提是根据百度官方文档配置完成后
可实现GPS实时定位