一、创建应用和申请key
进入网站
应用管理-我的应用-创建应用
创建完成后,点击添加key,输入key名称,勾选SDK、WebServiceAPI,填写包名
点击‘配额管理-账户额度-配额分配’,为相应的应用接口分配配额
二、配置应用
在android/app/build.gradle中添加如下代码(注意是app文件夹下的)
dependencies {
// 地图库
implementation('com.tencent.map:tencent-map-vector-sdk:5.7.0')
// 地图组件库,包括小车平移、点聚合等组件功能,详见开发指南。
implementation('com.tencent.map:sdk-utilities:1.0.9')
}
最新版本号可参考https://lbs.qq.com/mobile/androidMapSDK/download/3dDownload
配置腾讯地图key
在android/app/src/main/AndroidManifest.xml中application标签体内加入
<meta-data android:name="TencentMapSDK" android:value="U3MBZ-EXWCT-2L2X2-VDRMF-WRVH2-QXF3M"/>
执行npm start后报错
Warning:SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered.
解决方案
file-setting-Languages&Frameworks-Android SDK-SDK Tools-CMake升级到最新版本
报错
Manifest merger failed : Attribute application@allowBackup value=(false) from AndroidManifest.xml:10:7-34 is also present at [com.tencent.map:sdk-utilities:1.0.9] AndroidManifest.xml:11:9-35 value=(true).
Android官方对于这个属性的定义是,Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性的值。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。例如通讯录、通话记录、聊天记录、锁屏密码、应用登录账号和密码等。
解决方案
删除application标签中的android:allowBackup
三、调用WebServiceAPI
本人暂时只用到了行政区划API,后续如集成了导航SDK再做补充。
由于本项目暂时未搭建后台服务器,这里采用签名校验的方式来调用。
首先将请求参数按参数名升序进行排序,再计算签名sig
sig=md5(‘请求路径’+‘?’+‘请求参数’+‘SK’)
签名校验方法详见常见问题 | 腾讯位置服务
安装依赖包
yarn add ts-md5
//引入依赖包
import { Md5 } from 'ts-md5';
const sig = Md5.hashStr('/ws/district/v1/list?key=U3MBZ-*****-*****-*****-*****-QXF3M&struct_type=1ni********************EH').toLowerCase();
axios.get('https://apis.map.qq.com/ws/district/v1/list',{
params: {
key: 'U3MBZ-*****-*****-*****-*****-QXF3M',//这里的key就是‘我的应用’中的key
'struct_type': 1,
sig,
}
}).then(res => {
if(res.status === 200) {
setList(transDistrict(res.data.result));
}
});