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 SearchEngine for providing user location by default without additional efforts.

    See more

    Declaration

    Swift

  • Common root for SearchEngine and CategorySearchEngine. Should never be instantiated directly

    See more
  • Category Search Engine used specifically for category search Checkout SearchEngine for more details

    See more
  • 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’s Info.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 the SearchEngine.query value to start or continue your search experience. It is possible to update query 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 of SearchSuggestion which doesn’t include coordinates information.

    Listing 2 Implement SearchEngineDelegate protocol

       extension 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 a SearchResult with populated coordinates field. You can expect a resolved search result with populated coordinates to be returned in SearchEngineDelegate.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 anticipate DefaultLocationProvider 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 with search(query:options:) function. Engine will reuse these coordinates on each search request. To reset to default LocationProvider behavior, call search(query:options:) with nil proximity in SearchRequest.

    Listing 4 Provide search coordinate

       let engine = SearchEngine()
       engine.search(query: "mapbox", options: SearchOptions(proximity: CLLocationCoordinate2D(latitude: 38.8998315, longitude: -77.0346164)))
    
    See more

    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 TileStores and responsible for creating Search TilsetDescriptors

    See more
  • Simple wrapper for MapboxCommon.TileStore. This instance provides basicTileStore` functionality for a rare case when someone using Offline search without other Mapbox frameworks.

    Use commonTileStore property to access underlaying MapboxCommon.TileStore

    See more
  • 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 FeedbackEvent using SearchResponseInfo SearchEngine.sendFeedback(event: FeedbackEvent, autoFlush: Bool = true) throws

    See more