2016-11-22 1 views
1

В моем приложении Swift iOS я хочу, чтобы пользователь разместил экран поиска автозаполнения и разрешил им искать в контексте их текущее местоположение. По-видимому, это невозможно с помощью Google Place Autocomplete, поскольку нет способа передать текущий контекст местоположения.Swift: Google Place Picker, избегая карты UI

Мой второй выбор - использовать экран поиска Google Place Picker, потому что когда я запускаю Place Picker с центром по текущему местоположению, а затем нажимаю поиск, он ищет места в контексте с текущим местоположением.

Мой вопрос в том, можно ли взять пользователя непосредственно на экран поиска Place Picker, а затем убрать Place Picker после захвата выбранной информации о месте, избежать основного пользовательского интерфейса Place Picker?

+0

Что вы пытаетесь? Вы проверили [Place Picker для руководства iOS] (https://developers.google.com/places/ios-api/placepicker)? – noogui

+0

Да, я прочитал путеводитель. – Kashif

ответ

0

Это немного запутанно в документах, но я думаю, что вы хотите использовать GMSAutocompleteViewController вместо выбора места.

Пример кода ниже, ссылки на документы here.

import UIKit 
import GooglePlaces 

class ViewController: UIViewController { 

    // Present the Autocomplete view controller when the button is pressed. 
    @IBAction func autocompleteClicked(_ sender: UIButton) { 
    let autocompleteController = GMSAutocompleteViewController() 
    autocompleteController.delegate = self 
    present(autocompleteController, animated: true, completion: nil) 
    } 
} 

extension ViewController: GMSAutocompleteViewControllerDelegate { 

    // Handle the user's selection. 
    func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) { 
    print("Place name: \(place.name)") 
    print("Place address: \(place.formattedAddress)") 
    print("Place attributions: \(place.attributions)") 
    dismiss(animated: true, completion: nil) 
    } 

    func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) { 
    // TODO: handle the error. 
    print("Error: ", error.localizedDescription) 
    } 

    // User canceled the operation. 
    func wasCancelled(_ viewController: GMSAutocompleteViewController) { 
    dismiss(animated: true, completion: nil) 
    } 

    // Turn the network activity indicator on and off again. 
    func didRequestAutocompletePredictions(_ viewController: GMSAutocompleteViewController) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = true 
    } 

    func didUpdateAutocompletePredictions(_ viewController: GMSAutocompleteViewController) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = false 
    } 

} 
Смежные вопросы