Position 是一个轻量级的 iOS 定位库。

Build Status Swift Package Manager Pod Version Swift Version GitHub license

特性
“单次” 可自定义的位置请求
🌌 基于距离和时间的定位过滤
🛰 位置跟踪支持
🧭 设备朝向支持
🔒 权限检查和响应支持
🌐 地理空间数学实用工具
🏙 地点数据格式化实用工具
📊 自动低电量定位模式
📍 vCard 位置创建
🔭 基于多组件观察者的架构

快速开始

Position 可以通过 Swift Package Manager 或 Cocoa 依赖管理工具 CocoaPods 进行安装。或者,您可以直接将 Position 源代码文件复制到您的 Xcode 项目中。

# CocoaPods
pod "Position", "~> 0.7.0"

# Carthage
github "piemonte/Position" ~> 0.7.0

# SwiftPM
let package = Package(
    dependencies: [
        .Package(url: "https://github.com/piemonte/Position", majorVersion: 0)
    ]
)

用法

示例项目提供了如何集成 Position 的示例,或者您可以按照以下步骤操作。

确保您的应用程序的 Info.plist 文件包含位置使用描述、所需的设备功能“location-services”以及所需的后台模式(如果需要)。

请参阅示例项目以获取示例。

导入文件并将您的组件设置为 PositionObserver,如果您希望它成为委托。

import Position

class ViewController: UIViewController, PositionObserver {
	// ...

让组件将自身添加为观察者并配置适当的设置。

    override func viewDidLoad() {
        super.viewDidLoad()

        // ...

        Position.shared.addObserver(self)
        Position.shared.distanceFilter = 20

        if Position.shared.locationServicesStatus == .allowedWhenInUse ||
           Position.shared.locationServicesStatus == .allowedAlways {
            Position.shared.performOneShotLocationUpdate(withDesiredAccuracy: 250) { (location, error) -> () in
                print(location, error)
            }
        } else {
            // request permissions based on the type of location support required.
            Position.shared.requestWhenInUseLocationAuthorization()
            // Position.shared.requestAlwaysLocationAuthorization()
        }
    }

如果需要,观察委托。

    func position(position: Position, didChangeLocationAuthorizationStatus status: LocationAuthorizationStatus) {
        // location authorization did change, often this may even be triggered on application resume if the user updated settings
    }

请记住,在创建基于位置的应用程序时,请尊重用户的隐私,并对您如何使用他们的位置负责。如果您的应用程序需要位置权限 kCLAuthorizationStatusAuthorizedAlways,则尤其如此。

要使用 vCard 分享位置,只需在任何位置对象实例上调用 vCard 函数即可。

   let fileURL = location.vCard()

Core Location 扩展

Position 捆绑了各种 Core Location 的扩展,例如地理空间数学实用工具。例如,可以计算两个坐标点之间的方向,从而实现 方向视图 和其他航路点表示。

文档

您可以在这里找到文档。文档使用 jazzy 生成,并托管在 GitHub-Pages 上。

社区

资源

许可证

Position 在 MIT 许可证下可用,有关更多信息,请参阅 LICENSE 文件。