Моя текущая ситуация такова: у меня есть MKMapItem, и я хочу найти соответствующий GMSPlace. Я хочу использовать GMSPlace, чтобы получить дополнительную информацию о достопримечательностях, например, о времени работы. Моя идея заключалась в использовании TextSearch от Google, и я строил свое решение на основе следующего сайта поддержки.
К сожалению, я не могу найти соответствующие места таким образом, так как мой запрос возвращает пустые наборы, когда получает название места, а также его адрес.
Мой код API выглядит следующим образом и работает с общими запросами. Если задать ему такие вопросы, как «пицца», можно получить хорошие результаты в правильном регионе. Однако когда я предоставляю следующий запрос и смещение местоположения, я получаю пустой набор результатов. То же самое происходит, когда я предоставляю точные данные адреса.
- "P&M Photo Media Luzern"
CLLocationCoordinate2D(широта: 47,050291, долгота: 8,306158)
Код: Выделить всё
class PlacesViewModel: ObservableObject {
@Published var placeResults: [GMSPlace] = []
@Published var placeResult: GMSPlace? = nil
@Published var errorMessage: String? = nil
func searchPlaces(query: String, location: CLLocationCoordinate2D) {
// Define the properties we want to retrieve
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID, GMSPlaceProperty.openingHours, GMSPlaceProperty.website].map { $0.rawValue }
// Create the GMSPlaceSearchByTextRequest object
let request = GMSPlaceSearchByTextRequest(textQuery: query, placeProperties: myProperties)
request.maxResultCount = 5
request.rankPreference = .distance
request.locationBias = GMSPlaceCircularLocationOption(location, 500.0)
// Callback to handle the response
let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in
guard let self = self else { return }
if let error = error {
DispatchQueue.main.async {
self.errorMessage = error.localizedDescription
}
return
}
guard let results = results else {
return
}
DispatchQueue.main.async {
self.placeResults = results
print(self.placeResults)
//self.placeResult = results[0]
}
}
// Perform the search
GMSPlacesClient.shared().searchByText(with: request, callback: callback)
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -using-the
Мобильная версия