# 十、事件
# (一)概述
用户可以创建自定义事件,用作事件具体位置发生的事情。自定义事件可以是调查、众包采集、科 考记录、旅游线路记录等多种形式,通过创建事件类型进行划分。
# (二)事件集合[EventSet]
所有的事件数据,都存放在不同的事件集合之下。想要对事件进行操作,需要先获取事件集合。 事件集合的常用属性如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 事件集合名称 |
remark | String | 备注 |
icon | Icon | 图标 |
symbol | PointSymbol | 点符号 |
常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
queryEvents | void | 查询集合下的所有事件要素 |
queryEventByName | void | 在该集合下的根据名称查找事件要素 |
createEvent | void | 创建事件 |
updateEvent | void | 更新事件信息 |
deleteEvent | void | 删除事件 |
# 1、获取事件集合
初始化成功后,可直接从Cellsys的organization对象中获取到组织下所有的事件集合。
let eventSets = Cellsys.shared.organization.eventSets //eventSets 可能为nil
if (eventSets != nil ) {
let eventSet = eventSets.first
let name = eventSet.name //集合名称
let remark = eventSet.remark //集合备注信息
let pointSymbol = eventSet.symbol //获取地图符号对象
let icon = eventSet.icon //获取图标对象
let isPublish = eventSet.isPublish //是否发布
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 2、新增事件集合
事件集合通过组织[Organization]对象创建。具体操作见代码示例
organization.createEventSet(name: "事件集合名称", remark: "备注信息", icon: Icon.new(jsonIcon: ["iconId": 822,"rotate": 0,"fillColor":"#096dd9","fillOpacity": 1])!) { obj, errorMessage in
//成功
if (obj != nil) {
let eventSet = obj?.data as? EventSet
}
//失败
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]对象进行修改。具体操作见代码示例
eventSet.remark = "修改备注信息"
organization.updateEventSet(eventSet: eventSet) { 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
2
3
4
5
6
7
8
9
10
11
# 4、删除事件集合
事件集合通过组织[Organization]对象进行删除。具体操作见代码示例
organization.deleteEventSet(eventSet: eventSet!) { 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
2
3
4
5
6
7
8
9
10
11
# (三)事件要素[EventFeature]
事件要素常用属性表如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 事件集合名称 |
remark | String | 备注 |
icon | Icon | 图标 |
symbol | PointSymbol | 事件在地图上的符号 |
mapPoint | MapPoint | 事件发生地点 |
images | List< Image > | 事件图片列表 |
uploader | CommonInfo | 上传者的简易信息 |
happenTime | DateTime | 事件发生时间 |
content | String | 事件内容 |
事件要素的常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
queryUploader | void | 查询事件上传者详情 |
# 1、查询事件要素
事件集合[EventSet]提供了query方法来查询自身集合下的事件。具体操作见代码示例
eventSet.queryEvents { obj, errorMessage in
//成功
if (obj != nil) {
/*分页信息-查询方法特有*/
let pageInfo = object.pageInfo //查询接口特有的分页信息
let totalCount = pageInfo.totalCount //数据总数
let totalPage = pageInfo.totalPage //总页数
let pageNo = pageInfo.pageNo //当前页码(从1开始)
let pageSize = pageInfo.pageSize //每页查询数量(注意!不一定和当前查询的数据总量匹配)
/*获取查询结果*/
let eventFeatures = object.data
if (eventFeatures != nil ) {//查询结果可能为nil
for eventFeature in eventFeatures {
/*事件要素基础信息获取示例*/
let name = eventFeature.name //事件要素名称
let remark = eventFeature.remark //备注
let pointSymbol = eventFeature.symbol //点符号
let uploaderName = eventFeature.uploader.name //上传人姓名
let content = eventFeature.content //事件内容
let happenTime = eventFeature.happenTime //事件发生事件
let timeStamp = happenTime.value;//时间戳
let mapPoint = eventFeature.mapPoint //事件发生地点
let images = eventFeature.images //事件图片列表
}
}
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
SCLAlertView().showError(String(errorCode ?? 0), subTitle:errorMsg ?? "nil")
}
});
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
34
35
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
34
35
# (1)查询事件上报人详情
事件要素提供了queryUploader方法来查询、获取具体的上报成员对象。具体代码示例如下:
eventFeature.queryUploader { obj, errorMessage in
//成功
if (obj != nil) {
/*查询接口统一返回数组格式的数据。但一般来讲,上传者只会有一个*/
let memberFeatures = object.data
if (memberFeatures != nil) {
MemberFeature uploader = memberFeatures.first
}
}
//失败
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
# (2)显示事件图片
从query接口获取的事件要素的图片数据-Image对象,其type都是InternetImage。这是,Image对象的data属性即是图片的http/https网络链接。具体代码示例如下:
let images = eventFeature.images //可能为空
if (images != nil ) {
for image in images {
if (image.type == ImageType.InternetImage) {
let imgUrl = image.data
} else {
/*从query方法获取的数据,ImageType不会是其他类型。否则便是异常数据*/
}
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 2、新增事件要素
事件要素[EventFeature]通过事件集合[EventSet]对象创建。具体操作见代码示例
let name = "事件名称"
let remark = "备注信息"
let mapPoint = MapPoint.new(latitude: 23.246300, longitude: 113.411300)
let time = DateTime.new(timestamp: Int(Date().timeIntervalSinceNow))
let imageABase64Str = UIImage(named: "imageA")?.pngData()?.base64EncodedString()
let imageBBase64Str = UIImage(named: "imageB")?.pngData()?.base64EncodedString()
let imageA = Image.new(type: ImageType.Base64BMP, data: imageABase64Str, fileName: nil)
let imageB = Image.new(type: ImageType.Base64BMP, data: imageBBase64Str, fileName: nil)
let images = [imageA,imageB]
eventSet.createEvent(name: name, remark: remark, mapPoint: mapPoint, happenTime: time, base64Images: images) { obj, errorMessage in
//成功
if (obj != nil) {
let event = obj?.data as? EventFeature
}
//失败
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 3、修改事件要素
事件要素[EventFeature]通过事件集合[EventSet]对象修改。具体操作见代码示例
event.remark = "修改备注信息"
eventSet.updateEvent(event: event) { 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、删除事件要素
事件要素[EventFeature]通过事件集合[EventSet]对象删除。具体操作见代码示例
eventSet.deleteEvent(event: event, callback: { 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