Polyline 5.1.0

Polyline 5.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2022年9月
SPM支持 SPM

Raphaël MorTom TaylorMinh Nguyễn 维护。



Polyline 5.1.0

Build Status CocoaPods Swift 5 Licence

Swift 中的 Polyline 编码/解码

  1. 特性
  2. 要求
  3. 集成
  4. 使用指南
  5. 注意项
  6. 贡献者
  7. 许可证

特性

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

计划未来发布的功能

  • 转换为 GMSPolyline
  • 示例项目
  • 筛选特定等级可用的位置

计划在支持可用时发布的功能

  • 使用 Coveralls 进行代码覆盖率检测

需求

  • Xcode 11+
  • iOS 10.0+ / Mac OS X 10.12+ / tvOS 10.0+ / watchOS 3.0+ / Linux
  • Swift 5.0

集成

要在项目中使用此库,您可以使用 CocoaPods、Carthage、Swift 包管理器或手动集成

CocoaPods

您可以在 Podfile 中这样集成 Polyline

pod 'Polyline', '~> 5.0'

Carthage

您可以在您的 Cartfile 中这样集成 Polyline

github "raphaelmor/Polyline" ~> 5.0

Swift 包管理器

要在 Xcode 中使用 Swift Package Manager 将 Polyline 集成到应用程序中

  1. 转到文件 ‣ Swift 包 ‣ 添加包依赖项。
  2. https://github.com/raphaelmor/Polyline.git 作为包存储库输入,然后点击下一步。
  3. 将规则设置为版本、上一个主要版本,并将 5.0.2 作为最低版本要求。点击下一步。

或者要将 Polyline 集成到另一个 Swift 包中,请将以下包添加到 dependencies 中的 Package.swift 文件

.package(url: "https://github.com/raphaelmor/Polyline.git", from: "5.0.2")

手册

要手动安装 Polyline,请将 Polyline.xcodeproj 添加到 Xcode 工作区中,然后链接您的应用程序到 Polyline.framework。

在技术上,您可以通过直接将 Polyline.swift 和 CoreLocation.swift 添加到您的项目中来安装 Polyline,但这种方法不推荐,因为将来可能会省略重要的文件。

使用方法

Polyline 编码

使用 (推荐)

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 生成的折线保持一致的结果。用于 编码折线 的在线工具在舍入方面有些细微不一致(例如,0.000015 舍入到 0.00002 对于纬度,但 0.00001 对于经度)。

此代码试图遵守 GitHub Swift 风格指南

贡献者

许可证

Polyline在MIT许可证下发布。更多信息请参阅LICENSE.txt