BaiduMap SDK-Locatioin配置和案例

目录

3. Locatioin配置

3.1 新建项目

3.2 添加jar包

3.3 配置jar到gradle文件

3.4 添加百度key

3.5 声明service组件

3.6 添加权限

4. Location案例 


3. Locatioin配置

3.1 新建项目

3.2 添加jar包

添加jar包和so库文件到项目的libs中

3.3 配置jar到gradle文件

File->Project Structure->选择moudle->切换到Dependencies->添加jar包;

3.4 添加百度key

在AnroidManifest.xml文件中添加百度key

<meta-data
      android:name="com.baidu.lbsapi.API_KEY"
      android:value="LWQSQGGAXKsehvyBC4vzmz0fGI8VpuyF" />

3.5 声明service组件

在AnroidManifest.xml文件中添加百度定位Service

  <service
       android:name="com.baidu.location.f"
       android:enabled="true"
       android:process=":remote" />

3.6 添加权限

<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

4. Location案例 

1. 设置BaiduMap显示定位图标

baiduMap.setMyLocationEnabled(true);

2. 创建定位客户端LocationClient对象

locationClient = new LocationClient(getApplicationContext());

3. 添加监听

 locationClient.registerLocationListener(new MyLocationListener());

4. 创建定位参数LocationClientOption对象和设置到定位

       LocationClientOption option = new LocationClientOption();
        option = new LocationClientOption();
        //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);
        //可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
        option.setCoorType("bd09ll");
        //可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
        option.setScanSpan(3000);
        //可选,设置是否需要地址信息,默认不需要
        option.setIsNeedAddress(true);
        //可选,设置是否需要地址描述
        option.setIsNeedLocationDescribe(true);
        //可选,设置是否需要设备方向结果
        option.setNeedDeviceDirect(false);
        //可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
        option.setLocationNotify(false);
        //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
        option.setIgnoreKillProcess(true);
        //可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
        option.setIsNeedLocationDescribe(true);
        //可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
        option.setIsNeedLocationPoiList(true);
        //可选,默认false,设置是否收集CRASH信息,默认收集
        option.SetIgnoreCacheException(false);
        //可选,默认false,设置是否开启Gps定位
        option.setOpenGps(true);
        //可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
        option.setIsNeedAltitude(false);

        locationClient.setLocOption(option);

5. 开启定位

locationClient.start();

6. 监听和回调函数

private class MyLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
            if (bdLocation != null && mapView != null) {
                //设置定位图标信息
                MyLocationData myLocationData = new MyLocationData.Builder().accuracy(bdLocation.getRadius()).latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build();
                baiduMap.setMyLocationData(myLocationData);

                //设置地图的缩放级别、中心坐标
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude())).zoom(17.0f);
                baiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            }
        }
    }

7.关闭定位图层并停止定位

 locationClient.stop();
 //关闭定位图层
 baiduMap.setMyLocationEnabled(false);

猜你喜欢

转载自blog.csdn.net/niuba123456/article/details/81170378
今日推荐