SWIFT лимит google maps placeAPI автозаполнение в определенной стране - PullRequest
0 голосов
/ 10 февраля 2020

Я реализовал Google Maps Place API GMSAutocomplete. Работает нормально. Однако каждый раз, когда я ввожу номер адреса, я вижу много внешних адресов, которые не имеют отношения к делу. Мне было интересно, можно ли установить ограничение на API места, чтобы в результате отображались только адреса в стране? например, Канада?

В моей кнопке нажата fun c (для autocompleteViewController) У меня есть:

    let orderVC = GMSAutocompleteViewController()
    orderVC.delegate = self

    let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
      UInt(GMSPlaceField.placeID.rawValue) | UInt(GMSPlaceField.coordinate.rawValue))!
    orderVC.placeFields = fields

    let filter = GMSAutocompleteFilter()
    filter.type = .address
    orderVC.autocompleteFilter = filter

    present(orderVC, animated: true, completion: nil)

Мой viewdidLoad У меня есть:

let camera = GMSCameraPosition.camera(withLatitude: 43.6532,
                                          longitude: 79.3832,
                                          zoom: zoomLevel)
    mapView = GMSMapView.map(withFrame: view.bounds, camera: camera)
    mapView.settings.myLocationButton = true
    mapView.settings.compassButton = true
    mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

    mapView.isMyLocationEnabled = true

Моя функция автозаполнения это:

func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
print("Place name: \(place.name ?? "placenameNil")")
print("Place ID: \(place.placeID ?? "placeIdNil")")
print("Place attributions: \(place.attributions)")
print("place cordinate: \(place.coordinate.latitude) \(place.coordinate.longitude)")

dismiss(animated: true, completion: nil)

}

Нужно ли мне что-то вроде "locationManager.distanceFilter = 500" или есть рекомендуемый метод?

1 Ответ

1 голос
/ 10 февраля 2020

Согласно документации вы можете сделать следующее:

let autocompleteController = GMSAutocompleteViewController()
// other controller initialization you might have

let filter = GMSAutocompleteFilter()
filter.type = .establishment // there are more types if you also need that
filter.country = "US" // this is a standard ISO 3166 country code

autocompleteController.autocompleteFilter = filter

Они включили в свою документацию очень подробный пример того, как добавить фильтр.

...