BaiduMap SDK-Locatioin配置和案例
程序员文章站
2022-04-20 11:56:55
...
目录
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);
推荐阅读
-
配置和官方最简案例(NetCatSource、LoggerSink)
-
Flume环境部署和配置详解及案例大全
-
前端笔记之微信小程序(三)GET请求案例&文件上传和相册API&配置https
-
SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
-
SpringBoot2.0 基础案例(06):引入JdbcTemplate,和多数据源配置
-
配置和官方最简案例(NetCatSource、LoggerSink)
-
Flume环境部署和配置详解及案例大全
-
SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
-
BaiduMap SDK-Locatioin配置和案例
-
SpringBoot2.0 基础案例(06):引入JdbcTemplate,和多数据源配置