# 五、专题地图

# (一)专题与图层

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

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

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

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

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

# (二)专题[Map]

# 1、获取专题

let organization = Cellsys.shared.organization//在初始化成功之后,可直接从Cellsys获取到organization对象
let maps = organization.maps//专题数据可直接从组织对象获取
1
2

# 2、专题基础信息

/*获取专题基础信息*/
let name = map.name//获取专题名称
let remark = map.remark//获取专题备注
let icon = map.icon//获取专题的图标
1
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

# 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

# 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

# 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

# (三)图层[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、基础信息

/*基础信息*/
let name = layer.name//图层名称
let remark = layer.remark//图层备注
let icon = layer.icon//图层图标
1
2
3
4

# 3、地图样式

/*图层样式
 * 根据地图要素集种类(标记、路线、区域)的不同,图层样式会是不同的MapSymbol子类。*/
let layerSymbol = layer.layerSymbol
1
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

# 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

# 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

# 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