OfflineSearch provides built-in search capability for the Mappedin React Native SDK v5. It is exposed as a property of the MapViewStore class and indexes the locations and categories for an easy-to-use search feature. This lightweight but capable search engine only requires one line to query.
const results = await mapView.current.OfflineSearch.search("Foo");
A Searchable Directory
The following video demonstrates a directory listing of tenants in the Mappedin Demo Mall. Running on both Android and iOS, the search quickly filters the list to only display relevant results. Selecting an item will cause the map to highlight and zoom on the listed location.
The code for this demo is available as part of Mappedin's React Native demo application on GitHub.
Search Settings
The search parameters can be tweaked with following constants, which are described in TMappedinOfflineSearchAllOptions. The default values were chosen to prioritize the primary index, for a balanced indexing time and to provide some fuzziness to account for possible typos in search queries.
{ CATEGORY_LOCATION_DESCRIPTION_WEIGHT: number; CATEGORY_LOCATION_NAME_WEIGHT: number; CATEGORY_LOCATION_TAGS_WEIGHT: number; CATEGORY_NAME_WEIGHT: number; LOCATION_DEFAULT_RANK: number; LOCATION_NAME_WEIGHT: number; PRIMARY_INDEX_FUZZYNESS: number; PRIMARY_INDEX_TAGS_NAME_WEIGHT: number; PRIMARY_INDEX_WEIGHT: number; RATIO_OF_FUZZY_TO_EXACT: number; RATIO_OF_PREFIX_TO_EXACT: number; SECONDARY_INDEX_WEIGHT: number;}
Location names, descriptions, categories and tags are searched by default. You can also opt-in for deeper indexing with the following options. Using them will increase the indexing time, however so they're not turned on by default.
searchDescriptionsInCategories
to additionally index all tags for every location in every categorysearchTagsInCategories
to also index all tags for every location in every category
To adjust these parameters, provide a value for searchOptions
at initialization of the <MiMapView />
.
<MiMapView key="mappedin" ref={mapView} options={{ // See Trial API key Terms and Conditions // https://developer.mappedin.com/api-keys/ venue: "mappedin-demo-mall", clientId: "5eab30aa91b055001a68e996", clientSecret: "RJyRXKcryCMy4erZqqCbuB1NbR66QTGNXVE0x3Pg6oCIlUR1", searchOptions: { // ... search parameters }, }}/>