включить использование api поиска tomtom в котлине
Искал уже неделю, Официальная документация вообще непонятна.
как упоминалось там, код
val searchServiceConnection = SearchServiceManager.createAndBind(context,
searchServiceConnectionCallback)
должен инициализировать API поиска в приложении. но непонятно, как им пользоваться после этого.
Я правильно установил и инициализировал API:
Gradle:
//library required for search
implementation("com.tomtom.online:sdk-search:2.4264")
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
AndroidManifest
<meta-data
android:name="OnlineSearch.Key"
android:value="your-tomtom-key" />
2 ответа
Решение
Я предполагаю, что у вас есть правильный ключ API внутри файла AndroidManifest.xml. Из приведенного выше вы можете начать играть с TomTom Search API в три этапа:
Создайте объект SearchAPI:
val searchApi = OnlineSearchApi.create(applicationContext)!!
Создайте объект поискового запроса:
val text = "Berlin" val searchQuery = FuzzySearchQueryBuilder.create(text).build()
Вызовите Search API и получите результаты внутри слушателя:
searchApi.search(searchQuery, object: FuzzySearchResultListener { override fun onSearchResult(response: FuzzySearchResponse?) { Toast.makeText(applicationContext, "results", Toast.LENGTH_SHORT).show() } override fun onSearchError(error: SearchError?) { Toast.makeText(applicationContext, "error", Toast.LENGTH_SHORT).show() } })
Основываясь на данном ответе, который теперь устарел, вот новый эквивалент:
private val searchApi = OnlineSearchApi.create(application, TOMTOM_API_KEY)
val term = "Berlin"
searchApi.search(FuzzySearchSpecification.Builder(term).build(), object : FuzzyOutcomeCallback {
override fun onError(error: SearchException) {
Log.e(TAG, "onError: ", error)
}
override fun onSuccess(fuzzyOutcome: FuzzyOutcome) {
for (fuzzyDetails in fuzzyOutcome.fuzzyDetailsList)
fuzzyDetails.apply { // process results (here we just print them)
Log.d(TAG, "onSuccess: fuzzyDetails = $fuzzyDetails")
}
}
})