高德地图 猎鹰组件 Flutter插件
demo apk下载 demo apk下载 demo apk下载
Fluttify系列插件
Fluttify系列插件
名称 | 描述 | 仓库 |
---|---|---|
高德地图 | 高德地图地图组件, 提供地图控件 | [图片上传失败...(image-833a67-1600393466104)] |
高德定位 | 高德地图定位组件, 提供独立的定位功能 | [图片上传失败...(image-cb22ad-1600393466104)] |
高德搜索 | 高德地图搜索组件, 提供poi搜索等功能 | [图片上传失败...(image-1b71b0-1600393466104)] |
高德猎鹰 | 高德地图猎鹰组件, 提供实时定位采集功能 | [图片上传失败...(image-b0af98-1600393466104)] |
百度地图 | 百度地图, 包含了地图控件, 定位以及搜索poi等功能 | [图片上传失败...(image-ff13d4-1600393466104)] |
百度人脸识别 | 百度人脸识别, 提供活体检测等功能 | [图片上传失败...(image-a95037-1600393466104)] |
网易直播 | 网易直播推流组件 | [图片上传失败...(image-47eaa0-1600393466104)] |
网易云信 | 网易云信 IM组件 | [图片上传失败...(image-f9e8a8-1600393466104)] |
腾讯直播 | 腾讯直播, 包含推流组件和播放组件 | [图片上传失败...(image-91472e-1600393466104)] |
腾讯IM | 腾讯IM组件 | [图片上传失败...(image-805e6-1600393466104)] |
腾讯地图 | 腾讯地图组件 | [图片上传失败...(image-afd15a-1600393466104)] |
讯飞语音合成 | 腾讯语言合成组件, 提供文字转语言功能 | [图片上传失败...(image-404415-1600393466104)] |
极光统计 | 极光统计组件, 提供异常上报等功能 | [图片上传失败...(image-e7f940-1600393466104)] |
阿里云RTC | 阿里云实时音视频 | [图片上传失败...(image-cf3ae2-1600393466104)] |
环信 | 环信IM | [图片上传失败...(image-748712-1600393466104)] |
未完待续... | 如有其它需求, 请联系qq 382146139 | [图片上传失败...(image-6a5fe5-1600393466104)] |
依赖
dependencies:
flutter:
sdk: flutter
# 社区版
amap_track_fluttify: ^x.x.x
# 专业版 授权后可依赖
amap_track_fluttify:
git:
url: git@github.com:yohom/amap_track_fluttify.git
配置
Android
- 在
AndroidManifest.xml
的<application>
标签下配置从高德开发者后台申请的key.
<application
android:name="io.flutter.app.FlutterApplication"
android:label="amap_track_fluttify_example"
android:icon="@mipmap/ic_launcher">
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="你的key"/>
<!--... 其他内容-->
</application>
- 注意在app/build.gradle的android块中配置签名信息, 并在buildTypes块中指定签名信息, 否则将无法匹配到你在高德后台配置的key, 例如:
android {
signingConfigs {
release {
keyAlias 'amap_track_demo'
keyPassword 'amap_track_demo'
storeFile file('../amap_track_demo.jks')
storePassword 'amap_track_demo'
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
profile {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
}
- 由于猎鹰SDK直接包含了定位SDK的代码, 导致不能与定位SDK共存, 解决方案为:
- 使用Android Studio打开android工程;
- 找到amap_location_fluttify模块的
build.gradle
文件; - 74行, 修改
api 'com.amap.api:location:5.1.0'
为compileOnly 'com.amap.api:location:5.1.0'
; 此处修改意为"只在编译期间可见定位SDK, 不包含在最终的apk中", 所以能解决猎鹰SDK和定位SDK的冲突. -
此处修改为临时改动, 当定位插件版本升级时, 会覆盖掉此处的修改, 所以当定位插件升级时, 要留意这里, 需要重新改动回
compileOnly
;
- 权限无需另外申明, 定位服务组件无需另外声明, 已在插件中引入;
- 无需再处理混淆, 已在插件中配置混淆规则;
iOS
- 与Android端不同, iOS端的初始化需要在
AmapTrack.instance.init
方法中传入, 具体参考wiki; - 定位需要声明权限, 在Info.plist中添加:
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要定位权限</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>需要定位权限</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>需要定位权限</string>
- 配置后台定位:
- 左侧目录中选中工程名,开启 TARGETS->Capabilities->Background Modes;
- 在 Background Modes中勾选 Location updates,如下图所示: [图片上传失败...(image-fc6abf-1600393328389)]
导入
import 'package:amap_track_fluttify/amap_track_fluttify.dart';
使用
初始化
初始化方法为
AmapTrack.instance.init(String iosKey, int serviceId);
其中iosKey
为在高德开发者后台创建的key,serviceId
需要开发者自行调用(使用比如Postman等类似的工具)高德提供的rest api接口获取,详情请参考 https://lbs.amap.com/api/track/lieying-kaifa/api/service .
Android端配置key请参考README.
配置猎鹰SDK
配置定位采集周期和上报周期:
猎鹰sdk默认的定位信息采集周期是2s,默认的上报周期是20s,也就是最快2s记录一次当前位置信息(若位置没有变化,这次位置信息会被忽略),20s上报一次记录下的这些信息。下面方法修改该配置:
AmapTrack.instance.changeGatherAndPackTimeInterval(gatherTimeInterval: Duration(seconds: 2), packTimeInterval: Duration(seconds: 20));
配置本地缓存大小:
猎鹰sdk会在无法正常上报轨迹点时将未成功上报的轨迹点缓存在本地,默认最多缓存50MB数据。
AmapTrack.instance.setLocalCacheMaxSize(50); // 单位为MB
开始轨迹上报
在启动轨迹上报服务(service id)时,需要提供终端(terminal id)信息,然后调用 AmapTrack.instance.startService(int terminalId, {int trackId})
方法。
每个终端(terminal id)都对应您的业务中一个唯一的实体,在该终端第一次启动轨迹上报服务前,应该首先使用一个唯一标识该终端的名称创建该终端,获取终端id;若该终端(terminal id)不是第一次启动轨迹上报服务,则可以直接使用终端名称查询对应终端id。
获取终端(terminal id)
try {
QueryTerminalResponse response = await AmapTrack.instance.queryTerminal('terminalName');
} catch (e) {
print(e);
}
返回类型为QueryTerminalResponse
,含有一个terminalId
字段,如果该字段值不为-1
,则说明已有该名称的终端,可以直接使用,否则需要先创建该终端。
创建终端
try {
int terminalId = await AmapTrack.instance.addTerminal('terminalName');
} catch (e) {
print(e);
}
上面的调用会创建一个名为terminalName
的终端,并返回对应的终端id(terminalId),以供后续操作。
启动上报服务(service id)
要开启定位采集,需要首先启动轨迹上报服务,等服务启动成功后才能开启定位采集:
// 注意需要先申请权限
final status = await Permission.location.request();
if (status.isGranted) {
try {
await AmapTrack.instance.startService(_terminalId); // _terminalId为addTerminal方法返回的terminalId
print('寻迹服务开启成功');
} catch (e) {
print(e);
}
} else {
print('需要定位权限');
}
上报到指定轨迹
仅提供了服务id和终端id,而没有指定要将轨迹点上报到哪个轨迹上,这种上报方式叫做散点上报,所有轨迹点直接关联到终端,不属于任何一个轨迹。这部分将在此基础上说明如何创建轨迹、如何将轨迹点上报到指定轨迹上。
创建轨迹
要将轨迹点上报的指定的轨迹上,首先需要创建一个轨迹,得到新创建轨迹的轨迹id用于开启轨迹上报服务。每个轨迹都属于某个终端,因此创建时需要指定服务id及终端id。
如果您希望后续每次上报轨迹点时,都上报到之前创建的某条轨迹上,那么您在创建轨迹后,应该想办法记录下轨迹id,以便后续使用。
try {
int trackId = await AmapTrack.instance.addTrack(_terminalId);
} catch (e) {
print(e);
}
开启轨迹上报时,指定轨迹id
在开启轨迹上报前,将轨迹id传递给AmapTrack.instance.startService(_terminalId, trackId: trackId)
即可。
查询终端实时位置
可以使用服务id和终端id查询某个终端最后一次上报的位置信息。
try {
final TrackPoint point = await AmapTrack.instance.queryLastPoint(_terminalId);
} catch (e) {
print(e);
}
返回对象TrackPoint
包含经纬度,时间,精度,方向,高度和速度信息,具体参考类TrackPoint
。
查询终端行驶里程
下面的代码查询某个终端在最近一天内的行驶里程:
try {
final now = DateTime.now();
final distance = await AmapTrack.instance.queryDistance(
_terminalId,
startTime: now.subtract(Duration(days: 1)),
endTime: now,
);
} catch (e) {
print(e);
}
返回对象为以米
为单位的距离信息。
查询终端历史轨迹
查询终端历史轨迹有两种方式,一种会查出终端的所有轨迹的轨迹点,包括不属于任何一个轨迹的散点,并将这些轨迹点按照上传时间排序;另一种会按照轨迹查出每个轨迹下的轨迹点或特定轨迹下的轨迹点,散点不包含在内。
查询终端所有轨迹点
下面的代码查询出某个终端在最近一天内上传的所有轨迹点:
try {
final now = DateTime.now();
final HistoryTrack trackHistory = await AmapTrack.instance.queryHistoryTrack(
_terminalId,
startTime: now.subtract(Duration(days: 1)),
endTime: now,
);
} catch (e) {
print(e);
}
返回对象包含轨迹点列表,点数量和距离信息。
社区
QQ群 938842596 |
---|
<img src="https://github.com/fluttify-project/fluttify-project/blob/master/resources/1593774713224_temp_qrcode_share_9993.png?raw=true" height="300"> |
社区版与专业版
显示地图 | 社区版 | 专业版 |
---|---|---|
开启寻迹服务 | ✅ | ✅ |
开始收集上报轨迹数据 | ✅ | ✅ |
停止收集上报轨迹数据 | ✅ | ✅ |
停止寻迹服务 | ✅ | ✅ |
根据终端名称创建终端 | ✅ | ✅ |
根据终端名称查询终端信息 | ✅ | ✅ |
查询最后一次上报的位置 | ✅ | ✅ |
获得当前设置的轨迹id | ☑️ | ✅ |
创建轨迹 | ☑️ | ✅ |
查询终端行驶里程 | ☑️ | ✅ |
查询终端历史轨迹 | ☑️ | ✅ |
查询终端下属于某个轨迹的轨迹点 | ☑️ | ✅ |
配置定位采集周期和上报周期 | ☑️ | ✅ |
配置本地缓存大小 | ☑️ | ✅ |
LICENSE
Copyright (C) 2020 yohom
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/.