# 专题地图

# 专题与图层

专题是可综合显示多种地图要素的地图。通常可用于显示某种主题的地图。

地图要素:标记要素、路线要素、区域要素,统称地图要素。

在CoreSDK中,专题关联了多个图层,每个图层关联一个地图要素集。

地图要素集:标记集合、路线集合、区域集合,统称地图要素集。

因此,要配置好专题,得先要会配置图层。要显示专题数据,也需要知道如何获取图层关联的图层数据。

# 专题[Map]

标记集合的常用属性如下:

属性名 值类型 属性描述
name String 专题地图名称
remark String 专题地图备注信息
icon Icon 专题地图图标
mapConifg MapConifg 专题地图配置信息

常用方法如下:

方法名 返回类型 方法描述
setName void 设置专题地图名称
setIcon void 设置专题地图图标
setMapConifg void 设置专题地图配置

# 1、获取专题

let maps = Cellsys.organization.maps;//事件集合
if (maps.length > 0) {
    let map = maps[0];
    let name = map.name;//专题名称
    let remark = map.remark;//专题备注信息
    let mapConifg = map.mapConifg;//专题地图配置
    let icon = map.icon;//专题图标
    let isPublish = map.isPublish;//专题是否发布
}

1
2
3
4
5
6
7
8
9
10

# 2、创建专题地图

专题地图通过组织[Organization]对象创建。创建专题地图首先需要声明地图配置信息,具体操作见代码示例

//声明地图配置信息
let mapPoint =  new Cellsys.MapPoint(23.130061, 113.264499);
let mapConfig = new Cellsys.MapConfig({
    "center": mapPoint,
    "zoom": 16
});
//创建专题地图
Cellsys.organization.createMap({
        "name": "专题地图名称",
        "remark": "专题地图描述",
        "icon": icon, 
        "mapConfig": MapConfig 
    })
    .then(map => {
        let newMap = map; //创建成功后会返回创建的专题地图
    })
    .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

# 3、修改专题地图

专题地图通过组织[Organization]对象进行修改。具体操作见代码示例

map.setName("修改后名称");
map.setRemark("修改后备注");
map.setPublish(false);//将发布状态调整为不发布
map.setIcon(icon);//修改图标。图标对象通过图标集合[IconSet]获取
Cellsys.organization.updateMap(map)
    .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.deleteMap(map)
    .then(() => {
        //删除成功
    })
    .catch(error => {
        console.log(error.code)
        console.log(error.message)
    })
1
2
3
4
5
6
7
8

# 图层[Layer]

图层常用属性如下:

属性名 值类型 属性描述
name String 图层的名称
remark String 图层的备注信息
icon Icon 图层的图标
geometryType String 图层类型
layerSymobl PointSymbol / PolylineSymbol / PolygonSymbol 图层的地图符号

图层常用方法如下:

方法名 返回类型 方法描述
setName void 设置图层名称
setMapFeatureSet void 设置图层关联的地图要素集合
setLayerSymbol void 设置图层的地图符号

# 1、获取图层

图层需要通过组织[Organization]对象获取。具体操作见代码示例:

//实例化查询配置,代表当前查询第1页数据,1页10条数据
let queryConfig = new Cellsys.QueryConfig(1, 10); 

/*获取组织下的图层*/
Cellsys.organization.queryLayers(queryConfig)
    .then(queryResult => {
        let pageInfo = queryResult.pageInfo;//页码信息
        let currentPage = pageInfo.pageNo;//当前的页码
        let pageSize = pageInfo.pageSize;//每页数量
        let totalPage = pageInfo.totalPage;//总页数
        let totalCount = pageInfo.totalCount;//数据总量
        /*返回组织下的图层数据*/
        let layers = queryResult.data
    })
    .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

同时也可以通过专题地图[Map]获取该地图专题下关联的图层[Layer]信息

/*获取专题地图关联的图层*/
map.queryLayers()
    .then(queryResult => {
        /*返回专题地图下的图层数据*/
        let layers = queryResult.data
    })
    .catch(error => {
        console.log(error.code)
        console.log(error.message)
    })
