一、 收藏模型
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)
}