# 十、事件
# (一)概述
用户可以创建自定义事件,用作事件具体位置发生的事情。自定义事件可以是调查、众包采集、科考记录、旅游线路记录等多种形式,通过创建事件类型进行划分。
# (二)事件集合[EventSet]
所有的事件数据,都存放在不同的事件集合之下。想要对事件进行操作,需要先获取事件集合。 事件集合的常用属性如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 事件集合名称 |
remark | String | 备注 |
icon | Icon | 图标 |
symbol | PointSymbol | 点符号 |
常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
queryEvents | void | 查询集合下的所有事件要素 |
queryEventByName | void | 在该集合下的根据名称查找事件要素 |
createEvent | void | 创建事件 |
updateEvent | void | 更新事件信息 |
deleteEvent | void | 删除事件 |
# 1、获取事件集合
初始化成功后,可直接从Cellsys的organization对象中获取到组织下所有的事件集合。
List<EventSet> eventSets = Cellsys.organization.getEventSets();//eventSets 可能为null
if (eventSets != null && eventSets.size() > 0) {
EventSet eventSet = eventSets.get(0);
String name = eventSet.getName();//集合名称
String remark = eventSet.getRemark();//集合备注信息
PointSymbol pointSymbol = eventSet.getSymbol();//获取地图符号对象
Icon icon = eventSet.getIcon();//获取图标对象
boolean isPublish = eventSet.isPublish();//是否发布
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 2、新增事件集合
事件集合通过组织[Organization]对象创建。具体操作见代码示例
Cellsys.organization.createEventSet("集合名称", "集合备注", new CsCallback<EventSet>() {
@Override
public void onSuccess(EventSet object) {
/*创建成功*/
String name = object.getName();//object为创建成功后的对象
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 3、修改事件集合
事件集合通过组织[Organization]对象进行修改。具体操作见代码示例
eventSet.setName("修改后名称");
eventSet.setRemark("修改后备注");
eventSet.setPublish(false);//将发布状态调整为不发布
eventSet.setIcon(icon);//修改图标。图标对象通过IconSet的query方法获取。
Cellsys.organization.updateEventSet(eventSet, new CsCallback() {
@Override
public void onSuccess(Object object) {
/*修改成功*/
eventSet.getName();/*修改后原对象的值将会被更改*/
eventSet.getIcon();
eventSet.getRemark();
eventSet.getSymbol();
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 4、删除事件集合
事件集合通过组织[Organization]对象进行删除。具体操作见代码示例
Cellsys.organization.deleteEventSet(eventSet, new CsCallback() {
@Override
public void onSuccess(Object object) {
//删除成功
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# (三)事件要素[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(new CsCallback<QueryResult<EventFeature>>() {
@Override
public void onSuccess(QueryResult<EventFeature> object) {
/*分页信息-查询方法特有*/
PageInfo pageInfo = object.pageInfo;//查询接口特有的分页信息
int totalCount = pageInfo.totalCount;//数据总数
int totalPage = pageInfo.totalPage;//总页数
int pageNo = pageInfo.pageNo;//当前页码(从1开始)
int pageSize = pageInfo.pageSize;//每页查询数量(注意!不一定和当前查询的数据总量匹配)
/*获取查询结果*/
List<EventFeature> eventFeatures = object.data;
if (eventFeatures != null && eventFeatures.size() > 0) {//查询结果可能为null
for (EventFeature eventFeature : eventFeatures) {
/*事件要素基础信息获取示例*/
String name = eventFeature.getName();//事件要素名称
String remark = eventFeature.getRemark();//备注
PointSymbol pointSymbol = eventFeature.getSymbol();//点符号
String uploaderName = eventFeature.getUploader().getName();//上传人姓名
String content = eventFeature.getContent();//事件内容
DateTime happenTime = eventFeature.getHappenTime();//事件发生事件
String dateStr = happenTime.toFormatString();//具体日期时间,例:2022-06-21 13:51:42
long timeStamp = happenTime.value;//时间戳
MapPoint mapPoint = eventFeature.getMapPoint();//事件发生地点
List<Image> images = eventFeature.getImages();//事件图片列表
}
}
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
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
36
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
36
# (1)查询事件上报人详情
事件要素提供了queryUploader方法来查询、获取具体的上报成员对象。具体代码示例如下:
eventFeature.queryUploader(new CsCallback<QueryResult<MemberFeature>>() {
@Override
public void onSuccess(QueryResult<MemberFeature> object) {
/*查询接口统一返回数组格式的数据。但一般来讲,上传者只会有一个*/
List<MemberFeature> memberFeatures = object.data;
if (memberFeatures == null || memberFeatures.size() == 0) {
//找不到具体的上传人信息
} else {
MemberFeature uploader = memberFeatures.get(0);
uploader.getName();//具体的MemberFeature操作见相关文档
}
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# (2)显示事件图片
从query接口获取的事件要素的图片数据-Image对象,其type都是InternetImage。这是,Image对象的data属性即是图片的http/https网络链接。具体代码示例如下:
List<Image> images = eventFeature.getImages();//可能为空
if (images != null && images.size() > 0) {
for (Image image : images) {
if (image.type.equals(ImageType.InternetImage)) {
String 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]对象创建。具体操作见代码示例
/*事件地点*/
double lat = 39.908827;//纬度
double lng = 116.397804;//经度
MapPoint mapPoint = new MapPoint(lat, lng);
/*事件时间*/
long timeStamp = 1655796331234l;//毫秒级时间戳
DateTime happenTime = new DateTime(timeStamp);
/*事件图片*/
List<Image> images = new ArrayList<>();
Image image = new Image(ImageType.Base64BMP, base64Str, "picture.png");//base64Str是图片文件的base64编码
images.add(image);
eventSet.createEvent("事件名称", "事件描述", mapPoint, happenTime, images, new CsCallback<EventFeatur() {
@Override
public void onSuccess(EventFeature object) {
//事件创建成功,object对象为新创建的事件对象
object.getName();
object.getImages();
//...
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
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
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
# 3、修改事件要素
事件要素[EventFeature]通过事件集合[EventSet]对象修改。具体操作见代码示例
/*添加图片*/
String base64 = pictureToBase64(imgUrl);//将欲新增的图片转成base64,方法自行实现
List<Image> images = eventFeature.getImages();//获取当前图片列表
images.add(new Image(ImageType.Base64BMP, base64, "1.png"));//新增图片到图片列表中
eventFeature.setImages(images);
/*修改坐标*/
MapPoint mapPoint = new MapPoint(23.123512, 113.462313);
eventFeature.setMapPoint(mapPoint);
/*修改事件时间*/
long timeStamp = 1655796331234l;//毫秒级时间戳
DateTime happenTime = new DateTime(timeStamp);
eventFeature.setHappenTime(happenTime);
/*修改其他信息*/
eventFeature.setName("修改后的名称");
eventFeature.setRemark("修改后的备注");
eventFeature.setContent("修改后的事件内容");
eventSet.updateEvent(eventFeature, new CsCallback() {
@Override
public void onSuccess(Object object) {
//修改成功,相应修改已同步到eventFeature对象
eventFeature.getImages();
eventFeature.getName();
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
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
# 4、删除事件要素
事件要素[EventFeature]通过事件集合[EventSet]对象删除。具体操作见代码示例
eventSet.deleteEvent(eventFeature, new CsCallback() {
@Override
public void onSuccess(Object object) {
/*删除成功*/
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13