前言:腾讯位置服务为各类应用厂商和开发者提供领先的LBS服务和解决方案;有针对Web应用的JavaScript API, 适合手机端Native APP的各种SDK, WebService接口,适合小程序的插件和各类地图API等。
目录
定位SDK (Android定位 SDK | IOS定位 SDK)
地图SDK(Android地图SDK | IOS地图SDK)
接入指南
接入步骤:(快速通道:腾讯位置官网)
作为开发者应该如何选择对应的API?
地图组件(H5)
手机组件H5,完整应用,不需要开发者进行开发,——》参考文档
位置展示组件,可以在地图上展示一个或多个位置点。数据来源支持三种方式:通过URL传递数据、地图检索数据和自有定制数据。 可以展示每个位置点的名称、地址等详细信息,也可查看该位置点的街景信息或发起到该位置的路线规划。
例如:
调用地址:
https://apis.map.qq.com/tools/poimarker?type=0&marker=coord:39.96554,116.26719;title:成都;addr:北京市海淀区复兴路32号院|coord:39.87803,116.19025;title:成都园;addr:北京市丰台区射击场路15号北京园博园|coord:39.88129,116.27062;title:老成都;addr:北京市丰台区岳各庄梅市口路西府景园六号楼底商|coord:39.9982,116.19015;title:北京园博园成都园;addr:北京市丰台区园博园内&key=yourkey&referer=myapp
地图javaScript API
用于浏览器端地图显示与应用,兼容手机端及PC端——》参考文档
JavaScript API V2可用于在网站中加入交互性强的街景、地图,能很好地支持PC及手机设备,身材小巧,动画效果顺滑流畅,动感十足,提供地图操作、标注、地点搜索、出行规划、地址解析、街景等接口,功能丰富,并免费开放各种附加工具库。JavaScript API V2是免费服务,任何提供免费访问的网站都可以调用。
可视化组件是JSAPI的附加库,在加载JavaScript API服务请求中通过libraries参数指明引入
<script charset=“utf-8” src=“https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY&libraries=visualization”>
接口均定义在qq.maps.visualization全局变量中,需在地图初始化完成之后使用
-
var map =
new qq.maps.Map(container, mapOpts);
-
var dots =
new qq.maps.visualization.Dots({
-
map: map
-
});
-
dots.setData(data);
例如:我们要显示以北京的天安门为中心的 603x300 地图:
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
<title>孙叫兽测试天安门地图
</title>
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
-
<style type="text/css">
-
html,
body{
-
width:
100%;
-
height:
100%;
-
}
-
*{
-
margin:
0px;
-
padding:
0px;
-
}
-
body,
button,
input,
select,
textarea {
-
font:
12px/
16px Verdana, Helvetica, Arial, sans-serif;
-
}
-
p{
-
width:
603px;
-
padding-top:
3px;
-
overflow:hidden;
-
}
-
.btn{
-
width:
142px;
-
}
-
#container{
-
width:
100%;
-
height:
100%;
-
}
-
</style>
-
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77">
</script>
-
<script>
-
-
window.onload =
function(){
-
-
//直接加载地图
-
-
-
//初始化地图函数 自定义函数名init
-
function init() {
-
//定义map变量 调用 qq.maps.Map() 构造函数 获取地图显示容器
-
var map =
new qq.maps.Map(
document.getElementById(
"container"), {
-
center:
new qq.maps.LatLng(
39.916527,
116.397128),
// 地图的中心地理坐标。
-
zoom:
8
// 地图的中心地理坐标。
-
});
-
}
-
-
//调用初始化函数地图
-
init();
-
-
-
}
-
</script>
-
</head>
-
<body>
-
<!-- 定义地图显示容器 -->
-
<div id="container">
</div>
-
</body>
-
</html>
效果:
加载地图API:
方式一:页面直接引入。
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>
方式二:异步加载 JavaScript API
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
<title>异步加载地图
</title>
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
-
<style type="text/css">
-
html,
body{
-
width:
100%;
-
height:
100%;
-
}
-
*{
-
margin:
0px;
-
padding:
0px;
-
}
-
body,
button,
input,
select,
textarea {
-
font:
12px/
16px Verdana, Helvetica, Arial, sans-serif;
-
}
-
p{
-
width:
603px;
-
padding-top:
3px;
-
overflow:hidden;
-
}
-
#container{
-
width:
100%;
-
height:
100%;
-
}
-
.btn{
-
width:
142px;
-
}
-
</style>
-
<script>
-
-
-
function init() {
-
//设置地图中心点
-
var myLatlng =
new qq.maps.LatLng(
39.916527,
116.397128);
-
//定义工厂模式函数
-
var myOptions = {
-
zoom:
8,
//设置地图缩放级别
-
center: myLatlng,
//设置中心点样式
-
mapTypeId: qq.maps.MapTypeId.ROADMAP
//设置地图样式详情参见MapType
-
}
-
//获取dom元素添加地图信息
-
var map =
new qq.maps.Map(
document.getElementById(
"container"), myOptions);
-
}
-
//异步加载地图库函数文件
-
function loadScript() {
-
//创建script标签
-
var script =
document.createElement(
"script");
-
//设置标签的type属性
-
script.type =
"text/javascript";
-
//设置标签的链接地址
-
script.src =
"https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&callback=init";
-
//添加标签到dom
-
document.body.appendChild(script);
-
}
-
-
window.onload = loadScript;
// dom文档加载结束开始加载 此段代码
-
</script>
-
</head>
-
<body>
-
<div id="container">
</div>
-
</body>
-
</html>
效果:
有如下功能:
叠加覆盖物 | 强大的附加库 | 定义自己的地图 |
提供点标注、折线、圆、多边形、信息窗 口等覆盖物,用户可以定义个性化地图。 |
提供了鼠标绘制工具箱、几何运算、坐标 转换、文本输入提示等附加库。 |
支持用户可以自定义地图类型,使用自己 的数据或图片,自定义切图、取图规则。 |
定位SDK (Android定位 SDK | IOS定位 SDK)
腾讯地图定位SDK是一套基于Android 4.1及以上版本设备的应用程序接口。通过该接口,您可以轻松使用腾讯地图定位服务,构建LBS应用程序。
定位SDK包括GPS定位与网络定位,实现了经纬度坐标偏转与当前位置的POI名称、地址或者行政区划的查询。采用了移动缓存策略,节省流量与电量。
定位SDK是提供给具有一定Android编程经验和了解面向对象概念的开发者使用。
本android示例采用后台定位方式:
当用户进程出于后台时,有时也会有需求使用定位服务,但应用处于后台时Android系统会对定位做诸多限制。因此我们通过设置前台Service的方式来提高进程级别,使定位服务由后台转向前台。
1.manifest增加Service声明
<service android:name="com.tencent.map.geolocation.s" />
2.在启动定位之前,调用enableForegroundLocation
-
mLocationManager.enableForegroundLocation(LOC_NOTIFICATIONID, buildNotification());
-
mLocationManager.requestLocationUpdates(request,
this, getMainLooper());
构建Notification(其中enableForegroundLocation的参数分别是一个整形的NotificationID,一个是Notification的实例。)
-
private Notification buildNotification() {
-
Notification.Builder builder =
null;
-
Notification notification =
null;
-
if (android.os.Build.VERSION.SDK_INT >=
26) {
-
//Android O上对Notification进行了修改,如果设置的targetSDKVersion>=26建议使用此种方式创建通知栏
-
if (notificationManager ==
null) {
-
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
-
}
-
String channelId = getPackageName();
-
if (!isCreateChannel) {NotificationChannel notificationChannel =
new NotificationChannel(channelId,
-
NOTIFICATION_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
-
notificationChannel.enableLights(
true);
//是否在桌面icon右上角展示小圆点
-
notificationChannel.setLightColor(Color.BLUE);
//小圆点颜色
-
notificationChannel.setShowBadge(
true);
//是否在久按桌面图标时显示此渠道的通知
-
notificationManager.createNotificationChannel(notificationChannel);
-
isCreateChannel =
true;
-
}
-
builder =
new Notification.Builder(getApplicationContext(), channelId);
-
}
else {
-
builder =
new Notification.Builder(getApplicationContext());
-
}
-
builder.setSmallIcon(R.drawable.ic_launcher)
-
.setContentTitle(
"LocationDemo")
-
.setContentText(
"正在后台运行")
-
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
-
.setWhen(System.currentTimeMillis());
-
-
if (android.os.Build.VERSION.SDK_INT >=
16) {
-
notification = builder.build();
-
}
else {
-
notification = builder.getNotification();
-
}
-
return notification;
-
}
3.在停止定位之后,调用disableForegroundLocation停止前台服务
-
LocationManager.removeUpdates(
this);
-
mLocationManager.disableForegroundLocation(
true);
权限配置(请在manifest文件下配置如下权限:)
-
<!-- 通过GPS得到精确位置 -->
-
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-
<!-- 通过网络得到粗略位置 -->
-
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-
<!-- 访问网络. 某些位置信息需要从网络服务器获取 -->
-
<uses-permission android:name="android.permission.INTERNET" />
-
<!-- 访问WiFi状态. 需要WiFi信息用于网络定位 -->
-
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-
<!-- 修改WiFi状态. 发起WiFi扫描, 需要WiFi信息用于网络定位 -->
-
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
-
<!-- 访问网络状态, 检测网络的可用性. 需要网络运营商相关信息用于网络定位 -->
-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-
<!-- 访问网络的变化, 需要某些信息用于网络定位 -->
-
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
-
<!-- 访问手机当前状态, 需要device id用于网络定位 -->
-
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
-
<!-- 支持A-GPS辅助定位 -->
-
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
-
<!-- 用于 log 日志 -->
-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
说明:随着Android版本的升级,权限使用方面也有变动,具体可参考实用文档中针对Android各个版本的适配文档。
定位服务是一个重度依赖用户授权的功能,因此在App设计时必须充分考虑获取用户权限的方式,合理引导用户授予权限。
腾讯 iOS 定位 SDK 提供了不依赖于地图定位的定位功能,开发者可以无地图显示的场景中便捷地为应用程序添加定位功能。 iOS定位SDK提供了单次定位、连续定位、逆地理信息等功能。兼容iOS7.0 及以上版本。
定位权限申请
(1) 需要在https://lbs.qq.com/dev/console/key/add上面申请一个apiKey,对应在TencentLBSLocationManager的apiKey属性上设置才可以使用。
(2) 需要在info.plist中追加 NSLocationWhenInUseUsageDescription 或NSLocationAlwaysUsageDescription 字段,以申请定位权限。
(3) allowsBackgroundLocationUpdates表示是否允许后台定位。默认为 NO。只在iOS 9.0 及以后起作用。设置为 YES 的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。注意,如果不设置为YES,不需要申请该权限,否则会审核不通过!
引入定位包: 将库文件 TencentLBS.framework 拷贝到您的APP的工程目录下,在Xcode的Target中选择 “Build Phases”->“Link Binary With Libraries”->“Add”->“Add Other…”-> 选择 TencentLBS.framework 目录并添加。
引入系统库文件:仿照上面的操作 ("Add"的时候直接在列表中查找选择 )添加系统库libz.1.2.5.tbd 在 Build Setting - Linking - Other Linker Flags 里 添加 -lstdc++.6.0.9, -lsqlite3(注意:在 Xcode9 以上,不再需要这两个库) 。
-
- (
void)configLocationManager
-
{
-
self.locationManager = [[TencentLBSLocationManager alloc] init];
-
-
[
self.locationManager setDelegate:
self];
-
-
[
self.locationManager setApiKey:
@"对应于申请的apiKey "];
-
-
[
self.locationManager setPausesLocationUpdatesAutomatically:
NO];
-
-
// 需要后台定位的话,可以设置此属性为YES。
-
[
self.locationManager setAllowsBackgroundLocationUpdates:
YES];
-
-
// 如果需要POI信息的话,根据所需要的级别来设定,定位结果将会根据设定的POI级别来返回,如:
-
[
self.locationManager setRequestLevel:TencentLBSRequestLevelName];
-
-
// 申请的定位权限,得和在info.list申请的权限对应才有效
-
CLAuthorizationStatus authorizationStatus = [
CLLocationManager authorizationStatus];
-
if (authorizationStatus == kCLAuthorizationStatusNotDetermined) {
-
[
self.locationManager requestWhenInUseAuthorization];
-
}
-
}
-
-
// 单次定位
-
- (
void)startSingleLocation {
-
[
self.locationManager requestLocationWithCompletionBlock:
-
^(TencentLBSLocation *location,
NSError *error) {
-
NSLog(
@"%@, %@, %@", location.location, location.name, location.address);
-
}];
-
}
-
-
// 连续定位
-
- (
void)startSerialLocation {
-
//开始定位
-
[
self.locationManager startUpdatingLocation];
-
}
-
-
- (
void)stopSerialLocation {
-
//停止定位
-
[
self.locationManager stopUpdatingLocation];
-
}
-
-
- (
void)tencentLBSLocationManager:(TencentLBSLocationManager *)manager
-
didFailWithError:(
NSError *)error {
-
CLAuthorizationStatus authorizationStatus = [
CLLocationManager authorizationStatus];
-
if (authorizationStatus == kCLAuthorizationStatusDenied ||
-
authorizationStatus == kCLAuthorizationStatusRestricted) {
-
[
self.displayLabel setText:
@"定位权限没开启!"];
-
-
UIAlertController *alert = [
UIAlertController alertControllerWithTitle:
@"提示"
-
message:
@"定位权限未开启,是否开启?"
-
preferredStyle:
UIAlertControllerStyleAlert];
-
[alert addAction:[
UIAlertAction actionWithTitle:
@"是"
-
style:
UIAlertActionStyleDefault
-
handler:^(
UIAlertAction * _Nonnull action) {
-
if( [[
UIApplication sharedApplication]canOpenURL:
-
[
NSURL URLWithString:
UIApplicationOpenSettingsURLString]] ) {
-
[[
UIApplication sharedApplication] openURL:
-
[
NSURL URLWithString:
UIApplicationOpenSettingsURLString]];
-
}
-
}]];
-
-
[alert addAction:[
UIAlertAction actionWithTitle:
@"否"
-
style:
UIAlertActionStyleDefault
-
handler:^(
UIAlertAction * _Nonnull action) {
-
}]];
-
-
[
self presentViewController:alert animated:
true completion:
nil];
-
-
}
else {
-
[
self.displayLabel setText:[
NSString stringWithFormat:
@"%@", error]];
-
}
-
}
-
-
-
- (
void)tencentLBSLocationManager:(TencentLBSLocationManager *)manager
-
didUpdateLocation:(TencentLBSLocation *)location {
-
//定位结果
-
NSLog(
@"location:%@", location.location);
-
}
报错状态提示:
-
typedef
NS_ENUM(
NSUInteger, TencentLBSLocationError) {
-
TencentLBSLocationErrorUnknown =
0,
//!< 错误码,表示目前位置未知,但是会一直尝试获取
-
TencentLBSLocationErrorDenied =
1,
//!< 错误码,表示定位权限被禁止
-
TencentLBSLocationErrorNetwork =
2,
//!< 错误码,表示网络错误
-
TencentLBSLocationErrorHeadingFailure =
3,
//!< 错误码,表示朝向无法确认
-
TencentLBSLocationErrorOther =
4,
//!< 错误码,未知错误
-
};
地图SDK(Android地图SDK | IOS地图SDK)
用于手机端APP嵌入地图与应用。
安卓3D适用于对地图强依赖场景,如导航、打车、代驾等。也可用于可穿戴设备。2D适用于辅助位置展示场景,如选择发送位置、地址展示、轨迹展示等,建议对包大小敏感的开发者选择用。
AndroidStudio配置
第1步: 获取Key
[点我获取Key>>](/mobile/androidMapSDK/developerGuide/getKey)
第2步:创建AndroidStudio项目
在AndroidStudio中创建一个空的Android项目。
第3步:在项目中集成SDK
在 AndroidStudio 项目中集成腾讯地图 SDK 主要有两种方式:
1. 手动将腾讯地图 sdk 的 jar 包和 so 库导入到工程
2. 通过 Gradle 配置 maven 或 jcenter 仓库集成 SDK
我们更推荐用户使用第二种方式,即,通过 maven 导入腾讯地图 SDK,下面我们详细介绍下两种方式。
通过拷贝 jar 包、so 库添加 SDK
-
首先,请您在这里获取腾讯地图 SDK for Andorid 及其 demo。
-
解压下载的压缩包并拷贝文件
以4.3.4版本的地图功能为例,解压后,得到一个 libs文件夹,该文件夹中包含tencent-mapsdk-release-4.3.4.b8edc92f.jar文件和一个jniLibs文件夹(文件中包含所有的so库文件) -
将 libs 目录下的"*.jar"文件拷贝到 AndroidStudio 项目对应的 app/libs/ 文件夹下。
右键该jar包,选择add as library,弹出如下窗口:
点击OK即可,变成下图所示就是导入成功:
- 将 jniLibs 目录下的所有文件按照原目录格式,拷贝到AndroidStudio项目对应的 app/src/main/jniLibs/ 目录下。
腾讯地图Android SDK还提供了地图组件库TencentMapUtils,目前地图组件包含了点聚合组件、小车平滑移动组件。 组件
IOS自动部署如下:
用户使用腾讯地图 iOS SDK 支持项目开发时,可以通过 Cocoapods 自动部署将 SDK 添加到工程当中。自动部署目前仅支持 腾讯地图 iOS SDK 4.2.6.2 及以上版本。
获取CocoaPods
CocoaPods 是一种支持 Swift 和 Objective-C 项目的第三方库资源管理器,用户可通过 Cocoapods 获取腾讯地图 iOS SDK。
如果您已安装了CocoaPods,请直接跳到第二步:通过CocoaPods安装SDK。
1. 配置 ruby 的软件源
建议通过ruby安装CocoaPods。由于默认的 ruby 的软件源 “http://mirrors.tencent.com/rubygems/” 被墙阻拦导致 CocoaPods 安装失败,因此需要更新一下 ruby 的源。依次执行如下命令:
-
# 添加 TUNA 源并移除默认源
-
gem sources --add
http:/
/mirrors.tencent.com/rubygems
/ --remove https:/
/rubygems.org/
-
-
#(查看当前ruby的源是否成功更换)
-
gem sources -l
完成上述命令后,显示如下文字则表示更新成功
-
*** CURRENT SOURCES ***
-
http:
//mirrors.tencent.com/rubygems/
2. 升级 gem
将 gem 的版本更新到最新确保 Cocoapods 安装成功
sudo gem update --system
3. 安装 Cocoapods
请使用以下命令安装 Cocoapods:
sudo gem install -n /usr/local/bin cocoapods pod setup
注:Cocoapods 安装过程可能会耗时较长,也有可能受网络的状况导致失败,如果安装失败请再次尝试
通过 CocoaPods 安装 SDK
1. 创建 Podfile
在当前 工程文件 (.xcodeproj) 所在文件夹下创建一个名为 Podfile 的文件。Podfile 内容如下:
-
platform :ios, "8.0" # 手机系统版本
-
target "QMapKitDemo" do # 工程的名字
-
pod 'Tencent-MapSDK' # 地图SDK
-
end
-
-
#
当有多个target时,不同的target也需要各自设置
-
#
target "QMapKitDemo1" do # 工程的名字
-
#
pod 'Tencent-MapSDK' # 地图SDK
-
#
end
-
-
#
target "QMapKitDemo2" do # 工程的名字
-
#
pod 'Tencent-MapSDK' # 地图SDK
-
#
end
2. 安装SDK
-
#用于保证本地地图相关 SDK 为最新版
-
pod repo
update
-
-
#安装 SDK
-
pod
install
命令执行成功后,会生成 .xcworkspace 文件,打开.xcworkspace 文件以启动工程(注意:此时不能同时开启.xcodeproj文件,示例:
3. 升级 SDK
若已通过自动部署安装了腾讯地图 iOS SDK,想要更新到最新版本,可在 Podfile 文件所在目录下执行以下指令:
-
pod repo
update
# 用于保证本地地图相关SDK为最新版
-
pod
update
4. 安装指定版本 SDK
自动部署目前仅支持地图 iOS SDK 4.2.6.2及以上版本,使用指定版本 SDK,需修改 Podfile 文件,示例:
-
platform
:ios,
"8.0"
# 手机系统版本
-
target
"QMapKitDemo"
do
# 工程的名字
-
pod
'Tencent-MapSDK',
'~> 4.2.6.2'
# 在此修改或添加 3D SDK 版本号
-
end
然后执行命令:
-
#用于保证本地地图相关 SDK 为最新版
-
pod repo
update
-
-
# 安装 SDK
-
pod
install
WebService API:参考文档
腾讯地图WebService API 是基于HTTPS/HTTP协议的数据接口,开发者可以使用任何客户端、服务器和开发语言,按照腾讯地图WebService API规范,按需构建HTTPS请求,并获取结果数据(目前支持JSON/JSONP方式返回)。
注意:这个有调用 配额限制说明(其他产品均无调用限制):https://lbs.qq.com/service/webService/webServiceGuide/webServiceQuota
腾讯位置服务API Key,在调用时用于唯一标识开发者身份,API KEY是各产品通用的,也就是说同一个Key可以用在地图SDK,也可以用在JavascriptAPI,也可以用在WebServiceAPI以及其它各产品中,可针对不同产品可独立启用(开关)。
假设您的某个Key只会调用地图SDK,可在Key配置界面,将其它产品关闭,以降低安全风险。
在Key设置中,勾中WebService复选框,即为启用产品,该Key才可调用WebServiceAPI服务 未启用时请求服务,会返回:
{ "status": 199, "message": "此key未开启webservice功能" }
示例:
https://apis.map.qq.com/ws/place/v1/search?keyword=酒店&boundary=nearby(39.908491,116.374328,1000)&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77
多种安全策略配置请参考:安全策略说明
地主认证通道:
如果你是某个地点的经营者,所有者等,可以自行申请认证,审核通过即可在地图上展示申请地点,入口
各类企事业单位、个体工商户,对自己的经营场所、实体店铺希望腾讯地图进行收录的,均可申请商户标注。提交商户标注后,您所填写的信息会被所有用户看到,因此请确认您提交的位置信息符合国家相关法律(例如军事设施,保密地点等信息根据国家相关法律不能提交)。已有商户标注存在有误的,可以提交地点纠错修改。
常见问题
腾讯位置服务控制台
行业解决方案
腾讯位置服务技术教程
腾讯位置特色产品实例
好啦,本期腾讯位置服务内容就分享到这里,我们下期见!
需要腾讯位置服务可以从下方通道快速进入,填写邀请码获得更多技术支持!
腾讯位置服务注册地址:https://lbs.qq.com?lbs_invite=3Z2RFL3
邀请码:3Z2RFL3
转载:https://blog.csdn.net/weixin_41937552/article/details/111670615