Переход на Places 4.0 SDK, как перенести смещение места?

#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);