# 八、围栏
# (一)围栏与围栏事件
门户系统允许将地图要素设置为电子围栏。根据设置围栏触发类型(进入触发/离开触发),当由成员进入/离开电子围栏时,就会生成围栏事件。
# (二)设置围栏
let fenceInfo = markerFeature.fenceInfo
fenceInfo.enable = true;//启用围栏
fenceInfo.radius = 10;//围栏半径
fenceInfo.triggerType = FenceTriggerType.In;//围栏触发类型
//markerFeature的更新需由其所属的集合对象markerSet来操作
markerSet?.updateMarker(marker: markerFeature!, callback: { obj, errorMessage in
//成功
if (obj != nil) {
//更新markerFeature信息成功(设置围栏成功)
}
//失败
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# (三)围栏事件[FenceEvent]
# 1、获取围栏事件
let organization = Cellsys.shared.organization//初始化成功之后,可随时获取组织对象。
organization.queryFenceEvents { obj, errorMessage in
//成功
if (obj != nil) {
let fenceEvents = obj?.data as? [FenceEvent]
}
//失败
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
# 2、围栏事件信息
//围栏触发类型(进入/离开)
let fenceTriggerType = fenceEvent.triggerType
//围栏触发人
fenceEvent.triggerMember.name//触发人名称
let location = fenceEvent.locationOnTriggered//触发人定位信息
/*查询具体的触发人信息*/
fenceEvent?.queryTriggerDetail(callback: { obj, errorMessage in
//成功
if (obj != nil) {
let memberFeatures = obj?.data as? [MemberFeature]
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
})
//围栏信息
fenceEvent.mapFeatureOfFence.name//围栏名称
let geometry = fenceEvent.fenceGeometry//围栏坐标信息
/*查询具体的围栏信息*/
fenceEvent?.queryMapFeatureDeatil(callback: { obj, errorMessage in
//成功
if (obj != nil) {
let mapFeatures = obj?.data as? [MapFeature]
}
//失败
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
30
31
32
33
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
30
31
32
33