Как получить координаты выбранного места в Google Местный прогноз автозаполнения в табличном представлении ios swift - PullRequest
0 голосов
/ 09 сентября 2018

Я могу получить результаты автозаполнения Google в виде таблицы, используя приведенный ниже код. теперь я ищу, как получить координаты выбранного места таблицы?

 func didAutocomplete(with predictions: [GMSAutocompletePrediction]) {
    tableData.removeAll()

    for predicition in predictions
    {
         tableData.append(predicition.attributedFullText.string)
    }
    table1.reloadData()
}

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

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

}

1 Ответ

0 голосов
/ 09 сентября 2018

От 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
        }
    }
}

Вы можете узнать больше об этом здесь

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