测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | 自定义 |
发布最新版本 | 2014年12月 |
由 未声明 维护。
依赖项 | |
TouchXML | >= 0 |
objective-zip | = 0.0.1 |
Simple KML 是一个轻量级的 KML 解析库,使用 Objective-C 编写,用于 iOS 平台。
它不用于绘图,而是用于解析。也就是说,开发者需要将 Simple KML 返回的数据结构转换为绘图代码,无论是 MapKit 中的注释、外部映射库中的结构、在 UIImage
上绘制路径,还是其他任何方式。
Simple KML 实质上是一个具有关于 KML 智能的 XML 解析器。它以层次结构方式展示 KML 数据,可以将类似 Simple KML 颜色定义转换为 UIColor
,将文本坐标转换为 CLLocation
,这样您就不需要手动转换。
Simple KML 已针对 iOS 5.0 及以上版本进行设计和构建。没有特别的原因不能适应 Mac OS X;只是还没有因为缺乏需求而进行这一转换。
Simple KML 是为了使用 ARC 而构建的。
Simple KML 依赖于 TouchXML,一个基于 DOM 的 XML 解析 Objective-C 库,以及 Objective-Zip,一个用于处理存档文件的库,这两个库都包含在下载中。
支持大部分基本的 KML 实体。
对 Object
、Feature
、Placemark
、Container
、Document
、Folder
、Geometry
、Point
、LineString
、LinearRing
、Polygon
、StyleSelector
、Style
、SubStyle
、BalloonStyle
、ColorStyle
、LineStyle
、PolyStyle
和 IconStyle
等提供基本支持。
简单调用。
SimpleKML *myKML = [SimpleKML KMLWithContentsOfFile:@"/path/to/file.kml" error:&error]
SimpleKML *myKML = [SimpleKML KMLWithContentsOfURL:[NSURL URLWithString:@"http://example.com/file.kml"] error:&error]
支持 KMZ 存档。
目前搜索存档中的顶级 KML 文件并检索捆绑的 IconStyle
实体的图标数据。
Cocoa 原生行为。
原生类型
SimpleKMLLineStyle *lineStyle = myPolygon.lineStyle; UIColor *lineColor = lineStyle.color;
NSArray *polygonPoints = myPolygon.outerBoundary.coordinates; // CLLocation 对象
UIColor *textColor = myPlacemark.style.balloonStyle.textColor;
UIImage *icon = myPlacemark.style.iconStyle.icon; // 计划:自动应用缩放、方向和父样式颜色
智能解析
SimpleKMLStyle *inlineStyle = myPlacemark.inlineStyle; // 在 <Placemark> 内部
SimpleKMLStyle *sharedStyle = myPlacemark.sharedStyle; // 与 <Document> 共享,无需引用 <StyleUrl>
SimpleKMLStyle *activeStyle = myPlacemark.style; // 内联样式会覆盖共享样式
SimpleKMLGeometry *geometry = myPlacemark.geometry; // <Point>、<Polygon>、<LineString>、<MultiGeometry> 等
SimpleKMLPoint *point = myPlacemark.point; // 如果 <Point> 存在于 <Placemark> 中,则是一个快速访问方式
智能错误处理
NSError *error;
SimpleKML *myKML = [SimpleKML KMLWithContentsOfFile:@"invalid.kml" error:&error];
if (error) { NSLog(@"%@", error); } // SimpleKMLParseError:KML格式不正确(LinearRing坐标数少于四个)
调试
gdb: po [mySimpleKMLObject source] // 包含原始 XML 源的保护变量
层次结构
SimpleKMLDocument *document = myPlacemark.document;
NSArray *documentFeatures = document.features;
请确保递归地克隆(使用 git clone --recursive
或 git submodule update --init
),以获取依赖的子模块 Objective-Zip 和 TouchXML。
在您的 Xcode 项目中包含所有 Simple KML 文件,以及如果您在项目中尚未使用这些文件,请包含 TouchXML 和 Objective-Zip 子目录中的文件。
根据 TouchXML 的安装指南,将 /usr/include/libxml2
添加到您的 "头文件搜索路径",并将 -lxml2
添加到您的 "其他链接器标志",因为 TouchXML 依赖于 libxml2
。
您还需要链接到 CoreLocation.framework
和 libz.dylib
。
如果您发现错误或愿意以其他方式贡献,请在上 GitHub 上fork该项目,并通过这种方式贡献力量。特别是,我希望能开始添加内置测试,并将一个伴随的 KML 测试文件库用于解析。
版权(c)2010-2012 Code Sorcery Workshop, LLC 和 Development Seed, Inc。
Simple KML 库应附有 LICENSE 文件。此文件包含与此发行版本相关的许可证。如果没有许可证,请联系Development Seed。