SwiftSimplify 是一个小巧的高性能 Swift 多边形简化库,从 JavaScript 的 Simplify.js 转移过来。原始作品来自 Leaflet,一个由 Vladimir Agafonkin 开发的 JS 互动地图库。
它结合了 Douglas-Peucker 和径向距离算法。可以在浏览器和服务器平台上运行。
★★ 在我们 GitHub 仓库上星标以帮助我们! ★★
为什么
多边形简化显著减少了多边形中的点数,同时保留了其形状,在处理时给予巨大的性能提升,并减少了视觉噪声。例如,在浏览器中使用 MapKit 渲染具有 70k 个点的线图或地图路线时,这是必不可少的。
要求
- iOS 8.0, watchOS 2.0, tvOS 9.0
- Swift 5.x+
通讯
- 如果您 发现了错误,请创建一个 issue。
- 如果您 有功能请求,请创建一个 issue。
- 如果您 想贡献,提交一个 pull request。
安装
SwiftSimplify可通过CocoaPods获取。要安装,只需将以下行添加到您的Podfile中
pod "SwiftSimplify"
用法
用法非常简单:实际上您只需调用SwiftSimplify的类方法simplify,并传递您的配置
let allPoints: [Point2DRepresentable] = ...
let simplifiedPoints = SwiftSimplify.simplify(allPoints, tolerance: tolerance)
允许的参数包括
points
:一个点数组。SwiftSimplify支持Swift的泛型,因此您可以通过数组传递符合Point2DRepresentable
协议的对象(CGPoint
和CLLocationCoordinate2D
对象都支持它)。tolerance
:(默认为1)影响简化的程度(与点坐标相同的度量)");highQuality
:(默认为false)排除基于距离的预处理步骤,这会导致最高的简化质量,但运行速度慢约10-20倍。
作者
Daniele Margutti, [email protected]
您可以在twitter上联系我 @danielemargutti.
我的网站是danielemargutti.com
许可协议
SwiftSimplify遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。