This package provides middlewares for SwiftRex handling MapKit related actions.
In order to estimate the time of arrival, the first step is to create a Journey object containing facts about the intended route. This object can then be used to create an ETAAction, which, after it is dispatched, is handled by the eta middleware (AppleMapsMiddleware.eta). The accompanying reducer (AppleMapsReducer.eta) updates the state (ETAState) accordingly.
struct ETAAction {
static let cancel: ETAAction
static func calculateETA(for journey: Journey) -> ETAAction
}
enum ETAState {
case initial
case estimating
case failed(error: Error, journey: Journey)
case received(MKDirections.ETAResponse)
case canceled
}
A dispatched LocalSearchAction object initializes a map related search, which is conducted by AppleMapsMiddleware.localSearch based on either a search query filtered by region and/or results types or a MKLocalSearchCompletion object. The AppleMapsReducer.localSearch object updates to current state with the resulting output of the middleware.
struct LocalSearchAction {
static let cancel: LocalSearchAction
static func search(for query: String, in region: MKCoordinateRegion?, resultTypes: MKLocalSearch.ResultType) -> LocalSearchAction
static func search(for completion: MKLocalSearchCompletion) -> LocalSearchAction
}
enum LocalSearchState {
case initial
case searching
case canceled
case received([MKMapItem])
case failed(Error)
}
The related AppleMapsMiddleware.localSearchCompleter middleware provides completions for a query fragment received by an incoming LocalSearchCompleterAction object. Before the middleware sends completions, it needs to be activated (or: initialized) with an action containing result types, an optional points of interest filter and a possible region to reduce the search spectrum.
struct LocalSearchCompleterAction {
static let cancel: LocalSearchCompleterAction
static func initilize(resultTypes: MKLocalSearchCompleter.ResultType, filter: MKPointOfInterestFilter?, region: MKCoordinateRegion?) -> LocalSearchCompleterAction
static func requestCompletionsFor(queryFragment: String) -> LocalSearchCompleterAction
}
enum LocalSearchCompleterState {
case initial
case initilized
case searching
case received([MKLocalSearchCompletion])
case failed(Error)
case canceled
}