Classes

The following classes are available globally.

  • Logger implementation for internal usage

    See more

    Declaration

    Swift

    public class _Logger
  • Local data storage for Codable-complience records. The data will be preserved in “Application Support” folder in application container

    See more

    Declaration

    Swift

    open class CodablePersistentService<Record> where Record : Decodable, Record : Encodable
  • 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

    public class DefaultLocationProvider
    extension DefaultLocationProvider: LocationProvider
  • Common root for SearchEngine and CategorySearchEngine. Should never be instantiated directly

    See more

    Declaration

    Swift

    public class AbstractSearchEngine : FeedbackManagerDelegate
  • Category Search Engine used specifically for category search Checkout SearchEngine for more details

    See more

    Declaration

    Swift

    public class CategorySearchEngine : AbstractSearchEngine
  • 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 token through MGLMapboxAccessToken key in application’s Info.plist to share token with the others Mapbox SDKs

    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

    public class SearchEngine : AbstractSearchEngine
    extension SearchEngine: IndexableDataResolver
  • Search records data provider with local storage

    See more

    Declaration

    Swift

    public class LocalDataProvider<Record> : IndexableDataProvider where Record : IndexableRecord, Record : SearchResult, Record : Decodable, Record : Encodable
  • Basic location provider which returns the same coordinate on each request

    See more

    Declaration

    Swift

    open class PointLocationProvider : LocationProvider
  • OfflineManager handles TileStores and responsible for creating Search TilsetDescriptors

    See more

    Declaration

    Swift

    public class SearchOfflineManager
  • 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

    Declaration

    Swift

    public class SearchTileStore
  • Represents navigation route that consist of the set of coordinates

    See more

    Declaration

    Swift

    public class Route : Codable, Hashable
  • 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

    Declaration

    Swift

    public class SearchResponseInfo
  • Services provider for SearchEngine

    See more

    Declaration

    Swift

    public class ServiceProvider : ServiceProviderProtocol
  • 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

    Declaration

    Swift

    public class EventsManager : NSObject
  • 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 sendFeedback(event:) method of any SearchEngine instance.

    See more

    Declaration

    Swift

    public class FeedbackEvent
  • Profile feedback or build custom events for Mapbox Telemetry

    See more

    Declaration

    Swift

    public class FeedbackManager
  • Undocumented

    See more

    Declaration

    Swift

    public final class AddressAutofill