Classes
The following classes are available globally.
-
Logger implementation for internal usage
See more -
Local data storage for Codable-complience records. The data will be preserved in “Application Support” folder in application container
See more -
Returns user location in energy efficient approach.
Would not trigger Location Permission dialogs but will retrieve permission changes notification. Suitable for
See moreSearchEngine
for providing user location by default without additional efforts.Declaration
Swift
-
Common root for
See moreSearchEngine
andCategorySearchEngine
. Should never be instantiated directly -
Category Search Engine used specifically for category search Checkout
See moreSearchEngine
for more details -
An entry object for online search with autocomplete suggestions powered by Mapbox Search services
SearchEngine requires Mapbox Access Token with any scope and visibility. We recommend to pass your token through
MBXAccessToken
key in application’sInfo.plist
to share the token with the Mapbox SDKs. You may choose to provide the accessToken as a parameter value instead.You must always assign
delegate
to receive search results provided by the engine. Update theSearchEngine.query
value to start or continue your search experience. It is possible to updatequery
value in real-time as the user types because the actual requests have a debounce logic.Listing 1 Create you first search request
let engine = SearchEngine() engine.delegate = self engine.query = "Mapbox"
Implement
SearchEngineDelegate
protocol to receive updates and search results with coordinates data. Pay attention that SearchEngine provides a list ofSearchSuggestion
which doesn’t include coordinates information.Listing 2 Implement
SearchEngineDelegate
protocolextension ViewController: SearchEngineDelegate { func resultsUpdated(searchEngine: SearchEngine) { displaySearchResults(searchEngine) } func resolvedResult(result: SearchResult) { presentSelectedResult(result) } func searchErrorHappened(searchError: SearchError) { presentSearchError(searchError) } }
Retrieve coordinates
Call
select(suggestion: SearchSuggestion)
when a customer makes a choice from the search results list to receive aSearchResult
with populated coordinates field. You can expect a resolved search result with populated coordinates to be returned inSearchEngineDelegate.resolvedResult(result: SearchResult)
delegate method.Listing 3 Select search result
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let suggestion = searchSuggestions[indexPath.row] dataSource.select(suggestion: suggestion) } … // SearchEngineDelegate implementation func resolvedResult(result: SearchResult) { presentAnnotationAt(coordinate: result.coordinate, title: result.name, subtitle: result.address?.formattedAddress(style: .medium)) }
Note
SearchEngine may respond with category suggestion. Selecting such suggestion would produce a new set of search results.Location bias
Location is strongly recommended for accurate search results. By default,
SearchEngine
would anticipateDefaultLocationProvider
to fulfill location data.DefaultLocationProvider
would receive location updates if application already have a location permission. The default implementation declare low accuracy for better battery efficiency. It’s possible to provide exact coordinate for search request withsearch(query:options:)
function. Engine will reuse these coordinates on each search request. To reset to default LocationProvider behavior, callsearch(query:options:)
with nil proximity inSearchRequest
.Listing 4 Provide search coordinate
See morelet engine = SearchEngine() engine.search(query: "mapbox", options: SearchOptions(proximity: CLLocationCoordinate2D(latitude: 38.8998315, longitude: -77.0346164)))
Declaration
Swift
-
Search records data provider with local storage
See more -
Basic location provider which returns the same coordinate on each request
See more -
OfflineManager handles
See moreTileStore
s and responsible for creating SearchTilsetDescriptor
s -
Simple wrapper for
MapboxCommon.TileStore
.This instance provides basic
TileStore` functionality for a rare case when someone using Offline search without other Mapbox frameworks.Use
See morecommonTileStore
property to access underlayingMapboxCommon.TileStore
-
Represents navigation route that consist of the set of coordinates
See more -
Search Response information. Contains search options. This response can be used for sending Missing Result feedback. One should build
See moreFeedbackEvent
usingSearchResponseInfo
SearchEngine.sendFeedback(event: FeedbackEvent, autoFlush: Bool = true) throws
-
Services provider for SearchEngine
See more -
Report search error or any other to the Mapbox telemetry.
That will help us to investigate issues related to search and search quality.
See more -
User Feedback event build based on SearchSuggestion or SearchResult. Does a result or suggestion have any problem with naming, location or something else? Please send feedback describing the issue! Can be sent by calling
See moresendFeedback(event:)
method of any SearchEngine instance. -
Profile feedback or build custom events for Mapbox Telemetry
See more -
Main entrypoint to the Mapbox Place Autocomplete SDK.
See more