Skip to content
High-performance Swift polyline simplification library - Simplify.JS for Swift
Swift Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Configs
Resources
Sources/SwiftSimplify
SwiftSimplify.xcodeproj
Tests
iOSDemoApp
.gitignore
LICENSE
Package.swift
README.md
SwiftSimplify.gif
SwiftSimplify.podspec
logo.png

README.md

SwiftSimplify

Build Status License

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.

★★ Star our github repository to help us! ★★

Why

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.

SwiftSimplify

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 to Point2DRepresentable protocol (both CGPoint and CLLocationCoordinate2D 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.

Author

Daniele Margutti, me@danielemargutti.com

You can reach me on twitter @danielemargutti.

My web site is danielemargutti.com

License

SwiftSimplify is available under the MIT license. See the LICENSE file for more info.

You can’t perform that action at this time.