# 专题地图
# 专题与图层
专题是可综合显示多种地图要素的地图。通常可用于显示某种主题的地图。
地图要素:标记要素、路线要素、区域要素,统称地图要素。

在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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2
3
4
5
6
7
8
9
10