Fellow Travellers

地名、专题、场景收藏

刘小标
字数统计: 468阅读时长: 2 min
2017/04/21 Share

一、 收藏模型

1、收藏类型

enum FavoriteType: Int {
   case Theme = 0     // 专题
   case Scene = 1     // 场景
   case Place = 2     // 地名
 }

2、收藏数据模型

class Archive: NSObject, NSCoding {
    var type: FavoriteType?
    var ID: String?
    var name: String?
    var createDate: String?
    var pointX: Double?
    var pointY: Double?
    var zoomScale: Double?
    var visibleLayerArray: NSMutableArray = NSMutableArray()
    var graphicArray: NSMutableArray = NSMutableArray()
}

解析:

type:收藏类型。上传到服务器上为Int型数据。
ID:    标识一条收藏记录唯一值。
name:收藏的名称。
createDate:记录收藏的具体时间。
pointX: 当前底图场景的中心点X坐标。
pointY:当前底图场景的中心点Y坐标。
zoomScale:当前底图场景的缩放比例。
visibleLayerArray:当前专题显示的图层IDs。
graphicArray:当前收藏的所有标注。

二、 场景收藏

场景包含内容:

1、    显示的专题图层
2、    绘制的标注
3、    当前地图中心位置
4、    当前地图缩放比例





代码如下:

private func addToFavoriteViewForScene(name: String) {
    let centerPt = CGPoint(x: self.mapView.center.x, y: self.mapView.center.y)
    let archiveItem = Archive()
    archiveItem.ID = Globe.newUUID()

    if self.annotaionToolBar != nil {
        let num = self.annotaionToolBar.savedJsonGraphics.count
        if num > 0  {
            archiveItem.graphicArray = NSMutableArray(array: self.annotaionToolBar.savedJsonGraphics)
        }
    }

    archiveItem.type = FavoriteType.Scene
    archiveItem.name = name
    archiveItem.createDate = Archive.now()
    archiveItem.pointX = self.mapView.toMapPoint(centerPt).x
    archiveItem.pointY = self.mapView.toMapPoint(centerPt).y
    archiveItem.zoomScale = self.mapView.mapScale


    archiveItem.visibleLayerArray = NSMutableArray(array: self.getVisibleTopicIDs())
    self.saveFavorite(archiveItem)
}

三、 专题收藏

专题收藏包含内容:

专题图层:





代码如下:

private func addToFavoriteViewForTheme(name: String,item: OMBaseItem) {

    let archiveItem = Archive()
    archiveItem.ID = Globe.newUUID()
    archiveItem.type = FavoriteType.Theme
    archiveItem.name = name
    archiveItem.createDate = Archive.now()
    archiveItem.pointX = 0
    archiveItem.pointY = 0
    archiveItem.zoomScale = 0

    archiveItem.visibleLayerArray = NSMutableArray(object: item.id!)
    self.saveFavorite(archiveItem)
}

四、 地名收藏

地名收藏,简单的可以理解为单要素收藏。






代码如下:

private func addToFavoriteViewForPlace(name: String, graphic: AGSGraphic) {

    let archiveItem = Archive()
    archiveItem.ID = Globe.newUUID()
    archiveItem.type = FavoriteType.Place
    archiveItem.name = name
    archiveItem.createDate = Archive.now()
    archiveItem.pointX = 0
    archiveItem.pointY = 0
    archiveItem.zoomScale = 0
    if graphic.fromSearch {
        var dict = graphic.encodeToJSON()
        dict["fromSearch"] = true
        archiveItem.graphicArray.addObject(dict)
    } else {
        var dict = graphic.encodeToJSON()
        dict["fromSearch"] = false
        archiveItem.graphicArray.addObject(dict)
    }
    archiveItem.visibleLayerArray = NSMutableArray()
    self.saveFavorite(archiveItem)
}
CATALOG
  1. 1. 一、 收藏模型
    1. 1.1. 1、收藏类型
    2. 1.2. 2、收藏数据模型
  2. 2. 二、 场景收藏
  3. 3. 三、 专题收藏
    1. 3.1. 专题图层:
  4. 4. 四、 地名收藏