Границы автоматического заполнения API Google Place не работают в быстрой iOS
Я реализовал API автозаполнения в Google Place и применил границы, чтобы ограничить свой автозаполненный поиск одним конкретным городом Орландо, Флорида, США, но API Google Place не фильтрует данные только по этому городу. Это поиск по всему США и другим городам за пределами США. Я хочу, чтобы google autocomplete api возвращал только адреса этого города. Вот код для того же:
let placesClient = GMSPlacesClient()
let searchBound = getCoordinateBounds(latitude: CLLocationDegrees(28.5383), longitude: CLLocationDegrees(81.3792), distance: 1.45)
let filter = GMSAutocompleteFilter()
filter.country = "USA"
placesClient.autocompleteQuery(text!, bounds: searchBound, filter: filter, callback: { (results, error) in
})
// Мой метод getCoordinateBounds
func getCoordinateBounds(latitude:CLLocationDegrees ,
longitude:CLLocationDegrees,
distance:Double = 0.001)->GMSCoordinateBounds{
let center = CLLocationCoordinate2D(latitude: latitude,
longitude: longitude)
let northEast = CLLocationCoordinate2D(latitude: center.latitude + distance, longitude: center.longitude + distance)
let southWest = CLLocationCoordinate2D(latitude: center.latitude - distance, longitude: center.longitude - distance)
return GMSCoordinateBounds(coordinate: northEast,
coordinate: southWest)
}
Примечание: я хочу отфильтровать адреса, которые имеют радиус около 100 миль от этой широты и долготы (именно поэтому я дал градус 1,45). Еще одна вещь, которую я добавил в страну страны США после того, как обнаружил, что мой фильтр границ не работает должным образом. Пока что я могу ограничить поиск адресов в США.
1 ответ
Вы также должны определить boundsMode
параметр в вашем placesClient.autocompleteQuery()
вызов. Посмотрите на документацию:
https://developers.google.com/places/ios-api/reference/interface_g_m_s_places_client
boundsMode
должен быть равен GMSAutocompleteBoundsMode.Restrict
в
интерпретировать границы как ограничение. По умолчанию границы интерпретируются как смещение, поэтому вы получаете результаты извне.
https://developers.google.com/places/ios-api/reference/group___autocomplete_bounds_mode
let placesClient = GMSPlacesClient()
let searchBound = getCoordinateBounds(latitude: CLLocationDegrees(28.5383), longitude: CLLocationDegrees(81.3792), distance: 1.45)
let filter = GMSAutocompleteFilter()
filter.country = "USA"
placesClient.autocompleteQuery(text!, bounds: searchBound, boundsMode: GMSAutocompleteBoundsMode.Restrict, filter: filter, callback: { (results, error) in
})
Параметр boundsMode
был введен в SDK 2.5
Надеюсь, это поможет!