实现百度定位

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实时定位




猜你喜欢

转载自blog.csdn.net/zqj861791241/article/details/79742937