Android 按照步骤接入百度地图API,定位显示不了解决办法
Posted 路 宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 按照步骤接入百度地图API,定位显示不了解决办法相关的知识,希望对你有一定的参考价值。
前言:显示地图按照官方给出的文档,即可显示出来,到了显示定位就出现问题了。
按照给出步骤把相关代码写到项目中,定位坐标怎么也显示不出来。怎么查阅各种资料,终于解决了问题。
定位SDK监听器类和官方的不太一样:
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// MapView 销毁后不在处理新接收的位置
if (location == null || bmapView == null) {
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())// 设置定位数据的精度信息,单位:米
.direction(location.getDirection()) // 此处设置开发者获取到的方向信息,顺时针0-360
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.build();
// 设置定位数据, 只有先允许定位图层后设置数据才会生效
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(latLng).zoom(20.0f);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
}
}
}
替换成这个代码,就能显示坐标了,但是我的坐标发现在几内亚湾,定位到非洲去了。。
而且后台会报这个异常:
这是因为百度地图API要我们动态请求权限。
在app的build.gralde中的android闭包下增加如下jdk1.8的使用代码:
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
然后在dependencies闭包下增加如下依赖
//动态权限请求
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation "io.reactivex.rxjava2:rxjava:2.0.0"
同步之后,要在Activity中写检查权限的方法checkVersion():
/**
* 检查版本
*/
private void checkVersion() {
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.O){
RxPermissions rxPermissions = new RxPermissions(this);
rxPermissions.request(Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(granted -> {
if (granted) {//申请成功
//发起连续定位请求
initlocation();// 定位初始化
} else {//申请失败
Toast.makeText(MainActivity.this,"权限未开启",Toast.LENGTH_SHORT).show();
}
});
}else {
initlocation();// 定位初始化
}
}
最后要在清单文件中添加一个静态权限:
<!--读取手机状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
这样定位问题就解决了,做下笔记,防止这种问题再次出现,有不当之处可以在评论区指出~
以上是关于Android 按照步骤接入百度地图API,定位显示不了解决办法的主要内容,如果未能解决你的问题,请参考以下文章