# 事件

# (一)概述

用户可以创建自定义事件,用作事件具体位置发生的事情。自定义事件可以是调查、众包采集、科 考记录、旅游线路记录等多种形式,通过创建事件类型进行划分。

# (二)事件集合[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、新增事件集合

事件集合通过组织[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

# 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

# 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

# (三)事件要素[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

# (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)显示事件图片

从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、新增事件要素

事件要素[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

# 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

# 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