VietMapPolyline 1.0.6

VietMapPolyline 1.0.6

nhatpv维护。



  • NhatPV

Build Status CocoaPods Licence

Swift中polyline编码/解码

  1. 功能
  2. 要求
  3. 集成
  4. 用法
  5. 注意
  6. 贡献者
  7. 许可

功能

  • CLLocationCoordinate2D数组编码为polyline
  • 将polyline解码为CLLocationCoordinate2D数组
  • CLLocation数组编码为polyline
  • 将polyline解码为CLLocation数组
  • 编码/解码相关级别(可选)
  • 100%单元测试覆盖率
  • 完整的文档
  • Travis CI持续集成
  • CocoaPod可用
  • 转换为MKPolyline

计划未来版本中实现

  • 转换为GMSPolyline
  • 示例项目
  • 可过滤特定级别上的位置

当支持可用时计划实现

要求

  • Xcode 8+
  • iOS 8.0+ / Mac OS X 10.10+ / tvOS 9.0+ / watchOS 2.0+
  • Swift 3.0

注意:支持Swift 2.3的最后一个版本是3.x系列。4.0将仅支持Swift 3.x。


集成

要在项目中使用此库,您可以使用CocoaPods、Carthage,或者手动集成

CocoaPods

您可以在Podfile中将Polyline集成如下:

pod 'Polyline', '~> 4.0'

Carthage

您可以在Cartfile中将Polyline集成如下:

github "raphaelmor/Polyline" ~> 4.0

Swift Package Manager

您可以使用Swift Package Manager将Polyline集成,将以下包添加到Package.swift文件中的dependencies

.Package(url: "https://github.com/raphaelmor/Polyline.git", .upToNextMinor(from: "4.2.1"))

手动

  • 将Polyline.swift拖放到您的项目树中。
  • 对于工作空间,您可能需要包括整个Polyline.xcodeproj

用法

Polyline编码

使用[CLLocationCoordinate2D](推荐)

let coordinates = [CLLocationCoordinate2D(latitude: 40.2349727, longitude: -3.7707443),
CLLocationCoordinate2D(latitude: 44.3377999, longitude: 1.2112933)]

let polyline = Polyline(coordinates: coordinates)
let encodedPolyline: String = polyline.encodedPolyline

// Or for a functional approach :
let encodedPolyline: String = encodeCoordinates(coordinates)

使用[CLLocation]

let locations = [CLLocation(latitude: 40.2349727, longitude: -3.7707443),
CLLocation(latitude: 44.3377999, longitude: 1.2112933)]

let polyline = Polyline(locations: locations)
let encodedPolyline: String = polyline.encodedPolyline

// Or for a functional approach :
let encodedPolyline: String = encodeLocations(locations)

您还可以编码级别

let levels: [UInt32] = [0,1,2,255]

let polyline = Polyline(coordinates: coordinates, levels: levels)
let encodedLevels: String? = polyline.encodedLevels

// Or for a functional approach :
let encodedLevels: String = encodedLevels(levels)

Polyline解码

您可以将解码为[CLLocationCoordinate2D](推荐)

let polyline = Polyline(encodedPolyline: "qkqtFbn_Vui`Xu`l]")
let decodedCoordinates: [CLLocationCoordinate2D]? = polyline.coordinates

// Or for a functional approach :
let coordinates: [CLLocationCoordinate2D]? = decodePolyline("qkqtFbn_Vui`Xu`l]")

您还可以解码为[CLLocation]

let polyline = Polyline(encodedPolyline: "qkqtFbn_Vui`Xu`l]")
let decodedLocations: [CLLocation]? = polyline.locations

// Or for a functional approach :
let locations: [CLLocation]? = decodePolyline("qkqtFbn_Vui`Xu`l]")

您还可以解码级别

let polyline = Polyline(encodedPolyline: "qkqtFbn_Vui`Xu`l]", encodedLevels: "BA")
let decodedLevels: [UInt32]? = polyline.levels

// Or for a functional approach :
let levels: [UInt32]? = decodeLevels("BA")

Polyline精度

默认精度为1e5:0.12345(使用Google的5位精度),但您可以在所有API方法和函数中指定自己的精度。

// OSRM uses a 6 digit precision
let polyline = Polyline(encodedPolyline: "ak{hRak{hR", precision: 1e6)

注意

此库尝试与由Google Maps iOS SDK生成的polyline保持一致的结果。用于编码polyline的在线工具在编码polyline方面有一些关于四舍五入的微小不一致(例如,0.000015被四舍五入为0.00002,但经度为0.00001)。

此代码尽量遵守GitHub Swift代码风格指南

贡献者

许可

Polyline遵循MIT许可。有关更多信息,请参阅LICENSE.txt