The Mappedin SDK for iOS provides a way to search for locations and categories using their names, descriptions and tags. The search is performed locally on the device, meaning it can be used when a device is offline.
A complete class that uses the code snippets in this guide can be found in the Mappedin iOS Github repo: SearchVC.kt
Methods for Searching
MPISearchManager offers two different methods to perform a search, MPISearchManager.search
and MPISearchManager.suggest
.
The search
method is used to search for locations and categories based on a query string. Results are returned as a List containing MPISearchResultLocations and MPISearchResultCategorys, which both extend from MPISearchResultCommon.
The suggest
method is used to generate suggested search terms for a given query string and returns a List of MPISearchSuggestions that contains a String with the suggestion.
Understanding Search Results
Search results contain a score and details about how it was matched. When displaying the results to a user, the results should be sorted to show the highest score first.
Code Example
Below is a code sample that performs the following operations:
- Performs a search using the String
query
. - Filters the results that contain locations (
MPISearchResultLocation
), removing categories (MPISearchResultCategory
). - Filters locations that contain the type of “tenant”. Note that location types will be unique to each venue and are chosen by the map administrator.
- Sorts the results by score with the highest score first.
mapView?.searchManager.search(query: searchText) { results in let searchLocations = results // Filter the results that contain locations. .compactMap { $0 as? MPISearchResultLocation } // Filter locations that contain the type of “tenant”. .filter({$0.object.type == "tenant"}) // Sort the results by score with the highest score first. .sorted(by: {$0.score > $1.score})}
A complete class that uses the code snippets in this guide can be found in the Mappedin iOS Github repo: SearchVC.kt