RCKML

GitHub

一个用 Swift 编写的用于读取和写入 KML 文件的库,设计目标是简单易用。

目录

安装

Swift Package Manager

.package(url: "https://github.com/RCCoop/RCKML.git", .upToNextMajor(from: "1.0.0"))

支持的 KML 类型

并非所有类型都支持 KML 文件可用的所有选项。 目前,我专注于可以转换为 MapKit 的类型和功能。

KMLDocument

KML 文件的根由 KMLDocument 结构体表示,它用作任何数量的特征和任何顶级全局样式的容器。

从头开始创建 KMLDocument 时(而不是从现有文件读取),您可以选择向文档添加名称和描述,然后添加包含的特征数组和全局样式字典。

public struct KMLDocument {
    public var name: String?
    public var featureDescription: String?
    public var features: [KMLFeature]
    public var styles: [KMLStyleUrl: KMLStyleSelector]
}

读取 KML 文件

let fileUrl = ...
let fileData = try Data(contentsOf: fileUrl)
let kmlString = try? String(contentsOf: fileUrl, encoding: .utf8)
let kmzFileUrl = ...
let kmzFileData = try Data(contentsOf: kmzFileUrl)

let documentFromData = try? KMLDocument(fileData)
let documentFromFileUrl = try? KMLDocument(fileUrl)
let documentFromString = try? KMLDocument(kmlString)
let documentFromKmzFile = try? KMLDocument(kmzFileUrl) //init(_ url:) works with either KML or KMZ files.
let documentFromKmzData = try? KMLDocument(kmzData: kmzFileData)

写入 KML 文件

let kmlDoc = KMLDocument(...)

let asData = kmlDoc.kmlData()
let asString = kmlDoc.kmlString()
let asKmzData = kmlDoc.kmzData()

未来待办事项

依赖项