Skip to main content

限飞区解禁教程


限飞区解禁教程

1. 概述

限⻜解禁功能给开发者提供⻜行器附近限⻜区的变化进行监听。通过限⻜解禁可以获取⻜行器周边特定公里范围的限⻜区,并对指定的区域进行解锁。解锁后将不再提示任何限⻜区并取消⻜行器起⻜限制。

2. 限⻜区划分

MSDK对限⻜区的划分在限⻜区策略枚举值 – FlyZoneCategory:

限飞区类型描述
WARNING警告区
ENHANCED_WARNING强化警告区
AUTHORIZATION授权区域
RESTRICTED限制区域
HEIGHT_RESTRICTED限高区

注意

  • 如果⻜行器⻜行过程途径禁⻜区或者⻜行器⻜行超过限高区,⻜行器将在区域前悬停并且无法打杆⻜行器往区域方向前进。

3. 限⻜区获取

1、通过getFlyZonesInSurroundingArea()获取距离中心位置50公里范围内的限⻜区,返回的限⻜区包含临时限⻜区与地理感知区域;

2、通过getDroneFlyZoneCountryCode()获取当前⻜机可⻜国家码;

3、通过getHotZoneCountryCode()获取热点区域国家码。

注意

  • 如果获取到的限⻜区数量过多,在地图上绘制限⻜区可能存在卡顿问题,建议做相关优化显示。

4. 限⻜区解禁

以下为限⻜区解禁步骤介绍。

1、通过售后申请授权区域。

2、通过downloadAuthFlyZoneFromServer()从服务器获取授权区,可通过⻜机序列号,获取指定⻜机的授权区域。

3、通过pushAuthFlyZoneToAircraft()导入与当前⻜行器 SN 一致的授权区到⻜行器⻜控中,导入成功则授权区设置生效。

4、通过getAuthFlyZone()获取本地存储的解禁信息。

5、通过deleteAuthFlyZoneFromAircraft()删除⻜机上授权区信息。

5. 接口调用流程

下图为限⻜解禁接口调用流程示例,无需每步参照,请视实际情况调用。详细的使用方法请查看 MSDK API 文档中的限⻜区解禁管理类IFlyZoneManager。

限飞解禁接口调用流程

6. 接口调用说明

6.1 获取飞机方圆100公里禁飞区

示例代码如下:

FlyZoneManager.get().getFlyZonesInSurroundingArea(location, object: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneInformation>?>{
override fun onSuccess(t: List<FlyZoneInformation>?) {
//success
}

override fun onFailure(error: IAutelCode, msg: String?) {
//failureL
}
})

参数说明:

location:位置信息LocationCoordinate2D

6.2 从服务器获取制定飞机授权区信息

示例代码如下:


FlyZoneManager.get().downloadAuthFlyZoneFromServer(
aircraftSN,
location,
object: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneAuthInformation>?>{
override fun onSuccess(t: List<FlyZoneAuthInformation>?) {
//success
}

override fun onFailure(error: IAutelCode, msg: String?) {
//failure
}
})

参数说明:

aircraftSN:飞机SN号

location:中心位置LocationCoordinate2D

6.3 授权区文件上传至飞行器中

示例代码:

FlyZoneManager.get().pushAuthFlyZoneToAircraft(device, object: CommonCallbacks.UpLoadFileCallbackWithProgress<Int>{
override fun onStartUploading() {
//start uploading
}

override fun onProgressUpdate(progress: Int) {
// progress info
}

override fun onSuccess() {
// success
}

override fun onFailure(error: IAutelCode) {
//failure
}
})

参数说明:

device:无人机设备

注意:授权区信息SN需与飞机SN匹配,否则上传失败,上传成功授权区即生效。

6.4 获取授权区信息

示例代码如下:


FlyZoneManager.get().getAuthFlyZone(device.getDroneSn()!!, object: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneAuthInformation>?>{
override fun onSuccess(t: List<FlyZoneAuthInformation>?) {
//success
}

override fun onFailure(error: IAutelCode, msg: String?) {
// faulure
}
})

6.5 导入授权区文件

示例代码:

FlyZoneManager.get().importFlySafeDynamicDatabaseToMSDK(filePath, object: CommonCallbacks.CompletionCallbackWithParam<List<FlyZoneInformation>> {
override fun onSuccess(t: List<FlyZoneInformation>?) {
//success
}

override fun onFailure(error: IAutelCode, msg: String?) {
//failure
}
})

参数说明:

filePath:文件路径

注意:当前只支持导入欧盟地理感知数据,地理感知数据可以从欧洲航空安全局官网下载。

6.6 将地理感知数据导入到飞行器中,当前仅支持欧盟数据

示例代码如下:


FlyZoneManager.get().pushFlySafeDynamicDatabaseToAircraft(object: CommonCallbacks.UpLoadFileCallbackWithProgress<Int>{
override fun onStartUploading() {
// start uploading
}

override fun onSuccess() {
// success
}

override fun onFailure(error: IAutelCode) {
// failure
}

override fun onProgressUpdate(progress: Int) {
// progress info
}
})

6.7 获取飞行器可飞区国家码

示例代码如下:

FlyZoneManager.get().getAircraftFlyZoneCountryCode(aircraftSN, object: CommonCallbacks.CompletionCallbackWithParam<List<FlyableZoneInfo>> {
override fun onSuccess(t: List<FlyableZoneInfo>?) {
//success
}

override fun onFailure(error: IAutelCode, msg: String?) {
//failure
}
})

参数说明:

aircraftSN:飞机SN

7.接口说明及Sample获取

接口说明请参考限⻜区解禁管理类IFlyZoneManager

接口使用参考Sample中FlyZoneFragment