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

在CoreSDK中,专题关联了多个图层,每个图层关联一个地图要素集。
地图要素集:标记集合、路线集合、区域集合,统称地图要素集。
因此,要配置好专题,得先要会配置图层。要显示专题数据,也需要知道如何获取图层关联的图层数据。
# (二)专题[Map]
# 1、获取专题
let organization = Cellsys.shared.organization//在初始化成功之后,可直接从Cellsys获取到organization对象
let maps = organization.maps//专题数据可直接从组织对象获取
1
2
2
# 2、专题基础信息
/*获取专题基础信息*/
let name = map.name//获取专题名称
let remark = map.remark//获取专题备注
let icon = map.icon//获取专题的图标
1
2
3
4
2
3
4
# 3、地图配置
/*地图配置信息*/
let mapConfig = map.mapConfig
let mapPoint = mapConfig.defaultCenter//获取默认地图中心点
let defaultLat = mapPoint.latitude
let defaultLng = mapPoint.longitude
let defaultZoom = mapConfig.defaultZoom//获取默认的缩放级别
1
2
3
4
5
6
2
3
4
5
6
# 4、新增专题
organization.createMap(name: "专题名称", remark: "备注信息") { obj, errorMessage in
//成功
if (obj != nil) {
let map = obj?.data as? Map
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 5、修改专题
map.remark = "修改备注信息"
organization.updateMap(map: map) { obj, errorMessage in
//成功
if (obj != nil) {
map = (obj?.data as! Map)
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 6、删除专题
organization.deleteMap(map: map) { obj, errorMessage in
//成功
if (obj != nil) {
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# (三)图层[Layer]
# 1、获取图层
/*获取图层*/
map?.queryLayers(callback: { obj, errorMessage in
//成功
if (obj != nil) {
/*PageInfo类为页码信息类*/
let pageInfo = obj!.pageInfo //页码信息
let currentPage = pageInfo?.pageNo //当前的页码
let pageSize = pageInfo?.pageSize //每页数量
let totalPage = pageInfo?.totalPage //总页数
let totalCount = pageInfo?.totalCount //数据总量
let layers = obj?.data as? [Layer]
//取第一个
let layer = layers?.first!
print(layer?.toJSON() as Any)
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 2、基础信息
/*基础信息*/
let name = layer.name//图层名称
let remark = layer.remark//图层备注
let icon = layer.icon//图层图标
1
2
3
4
2
3
4
# 3、地图样式
/*图层样式
* 根据地图要素集种类(标记、路线、区域)的不同,图层样式会是不同的MapSymbol子类。*/
let layerSymbol = layer.layerSymbol
1
2
3
2
3
# 4、获取地图要素
/*查询图层关联的地图要素*/
layer?.queryMapFeatures(callback: { obj, errorMessage in
//成功
if (obj != nil) {
/*PageInfo类为页码信息类*/
let pageInfo = obj!.pageInfo //页码信息
switch layer?.geometryType {
case .Point:
let markers = obj?.data as? [MarkerFeature]
break
case .Polyline:
let lines = obj?.data as? [LineFeature]
break
case .Polygon:
let areas = obj?.data as? [AreaFeature]
break
default:
break
}
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.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
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
# 5、新增图层
let pointSymbol = PointSymbol.new(mapSign: Icon.new(jsonIcon: ["iconId": 205,"rotate": 0,"fillColor":"#096dd9","fillOpacity": 1])!, fillColor: Color.new())
organization.createLayer(name: "新增Layer", remark: "备注信息", markerSet: markSet!, pointSymbol: pointSymbol) { obj, errorMessage in
//成功
if (obj != nil) {
let layer = obj?.data as? Layer
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 6、修改图层
layer.remark = "修改layer"
organization.updateLayer(layer: layer) { obj, errorMessage in
//成功
if (obj != nil) {
layer = (obj?.data as! Layer)
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 7、删除图层
organization.deleteLayer(layer: layer) { obj, errorMessage in
//成功
if (obj != nil) {
}
//失败
if (errorMessage != nil) {
let errorCode = errorMessage?.code //错误码
let errorMsg = errorMessage?.message //错误信息
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10