收藏    我在用   0 人在用
 -  null

Tiny high-performance Swift Polyline Simplification Library

 GitHub     下载     同步

9    171    16    over 1 year前

<p align="center" >
<img src="https://raw.githubusercontent.com/malcommac/SwiftSimplify/master/logo.png" width=200px height=205px alt="SwiftSimplify" title="SwiftSimplify">

CI Status

<p align="center" >★★ <b>Star our github repository to help us!</b> ★★</p>


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.


You also may like

Do you like SwiftRichString? I'm also working on several other opensource libraries.

Take a look here:

  • SwiftDate - Full features Dates & TimeZone management for iOS,macOS,tvOS and watchOS
  • Hydra - Promise, Async/Await on sterioids!
  • SwiftLocation - CoreLocation and Beacon Monitoring on steroid!
  • SwiftScanner - String scanner in pure Swift with full unicode support
  • SwiftSimplify - Tiny high-performance Swift Polyline Simplification Library
  • SwiftMsgPack - MsgPack Encoder/Decoder in Swit


  • iOS 8.0+ / Mac OS X 10.10+
  • Xcode 8.0
  • Swift 3.0


  • 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.


SwiftSimplify is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod "SwiftSimplify"


Usage is pretty straightforward: in fact you need just call the SwiftSimplify's class method simplify by passing your configuration.
Allowed parameters are:

class func simplify<T>(points: [T], tolerance: Float?, highQuality: Bool = false) -> [T];
  • points: An array of points. SwiftSimplify supports Swift's generic so you can pass an array of CGPoint ([CGPoint]) or array of CLLocationCoordinate2D ([CLLocationCoordinate2D).
  • 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.


Daniele Margutti, me@danielemargutti.com
You can reach me on twitter @danielemargutti. My web site is danielemargutti.com


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

No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up