Как дать google place api место в виде строки и вернуть массив мест? - PullRequest
0 голосов
/ 15 марта 2020

Я просто хочу дать Google местах строку и получить список мест в ответ, я не хочу использовать фрагмент автозаполнения

1 Ответ

0 голосов
/ 16 марта 2020

после инициализации API мест с помощью этой функции

  private fun initPlaces() {
    Places.initialize(context!!, getString(R.string.placesApiKey))
    placesClient = Places.createClient(context!!)
    autocompleteSessionToken = AutocompleteSessionToken.newInstance()

}     

Вы можете просто отправить строку запроса после получения ее из edittext или чего-либо еще в функцию getSuggestion

private fun getSuggestions(query: String) {
    var findAutocompletePredictionsRequest=FindAutocompletePredictionsRequest
            .builder()
            .setSessionToken(autocompleteSessionToken)
            .setTypeFilter(TypeFilter.ADDRESS)
            .setQuery(query)
            .build()         placesClient!!.findAutocompletePredictions(findAutocompletePredictionsRequest).addOnCompleteListener(OnCompleteListener {
          if(it.isSuccessful){
              Log.d(TAG, "getSuggestions: -----------------------SUCCESS")
              var predictionsResponse=it.result
              predictionList=predictionsResponse!!.autocompletePredictions
              createList()


          }
          }
      })

}

, после чего вы можете используйте возвращенный список, чтобы заполнить представление переработчика или все, что вы хотите

private fun createList() {
    var suggestionsStringArray =Array<String>(predictionList!!.size){""}
    if(predictionList!!.isNotEmpty()){
        for (i in predictionList!!.indices){
            suggestionsStringArray[i] = predictionList!![i].getFullText(null).toString()
        }
        populateAdapter(suggestionsStringArray)
    }
}
...