# 四、区域
# (一)概述
区域数据包括区域要素[AreaFeature]、区域集合[AreaSet]两个数据类。
区域要素[AreaFeature]是一种地图数据,可用来记录地图上的区域。例如停车区域,办公区域,危险区域...等等。如下图:

区域集合[AreaSet]用来分类存放、管理区域要素[AreaFeature]。
# (二)区域集合[AreaSet]
所有的区域数据,都存放在不同的区域集合之下。想要对区域进行操作,需要先获取区域集合。 路线集合[AreaSet]的常用属性如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 区域集合名称 |
remark | String | 备注 |
symbol | PolygonSymbol | 区域符号 |
常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
queryAreas | void | 查询集合下的所有区域要素 |
createArea | void | 创建区域 |
updateArea | void | 更新区域信息 |
deleteArea | void | 删除区域 |
# 1、获取区域集合
初始化成功后,可直接从Cellsys的organization对象中获取到组织下所有的区域集合。具体代码示例如下:
/*执行初始化成功后,可直接获取到区域集合*/
let areaSets = Cellsys.shared.organization.areaSets //areaSets可能为null
if (areaSets != nil ) {
let areaSet = areaSets.first
let name = areaSet.name //集合名称
let remark = areaSet.remark //集合备注信息
let polygonSymbol = areaSet.symbol //获取地图符号对象
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# (1)区域符号[PolygonSymbol]
区域符号决定了区域要素在地图上的具体参数,如:边框颜色、边框透明度、边框宽度、填充颜色,填充透明度等。具体参数获取示例如下:
let color = polygonSymbol.fillColor //区域填充颜色
let colorValue = color.value //返回一个带#号的色值:如#3c3c3c
let alpha = polygonSymbol.alpha //填充色的不透明度。取值范围0~1,1为不透明
let strokeSymbol = polygonSymbol.strokeSymbol
let width = strokeSymbol.width //边框宽度
let strokeColor = strokeSymbol.fillColor //边框颜色
let strokeCValue = color.value //返回一个带#号的色值:如#3c3c3c
let strokeAlpha = strokeSymbol.alpha //边框的不透明度
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
有关区域符号[PolygonSymbol]的详细介绍,可查看附-样式
# 2、新增区域集合
区域集合通过组织[Organization]对象创建。具体操作见代码示例
let polygonSymbol = PolygonSymbol.new(fillColor: Color.new(ribbon: Ribbon.Blue))
organization.createAreaSet(name: "区域名称", remark: "集合备注", polygonSymbol: polygonSymbol) { obj, errorMessage in
//成功
if (obj != nil) {
let areaSet = obj?.data as? AreaSet
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 3、修改区域集合
区域集合通过组织[Organization]对象修改。具体操作见代码示例
areaSet.remark = "修改线路集合"
organization.updateAreaSet(areaSet: areaSet!) { obj, errorMessage in
//成功
if (obj != nil) {
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 4、删除区域集合
区域集合通过组织[Organization]对象来删除。具体操作见代码示例
organization.deleteAreaSet(areaSet: areaSet!) { obj, errorMessage in
//成功
if (obj != nil) {
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# (三)区域要素[AreaFeature]
区域要素是地图数据,一个区域要素对象可以表示一条地图区域。区域要素的常用属性表如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 区域集合名称 |
remark | String | 备注 |
symbol | PolygonSymbol | 区域符号 |
polygon | Polygon | 区域坐标集合 |
fenceInfo | FenceInfo | 围栏信息 |
区域要素的常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
- | - | - |
# 1、获取区域要素
区域集合[AreaSet]提供了query方法来查询自身集合中的区域要素。具体操作见代码示例
areaSet.queryAreas { obj, errorMessage in
//成功
if (obj != nil) {
/*分页信息-查询方法特有*/
let pageInfo = obj.pageInfo //查询接口特有的分页信息
let totalCount = pageInfo.totalCount //数据总数
let totalPage = pageInfo.totalPage //总页数
let pageNo = pageInfo.pageNo //当前页码(从1开始)
let pageSize = pageInfo.pageSize //每页查询数量(注意!不一定和当前查询的数据总量匹配)
/*获取查询结果*/
let areaFeatures = obj.data
if (areaFeatures != nil ) {//查询结果可能为null
for areaFeature in areaFeatures {
/*区域要素基础信息获取示例*/
let name = areaFeature.name //区域要素名称
let remark = areaFeature.remark //备注
let polygonSymbol = areaFeature.symbol //区域符号
let polygon = areaFeature.polygon //区域坐标
let fenceInfo = areaFeature.fenceInfo //电子围栏属性
}
}
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 2、新增区域要素
区域要素[AreaFeature]通过区域集合[AreaSet]对象创建。具体操作见代码示例
/*生成区域坐标*/
let name = "区域名称"
let remark = "区域备注"
let geometry = ["type":"Polygon","coordinates":[[[113.436174765915,23.1632031849264],[113.43617987521,23.1622170910859],[113.43706378316,23.162237528264],[113.437293701413,23.1623550420377],[113.437263045646,23.1626207253522],[113.437217061995,23.1631878570429],[113.43716596905,23.1633155894056],[113.436174765915,23.1632031849264]]]] as [String : Any]
let polygon = Polygon.new(jsonGeometry: JSON(geometry)) as! Polygon
areaSet.createArea(name: name, remark: remark, polygon: polygon) { obj, errorMessage in
//成功
if (obj != nil) {
let areaFeature = obj?.data as? AreaFeature
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 3、修改区域要素
区域要素[AreaFeature]通过区域集合[AreaSet]对象修改。具体操作见代码示例
areaFeature.name = "修改名字"
areaFeature.remark = "修改备注"
areaSet.updateArea(area: areaFeature) { obj, errorMessage in
//成功
if (obj != nil) {
/*成功,可在回调中直接查看原对象修改后的数据*/
let name = areaFeature.name
let remark = areaFeature.remark
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 4、删除区域要素
路线要素[AreaSet]通过路线集合[AreaFeature]对象删除。具体操作见代码示例
areaSet.deleteArea(area: areaFeature) { obj, errorMessage in
//成功
if (obj != nil) {
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10