Android项目集成高德地图定位功能

1.在Project的build.gradle文件中配置repositories,添加maven或jcenter仓库地址

Android Studio默认会在Project的build.gradle为所有module自动添加jcenter的仓库地址,如果已存在,则不需要重复添加。Project的build.gradle文件在Project目录中位置如图所示:

配置如下

allprojects {
    repositories {
        jcenter() // 或者 mavenCentral()
    }
 }

2.在主工程的build.gradle文件配置dependencies,主工程的build.gradle文件在Project目录中位置:

定位SDK配置如下:

dependencies {
    //定位功能
    compile 'com.amap.api:location:latest.integration'
}

 3.在AndroidManifest文件下的application标签下配置高德地图的key

 <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="请输入您的用户Key"/>

4.在AndroidManifest文件下配置权限

<uses-permission android:name="android.permission.INTERNET" />  

<!--允许获取粗略位置,若用GPS实现定位小蓝点功能则必选-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

<!--允许获取设备和运营商信息,用于问题排查和网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />    

<!--允许获取网络状态,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    

<!--允许获取wifi网络信息,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

<!--允许获取wifi状态改变,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

<!--允许写入扩展存储,用于数据缓存,若无此权限则写到私有目录-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

<!--允许写设备缓存,用于问题排查-->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />  

<!--允许读设备等信息,用于问题排查-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

5. 进行合规检查

 AMapLocationClient.updatePrivacyShow(LocationActivity.this,true,true);
 AMapLocationClient.updatePrivacyAgree(LocationActivity.this,true);

具体方法说明如下: 

/**
* 更新隐私合规状态,需要在初始化地图之前完成
* @param  context: 上下文 
* @param  isContains: 隐私权政策是否包含高德开平隐私权政策  true是包含 
* @param  isShow: 隐私权政策是否弹窗展示告知用户 true是展示 
* @since  8.1.0 
*/
public static void updatePrivacyShow(Context context, boolean isContains, boolean isShow) ;
/**
 * 更新同意隐私状态,需要在初始化地图之前完成
 * @param context: 上下文
 * @param isAgree: 隐私权政策是否取得用户同意  true是用户同意
 * @since 8.1.0
 */
public static void updatePrivacyAgree(Context context, boolean isAgree) ;

6. 在Android项目的AndroidManifest.xml文件的application标签下添加如下代码

<service android:name="com.amap.api.location.APSService"></service>

每个应用都有自己单独单独定位服务

7.混淆

-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.loc.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}

 8,注意事项:()

 错误1:当报缺少定位权限 请到http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/查看错误码说明,错误详细信息:定位权限被禁用,请授予应用定位权限#1201

解决方案:在App中打开定位权限

错误2:KEY错误 请到http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/查看错误码说明,错误详细信息:auth fail:INVALID_USER_KEY#SHA1AndPackage#EB:13:3F:8B:6D:41:3F:78:10:2C:4B:18:38:69:A7:17:14:80:AC:7E:com.itcast.mobilesafe07#gsid#033015172117164499203404900010620403365#csid#c8460cb6b29043a390d0da7822e396ad#0701,KEY鉴权失败。

解决方案,查看项目的正式keystore的SHA1值是否正确,如果是使用的不是正式包,请注意调试版的SHA1值是否正确

错误3:定位服务启动失败 请到http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/查看错误码说明,错误详细信息:请检查配置文件是否配置服务,并且manifest中service标签是否配置在application标签内#1003

解决方案:需要检查AndroidManifest.xml文件下是否配置了

<service android:name="com.amap.api.location.APSService"></service> 代码

9. 高德地图定位官方文档(https://lbs.amap.com/api/android-location-sdk/guide/android-location/getlocation

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 React 中发送 POST 请求可以使用 `fetch` 函数或者 `axios` 库。下面分别介绍如何配置这两种方法来处理服务器返回的错误信息。 ### 使用 fetch 函数 使用 `fetch` 函数发送 POST 请求时,可以在 `then` 方法中检查服务器返回的状态码,如果状态码为 200,则表示请求成功,可以使用 `json` 方法将响应解析为 JSON 格式的数据。如果状态码为其他值,则表示请求失败,可以使用 `throw` 抛出错误,并将错误信息包装成对象。 例如,以下代码展示了如何使用 `fetch` 函数发送 POST 请求,并处理服务器返回的错误信息: ```javascript fetch(url, { method: 'POST', body: JSON.stringify(data), headers: { 'Content-Type': 'application/json' } }) .then(response => { if (response.ok) { return response.json(); } else { throw new Error('服务器返回错误码:' + response.status); } }) .then(data => { // 处理响应数据 }) .catch(error => { console.error(error); // 处理错误信息 }); ``` 在上述代码中,如果服务器返回的状态码不为 200,则会抛出一个错误,错误信息为 `服务器返回错误码:{status}`。你可以根据需要修改错误信息。 ### 使用 axios 库 使用 `axios` 库发送 POST 请求时,可以在 `catch` 方法中捕获服务器返回的错误信息。如果请求成功,则可以在 `then` 方法中获取响应数据。 例如,以下代码展示了如何使用 `axios` 库发送 POST 请求,并处理服务器返回的错误信息: ```javascript axios.post(url, data) .then(response => { // 处理响应数据 }) .catch(error => { console.error(error.response); // 处理错误信息 }); ``` 在上述代码中,如果服务器返回的状态码不为 200,则会在 `catch` 方法中捕获错误信息,错误信息包含在 `error.response` 对象中。你可以根据需要打印或处理这些错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值