Android 按照步骤接入百度地图API,定位显示不了解决办法

简介: 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"/>

这样定位问题就解决了,做下笔记,防止这种问题再次出现,有不当之处可以在评论区指出~


目录
相关文章
|
11月前
|
存储 机器学习/深度学习 API
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
1702 31
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
|
API 网络架构
【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法
【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法
499 1
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
795 0
|
定位技术 Android开发 iOS开发
引入百度地图,安卓出现白屏问题
引入百度地图,安卓出现白屏问题
518 57
|
新能源 API
百科-百度免费API接口教程
该接口用于从百度百科获取指定名词的基础解释。支持POST或GET请求,需提供用户ID、用户KEY及查询内容。返回状态码和解释内容或错误提示。示例:https://cn.apihz.cn/api/zici/baikebaidu.php?id=88888888&key=88888888&words=汽车。建议使用个人ID与KEY以享受更高调用频次。
2449 4
|
API
表情包-百度版免费API接口教程
该接口用于通过指定关键词从百度渠道获取表情包,支持POST或GET请求。需提供用户ID和KEY,可选参数包括关键词、页码及结果数量。返回数据包含状态码、信息提示、结果集等。示例中ID与KEY为公共测试用,建议使用个人ID与KEY以享受更高调用频率。
1871 4
|
API
通用图片搜索-百度源免费API接口教程
该接口用于搜索百度图片,支持通过关键词、页码、结果数量等参数获取图片搜索结果。请求方式为POST或GET,需提供用户ID和KEY,可选参数包括关键词、页码、结果数量及返回源类型。返回结果包含状态码、信息提示、结果集、当前页码、最大页码和结果数量。示例中提供了GET和POST请求方法及返回数据示例。
2281 4
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
1634 4
Android性能测试——发现和定位内存泄露和卡顿
|
人工智能 API
通过API调用通义千问时出现DataInspectionFailed的解决办法(玄学版)
在使用qwen-plus API进行长文本翻译时,遇到了DataInspectionFailed错误,提示输入数据可能包含不当内容。尽管确认文本无敏感内容,但误判依然发生。通过将每个分段的字符数从1000降低到700,问题得以解决。建议在处理长文本时,减少每次请求的字符数以避免误判。
6594 6
|
JavaScript 前端开发 定位技术
百度地图JavaScript API v2.0创建地图
百度地图JavaScript API v2.0创建地图
339 0

热门文章

最新文章