High-performance polyline simplification library
SwiftSimplify is a tiny high-performance Swift polyline simplification library ported from Javascript's Simplify.js. Original work come from Leaflet, a JS interactive maps library by Vladimir Agafonkin.
It uses a combination of Douglas-Peucker and Radial Distance algorithms. Works both on browser and server platforms.
Polyline simplification dramatically reduces the number of points in a polyline while retaining its shape, giving a huge performance boost when processing it and also reducing visual noise. For example, it's essential when rendering a 70k-points line chart or a map route in the browser using MapKit.
Requirements
- iOS 8.0, watchOS 2.0, tvOS 9.0
- Swift 5.x+
Communication
- If you found a bug, open an issue.
- If you have a feature request, open an issue.
- If you want to contribute, submit a pull request.
Installation
SwiftSimplify is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "SwiftSimplify"
Usage
Usage is pretty straightforward: in fact you need just call the SwiftSimplify's class method simplify by passing your configuration:
let allPoints: [Point2DRepresentable] = ...
let simplifiedPoints = SwiftSimplify.simplify(allPoints, tolerance: tolerance)
Allowed parameters are:
points
: An array of points. SwiftSimplify supports Swift's generic so you can pass an array of objects which are conforms toPoint2DRepresentable
protocol (bothCGPoint
andCLLocationCoordinate2D
objects supports it).tolerance
: (1 by default) Affects the amount of simplification (in the same metric as the point coordinates)highQuality
: (false by default) Excludes distance-based preprocessing step which leads to highest quality simplification but runs ~10-20 times slower.
β€οΈ Your Support
Hi fellow developer!
You know, maintaing and developing tools consumes resources and time. While I enjoy making them your support is foundamental to allow me continue its development.
If you are using SwiftSimplify or any other of my creations please consider the following options:
Installation
SwiftSimplify is compatible with Swift 5.x+ under iOS (11+) and macOS platforms.
You can install it via CocoaPods:
use_frameworks!
pod 'SwiftSimplify'
or SPM in your Package.swift
:
import PackageDescription
let package = Package(name: "YourPackage",
dependencies: [
.Package(url: "https://github.com/malcommac/SwiftSimplify.git", majorVersion: 0),
]
)
Consider
Contributing
- If you need help or you'd like to ask a general question, open an issue.
- If you found a bug, open an issue.
- If you have a feature request, open an issue.
- If you want to contribute, submit a pull request.
Copyright & Acknowledgements
SwiftSimplify is currently owned and maintained by Daniele Margutti.
You can follow me on Twitter @danielemargutti.
My web site is https://www.danielemargutti.com
This software is licensed under MIT License.
Follow me on: