MapNavigationKit

MapNavigationKit 是一个小型框架,扩展了 MapKit 已有的路由功能,尽管该功能并不突出,但它公开了一些额外的信息,您可以使用这些信息在 MapKit 之上完美构建导航应用程序。

尽管这些数据主要用于 MapKit 的第一手使用,但它也可以轻松地与其他地图 UI 框架一起使用——MapBoxGoogleMaps 和其他 SDK 提供了一种构建自定义折线和路线对象的方法,并且与特定地图 SDK 提供的默认(且可能付费的)替代方案相比,使用此包装器获取的数据具有优势。

获取框架

通过 CocoaPods 安装

只需将 MapNavigationKit pod 添加到您的 Podfile。然后运行 pod update 以自动获取框架。

从 GitHub 获取框架

您可以从 GitHub 上获取已发布的编译框架包或其源代码。查看仓库或从Releases部分获取。

开发要求

所有开发要求实际上都是建议,因为它反映了我们用于开发和分发代码的环境。

生产部署

部署要求确定了当您将框架与您的项目一起分发时,与框架兼容的最低环境。

安装

快速使用介绍

此快速示例展示了如何使用该框架来获取具有代表性的路线。

要求

代码

// Big Ben
let srcLocation = CLLocation(latitude: 51.5003646652, longitude: -0.1214328476)

// Greenwich Observatory
let dstLocation = CLLocation(latitude: 51.4733514399, longitude: -0.00088499646)

let query = MNKRouteQuery(type: .walking, source: srcLocation, destination: dstLocation)

MNKRouteFetcher.fetchRoute(query: query) { (route) in
	guard let route = route else { return }
	let steps = route.steps
		.filter { $0.localizedInstructions?.isEmpty == false }
		.map { "- After \(Int($0.nextManeuverDistance))m: \($0.localizedInstructions!)" }
		.joined(separator: "\n")
	print(steps)
}

示例输出

- After 329m: Turn left onto Saint Margaret Street
- After 66m: Keep left onto Saint Margaret Street
- After 641m: At the roundabout, take the first exit onto Lambeth Bridge
- After 326m: At the roundabout, take the second exit onto Lambeth Road
- After 957m: Turn left onto A302
- After 133m: Turn right onto Westminster Bridge Road
- After 471m: Continue onto London Road
- After 292m: Turn left onto Elephant and Castle
- After 798m: Keep right onto New Kent Road
- After 602m: Continue onto Old Kent Road
- After 6459m: Turn left onto General Wolfe Road
- After 82m: Turn right onto Chesterfield Walk
- After 83m: Turn left onto Chesterfield Walk
- After 16m: Prepare to park your car
- After 0m: Take a right
- After 50m: Take a right
- After 37m: The destination is on your left

MapNavigationKit 可以使用 Swift Playgrounds 非常容易地进行测试。

基本类

描述
MNKRoute 基本 Route 实例
MNKRouteStep 特定的 Route 步骤
MNKRouteQuery 用于获取的查询实例
MNKRouteFetcher 获取工作器
MNKRouting 路由提供者
MNKRoutingInfo 当前,可显示的路由信息

许可证

本项目根据 MIT 许可证的条款获得许可。有关详细信息,请参阅 LICENSE 文件。