MapNavigationKit 是一个小型框架,扩展了 MapKit 已有的路由功能,尽管该功能并不突出,但它公开了一些额外的信息,您可以使用这些信息在 MapKit 之上完美构建导航应用程序。
尽管这些数据主要用于 MapKit 的第一手使用,但它也可以轻松地与其他地图 UI 框架一起使用——MapBox、GoogleMaps 和其他 SDK 提供了一种构建自定义折线和路线对象的方法,并且与特定地图 SDK 提供的默认(且可能付费的)替代方案相比,使用此包装器获取的数据具有优势。
只需将 MapNavigationKit pod 添加到您的 Podfile。然后运行 pod update 以自动获取框架。
您可以从 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 文件。