От GMSAutocompletePrediction вы получите placeID
, который является текстовым идентификатором, который уникально идентифицирует место. Чтобы получить место по идентификатору, позвоните GMSPlacesClient lookUpPlaceID:callback:
, передав идентификатор места и метод обратного вызова.
Так что вам нужно объявить еще один глобальный массив для сохранения placeID. Или вы можете использовать один массив для сохранения объекта GMSAutocompletePrediction; Извлеките attribuFFullText в cellForRowAtIndexPath для заполнения меток и извлеките placeID в didSelectRow.
Допустим, ваша таблица данных является массивом объекта GMSAutocompletePrediction.
var tableData = [GMSAutocompletePrediction]()
Тогда ваш метод делегата didAutocomplete будет выглядеть так:
func didAutocomplete(with predictions: [GMSAutocompletePrediction]) {
tableData = predictions
}
И ваш cellForRowAtIndexPath будет: -
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
/* Intitialise cell */
let predictionText = tableData[indexPath.row]attributedFullText.string
print(“Populate \(predictionText) in your cell labels”)
/* Return cell */
}
И ваш didSelectRowAt будет: -
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let prediction = tableData[indexPath.row]
if let placeID = predicition.placeID {
let placesClient = GMSPlacesClient.shared()
placesClient.lookUpPlaceID(placeID) { (place, error) in
if let error = error {
print("lookup place id query error: \(error.localizedDescription)")
return
}
guard let place = place else {
print("No place details for \(placeID)")
return
}
let searchedLatitude = place.coordinate.latitude
let searchedLongitude = place.coordinate.longitude
}
}
}
Вы можете узнать больше об этом здесь