The viv.location library provides:
location:Autocomplete macro that creates an auto-complete Views component that presents real-time completion suggestions for contacts and nearby locations (named points).Autosuggest action invoked by the Autocomplete macro.This reference lists out several of the models available in this library capsule. Some sections contain tables listing information about those concepts or actions.
| Input | Type | Notes |
|---|---|---|
| searchTerm | SearchTerm | Required |
| isFuzzyMatchAddressType | boolean | true: use fuzzy matching for Geo addresses |
| isSearchGeoLocations | boolean | true: search geo locations |
There are matching primitive concepts for each of the Autosuggest inputs.
| Concept | Type | Description |
|---|---|---|
| SearchTerm | text | term used to search for contacts or locations |
| IsFuzzyMatchAddressType | boolean | true: use fuzzy matching for Geo addresses |
| IsSearchGeoLocations | boolean | true: search geo locations |
The viv.location library imports viv.geo.
Accessing the user's contacts requires the contacts library permission from bixby.contact. Read bixby.contact documentation for more details. If this permission is not granted, Autosuggest can still autocomplete named locations.
The recommended way to use the auto-complete functionality of viv.location is to use the provided location:Autocomplete macro.
input-view {
match: DestinationPoint
message ("Where would you like to go?")
render {
macro (location:Autocomplete) {
param (noResultText) {
dialog-template ("No results")
}
param (placeholder) {
dialog-template ("Search for locations")
}
select-button-text {
template ("Ok")
}
}
}
}The macro takes three text parameters:
noResultText: displayed when there are no possible results for the completion as entered by the user. The default is "No results".placeholder: The placeholder text used for the auto-complete field. The default is "Search for locations".searchResultsLabel: The label used as a title for the search results. The default is "Search Results".While it is recommended that you use the macro, you can create your own auto-complete component that uses the Autosuggest action. The macro creates one similar to the following:
...
auto-complete {
type (geo.NamedPoint)
no-result-text { template ("No results") }
placeholder { template ("Search for locations") }
source {
collect-with (query) {
intent {
goal: Autosuggest
value: SearchTerm$expr (query)
value: IsFuzzyMatchAddressType (true)
}
}
label { template ("Search Results") }
where-each (place) {
display {
primary-text { template ("[#{value(place.name)}]") }
secondary-text { template ("[#{value(place.address)}]") }
}
on-select {
intent {
goal: geo.NamedPoint
value: viv.core.FormElement (place)
}
}
}
permissions {
library-permission (contact:contacts)
library-permission (self:profile)
}
}
}
...By default, the Autosuggest action will use location data to help resolve suggestions. You can disable this by setting IsSearchGeoLocations to false in the intent block:
intent {
goal: location.Autosuggest
value: location.SearchTerm$expr (query)
value: location.IsSearchGeoLocations (false)
}If you disable isSearchGeoLocations, then Autosuggest will not be able to autocomplete locations.
Setting IsFuzzyMatchAddressType to true will allow "fuzzy matching" for address types such as home and office. This is set to true by the location:Autocomplete macro, but it defaults to false.