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 文件。