Границы автоматического заполнения 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

Надеюсь, это поможет!

Другие вопросы по тегам