# 事件
# (一)概述
用户可以创建自定义事件,用作事件具体位置发生的事情。自定义事件可以是调查、众包采集、科 考记录、旅游线路记录等多种形式,通过创建事件类型进行划分。
# (二)事件集合[EventSet]
所有的事件数据,都存放在不同的事件集合之下。想要对事件进行操作,需要先获取事件集合。 事件集合的常用属性如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 事件集合名称 |
remark | String | 备注 |
icon | Icon | 图标 |
symbol | PointSymbol | 地图符号 |
常用方法如下:
方法名 | 返回类型 | 方法描述 |
---|---|---|
setName | void | 设置事件集合名称 |
setIcon | void | 设置事件集合图标(同时设置地图符号) |
queryEvents | Promise< QueryResult > | 查询集合下的所有事件要素 |
queryEventByName | Promise< QueryResult > | 在该集合下的根据名称查找事件要素 |
createEvent | Promise< EventSet > | 创建事件 |
updateEvent | Promise< void > | 更新事件信息 |
deleteEvent | Promise< void > | 删除事件 |
# 1、获取事件集合
初始化成功后,可直接从Cellsys的organization对象中获取到组织下所有的事件集合。
let eventSets = Cellsys.organization.eventSets;//事件集合
if (eventSets.length > 0) {
let eventSet = eventSets[0];
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]对象创建。具体操作见代码示例
//图标参数可以不传,图标对象的获取方法参考附-样式
Cellsys.organization.createEventSet({
"name":"集合名称",
"remark": "集合备注",
"icon": icon
})
.then(eventSet => {
let newEventSet = eventSet; //创建成功后会返回创建的事件集合对象
})
.catch(error => {
console.log(error.code)
console.log(error.message)
})
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]获取,修改图标的同时地图符号属性[symbol]会一起改变
Cellsys.organization.updateEventSet(eventSet)
.then(() => {
/*修改成功*/
})
.catch(error => {
console.log(error.code)
console.log(error.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]对象进行删除。具体操作见代码示例
Cellsys.organization.deleteEventSet(eventSet)
.then(() => {
//删除成功
})
.catch(error => {
console.log(error.code)
console.log(error.message)
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# (三)事件要素[EventFeature]
事件要素常用属性表如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 事件要素名称 |
remark | String | 备注 |
icon | Icon | 图标 |
symbol | PointSymbol | 事件在地图上的符号 |
mapPoint | MapPoint | 事件发生地点 |
images | Array< Image > | 事件图片列表 |
uploader | CommonInfo | 上传者的简易信息 |
happenTime | DateTime | 事件发生时间 |
content | String | 事件内容 |
事件要素的常用方法如下:
方法名 | 返回类型 | 方法描述 |
---|---|---|
queryUploader | Promise< QueryResult > | 查询事件上传者详情 |
# 1、查询事件要素
事件集合[EventSet]提供了query方法来查询自身集合下的事件。具体操作见代码示例
//实例化查询配置,代表当前查询第1页数据,1页10条数据
let queryConfig = new Cellsys.QueryConfig(1, 10);
eventSet.queryEvents(queryConfig)
.then((queryResult) => {
/*分页信息-查询方法特有*/
let pageInfo = queryResult.pageInfo;//查询接口特有的分页信息
let totalCount = pageInfo.totalCount;//数据总数
let totalPage = pageInfo.totalPage;//总页数
let pageNo = pageInfo.pageNo;//当前页码(从1开始)
let pageSize = pageInfo.pageSize;//每页查询数量(注意!不一定和当前查询的数据总量匹配)
/*获取查询结果*/
let eventFeatures = queryResult.data;
if (eventFeatures != null && eventFeatures.length > 0) {//查询结果可能为null
for (let eventFeature of 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 dateStr = happenTime.toFormatString();//具体日期时间,例:2022-06-21 13:51:42
let timeStamp = happenTime.value;//时间戳
let mapPoint = eventFeature.mapPoint;//事件发生地点
let images = eventFeature.images;//事件图片列表
}
}
})
.catch(error => {
console.log(error.code)
console.log(error.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
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()
.then((queryResult) => {
/*查询接口统一返回数组格式的数据。但一般来讲,上传者只会有一个*/
let memberFeatures = queryResult.data;
if (memberFeatures.length > 0) {
let uploader = memberFeatures[0];
uploader.name;//具体的MemberFeature操作见相关文档
} else {
//找不到具体的上传人信息
}
})
.catch(error => {
console.log(error.code)
console.log(error.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
# (2)显示事件图片
从query方法获取的事件要素的图片数据-Image对象,其type都是InternetImage,并且Image对象的data属性为图片的http/https网络链接地址。具体代码示例如下:
let images = eventFeature.name;//可能为空
if (images.length > 0) {
for (let image of images) {
if (image.type === Cellsys.ImageType.InternetImage) {
let imgUrl = image.data; //获取图片的网络链接地址
}
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 2、新增事件要素
事件要素[EventFeature]通过事件集合[EventSet]对象创建。具体操作见代码示例
/*事件地点*/
let lat = 39.908827;//纬度
let lng = 116.397804;//经度
let mapPoint = new Cellsys.MapPoint(lat, lng);
/*事件时间*/
let timeStamp = new Date().getTime();//毫秒级时间戳
let happenTime = new Cellsys.DateTime(timeStamp);
/*事件图片*/
let images = [];
let image = new Image(Cellsys.ImageType.Base64BMP, base64Str, "picture.png");//base64Str是图片文件的base64编码
images.add(image);
let option = {
"name": "事件名称",
"remark": "事件描述",
"mapPoint": mapPoint,
"happenTime": happenTime,
"base64Images": images
}
eventSet.createEvent(option)
.then((eventFeature) => {
//事件创建成功,返回创建的事件要素对象
let newEventFeature = eventFeature;
})
.catch(error => {
console.log(error.code)
console.log(error.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
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
# 3、修改事件要素
事件要素[EventFeature]通过事件集合[EventSet]对象修改。具体操作见代码示例
/*添加图片*/
let images = eventFeature.images;//获取当前图片列表
images.add(new Image(ImageType.Base64BMP, base64, "1.png"));//新增图片到图片列表中,base64为图片的base64编码部分(不包括前缀),新增图片时统一以base64编码格式上传
eventFeature.setImages(images);
/*修改坐标*/
let mapPoint = new Cellsys.MapPoint(23.123512, 113.462313);
eventFeature.setMapPoint(mapPoint);
/*修改事件时间*/
let timeStamp = new Date().getTime();//毫秒级时间戳
let happenTime = new Cellsys.DateTime(timeStamp);
eventFeature.setHappenTime(happenTime);
/*修改其他信息*/
eventFeature.setName("修改后的名称");
eventFeature.setRemark("修改后的备注");
eventFeature.setContent("修改后的事件内容");
eventSet.updateEvent(eventFeature)
.then(() => {
//修改成功,相应修改已同步到eventFeature对象
})
.catch(error => {
console.log(error.code)
console.log(error.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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 4、删除事件要素
事件要素[EventFeature]通过事件集合[EventSet]对象删除。具体操作见代码示例
eventSet.deleteEvent(eventFeature)
.then(() => {
/*删除成功*/
})
.catch(error => {
console.log(error.code)
console.log(error.message)
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8