#ios #swift #google-places-api
#iOS #swift #google-places-api
Вопрос:
Я перехожу на новый places SDK 4.0
Старая функция была:
findAutocompletePredictions(fromQuery: query,
bounds: bounds,
boundsMode: .bias,
filter: filter,
sessionToken: token) { (prediction, error) in
callback(prediction, error)
}
новая функция в соответствии с документами
findAutocompletePredictions(fromQuery: query,
filter: filter,
sessionToken: token) { (prediction, error) in
callback(prediction, error)
}
Я вижу, что смещение границ теперь установлено для GMSAutocompleteFilter
фильтра
У этого есть locationBias
свойство, которое я устанавливаю some
, и оно принимает параметр <GMSPlaceLocationBias>
Проблема, с которой я сталкиваюсь, заключается в том, что нет информации о том, что здесь предоставить … GMSPlaceLocationBias
это протокол, и я понятия не имею, что я имел в виду, чтобы использовать object wise для предоставления старых данных границ.
Соответствие протоколу доставляет мне locationBiasURLQueryItem
удовольствие для заполнения, без дополнительной документации о том, что должно входить в эту функцию
Итак, я застрял и не могу обновиться, поскольку, похоже, нет четкого пути вперед.
У кого-нибудь есть идеи? Документы здесь: https://developers.google.com/places/ios-sdk/reference/interface_g_m_s_places_client#ab60773feec0e68751c5a7f1066b9d252)
Моя попытка создать фильтр:
let filter = GMSAutocompleteFilter()
if case .location(let location) = _locationController.locationStatus {
filter.locationBias = .some(location)
}
Но, очевидно, что мой пользовательский объект модели местоположения не подтверждается GMSPlaceLocationBias и является структурой, поэтому не может использоваться и ошибки
Ответ №1:
Я тоже полностью запутался в этом, но только что нашел пример, скрытый в одном из руководств здесь.
Короче говоря, реализация выглядит так:
let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceRectangularLocationOption(bounds.northEast, bounds.southWest)
Здесь я использую те же границы, которые я ранее использовал в 3.x (в моем случае из отображаемой в данный момент карты), чтобы получить эти северо-восточные и юго-западные координаты, но вы можете создать свои собственные, основываясь на том, как вы пытаетесь изменить результаты.
Хотелось бы, чтобы они только что указали в своих документах, что это предполагаемый способ сделать это.
Комментарии:
1. ах, да, теперь это работает, шокирующая документация, чтобы не привлекать внимания к использованию этого нового класса! спасибо, что указали на это, надеюсь, этот вопрос поможет другим обновиться
2. Можете ли вы, ребята, найти какую-либо ссылку или документацию для GMSPlaceRectangularLocationOption? потому что я не вижу, где как в Map SDK, так и в Places SDK.
3. @NeihPaine330 он находится в том же заголовочном файле, что и объявление для
locationBias
. Объявлено:objc FOUNDATION_EXTERN id<GMSPlaceLocationBias, GMSPlaceLocationRestriction> GMSPlaceRectangularLocationOption(CLLocationCoordinate2D northEastBounds, CLLocationCoordinate2D southWestBounds);