🗺 The GraphHopper Routing API wrapped in an easy-to-use Swift framework.
The Routing API is part of the GraphHopper Directions API. Routing is the process of finding the 'best' path(s) between two or more points, where best depends on the vehicle and use case. With our API you have a fast and solid way to find this best path.
Use CocoaPods to install the framework. Add this to your Podfile:
pod 'GraphHopperRouting'
Then run the following command:
$ pod install
In order to use the framework, you'll also need a GraphHopper Access Token. You can either set your access token in the Info.plist
(Key is GraphHopperAccessToken) or pass it as an argument to the initializer of the Routing
class.
Setup the Routing
class
import CoreLocation
import GraphHopperRouting
// use this
let routing = Routing(accessToken: "YOUR ACCESS TOKEN")
// or if you have set your access token in the Info.plist
let routing = Routing()
Specify multiple points for which the route should be calculated.
let points = [
CLLocationCoordinate2D(latitude: 52.545669, longitude: 13.359375),
CLLocationCoordinate2D(latitude: 52.543164, longitude: 13.399887)
]
Configure the route options
let options = RouteOptions(points)
options.elevation = true
options.instructions = true
options.locale = "de-DE"
options.vehicle = .foot
options.optimize = true
Flexible route options are used to specify flexible features when querying the GraphHopper Routing API.
let options = FlexibleRouteOptions()
options.weighting = .shortest
options.algorithm = .dijkstrabi
Make the async request by calling the calculate(_:completionHandler)
method and passing the options.
let task = routing.calculate(options, completionHandler: { (paths, error) in
paths?.forEach({ path in
print(path.time)
print(path.distance)
print(path.descend)
print(path.ascend)
path.points.forEach({ point in
print(point)
})
})
})
For more information, consider reading the official documentation to learn more about the options and the result.
This project is released under the MIT license.
The GraphHopper Routing Swift Framework is crafted with ❤️ by @rmnblm and @iphilgood during the Bachelor thesis at HSR University of Applied Sciences in Rapperswil.