1
2
3
4
5
6
7
8
9
10

# 2、创建图层

图层[Layer]需要通过组织[Organization]对象创建。具体操作见代码示例

# (1)、创建标记图层

/*创建标记图层*/
Cellsys.organization.createMarkerLayer({
        "name": "标记图层名称" ,
        "remark": "标记图层描述" ,
        "markerSet": MarkerSet,
        "pointSymbol": pointSymbol
    })
    .then(layer => {
        //创建后返回新创建的图层对象
        let newLayer = layer;
    })
    .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

# (2)、创建路线图层

/*创建路线图层*/
Cellsys.organization.createLineLayer({
        "name": "路线图层名称" ,
        "remark": "路线图层描述" ,
        "lineSet": lineSet,
        "lineSymbol":polylineSymbol
    })
    .then(layer => {
        //创建后返回新创建的图层对象
        let newLayer = layer;
    })
    .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

# (3)、创建区域图层

/*创建路线图层*/
Cellsys.organization.createLineLayer({
        "name": "区域图层名称" ,
        "remark": "区域图层描述" ,
        "areaSet": areaSet,
        "polygonSymbol": polygonSymbol
    })
    .then(layer => {
        //创建后返回新创建的图层对象
        let newLayer = layer;
    })
    .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

# 3、修改图层

图层通过组织[Organization]对象来修改。具体操作见代码示例

layer.setName("修改名称");
layer.setRemark("修改备注");
layer.setMapFeatureSet(lineSet); //将图层修改为路线图层
layer.setLayerSymbol(mapSymbol); 
Cellsys.organization.updateLayer(layer)
    .then(() => {
        //修改成功
        let name = layer.name;//修改后的名称
        let remark = layer.remark;//修改后的备注
    })
    .catch(error => {
        console.log(error.code)
        console.log(error.message)
    })
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 4、删除图层

图层通过组织[Organization]对象来删除。具体操作见代码示例

Cellsys.organization.deleteLayer(layer)
    .then(() => {
        //删除成功
    })
    .catch(error => {
        console.log(error.code)
        console.log(error.message)
    })
1
2
3
4
5
6
7
8

# 5、获取地图要素

/*查询图层关联的地图要素*/
layer.queryMapFeatures()
    .then(queryResult => {
        let pageInfo = queryResult.pageInfo;//页码信息
        let currentPage = pageInfo.pageNo;//当前的页码
        let pageSize = pageInfo.pageSize;//每页数量
        let totalPage = pageInfo.totalPage;//总页数
        let totalCount = pageInfo.totalCount;//数据总量
        //根据地图要素集种类(标记、路线、区域)的不同,mapFeatures会变现为不同的子类的数组集合
        //标记-mapFeatures<MarkerFeature>;路线-mapFeatures<LineFeature>;区域-mapFeatures<AreaFeature>
        let mapFeatures = queryResult.data
    })
    .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

# 6、专题地图操作图层

# (1)、专题地图关联图层

//专题地图关联图层
map.associateLayer(layer)
    .then(() => {
        //专题地图关联图层成功
    })
    .catch(error=>{
        console.log(error.code)
        console.log(error.message)
    })
1
2
3
4
5
6
7
8
9

# (2)、专题地图取消关联图层

//专题地图取消关联图层
map.cancelAssociateLayer(layer)
    .then(()=> {
        //专题地图取消关联成功
    })
    .catch(error=>{
        console.log(error.code)
        console.log(error.message)
    })
1
2
3
4
5
6
7
8
9

# (3)、对图层进行排序

对专题地图里的图层进行排序,需要先将图层按所需的顺序在数组里进行排列。

let layers = [layer1, layer2, layer3, ....]
//专题地图取消关联图层
map.sortLayers(layers)
    .then(()=> {
        //排序成功
    })
    .catch(error=>{
        console.log(error.code)
        console.log(error.message)
    })
1
2
3
4
5
6
7
8
9
10