Поиск мест в GoogleApi для заполнения таблицы
Я пробовал GMSPlacesClient, но я не мог получить результаты в правильном формате, чтобы заполнить их в tableView.
после этого я использовал Fetcher, но я не помог мне.
extension SearchViewController: GMSAutocompleteFetcherDelegate {
func didAutocomplete(with predictions: [GMSAutocompletePrediction]) {
let resultsStr = NSMutableString()
for prediction in predictions {
resultsStr.appendFormat("%@\n", prediction.attributedPrimaryText)
}
print(resultsStr as String)
}
func didFailAutocompleteWithError(_ error: Error) {
print(error.localizedDescription)
}
}
я не знаю, не понял ли я его использования. кто-то может описать мне, как использовать Google Places Api для поиска адреса в textBox, а затем показать результаты в tableView.
Моя проблема только в получении результатов поиска?
получить код детали:
var fetcher: GMSAutocompleteFetcher?
func placeAutocomplete(add:String) {
fetcher?.sourceTextHasChanged(add)
}
override func viewDidLoad() {
super.viewDidLoad()
tblView.delegate = self
tblView.dataSource = self
let filter = GMSAutocompleteFilter()
filter.type = .establishment
// Create the fetcher.
fetcher = GMSAutocompleteFetcher(bounds: nil, filter: filter)
fetcher?.delegate = self
}
результат поиска "Mex"
> Me{
GMSAutocompleteMatch = "<GMSAutocompleteMatchFragment: 0x60800043db60>";
}rcado de La Boqueria, La Rambla, Barcelona, Spain{
}*
Me{
GMSAutocompleteMatch = "<GMSAutocompleteMatchFragment:
0x60800043db60>";
}rcado San Anton, Calle de Augusto Figueroa, Madrid, Spain{
}*
Me{
GMSAutocompleteMatch = "<GMSAutocompleteMatchFragment: 0x60800043db60>";
}nlyn Mall, Atterbury Road, Pretoria, South Africa{
}*
Me{
GMSAutocompleteMatch = "<GMSAutocompleteMatchFragment:
0x60800043db60>";
}ga Mall, Bulevardul Pierre de Coubertin, Bucharest, Romania{
}*
Me{
GMSAutocompleteMatch = "<GMSAutocompleteMatchFragment:
0x60800043db60>";
}rcado de San Ildefonso, Calle de Fuencarral, Madrid, Spain{
}*
распечатать код:
for q in predictions1
{
print ( "\(q.attributedFullText)*")
}
2 ответа
Вам нужно настроить с GMSAutocompleteFilter
фильтр, чтобы получить желаемые результаты. В настоящее время вы фильтруете результаты с типом фильтра: .establishment
, который фильтрует / ограничивает результаты поиска. Вы можете рассмотреть возможность использования .noFilter
или любой другой фильтр.
let filter = GMSAutocompleteFilter()
filter.type = .noFilter
Ссылка на enum GMSPlacesAutocompleteTypeFilter
, Источник: GMSAutocompleteFilter.h
public enum GMSPlacesAutocompleteTypeFilter : Int {
/**
* All results.
*/
case noFilter
/**
* Geeocoding results, as opposed to business results.
*/
case geocode
/**
* Geocoding results with a precise address.
*/
case address
/**
* Business results.
*/
case establishment
/**
* Results that match the following types:
* "locality",
* "sublocality"
* "postal_code",
* "country",
* "administrative_area_level_1",
* "administrative_area_level_2"
*/
case region
/**
* Results that match the following types:
* "locality",
* "administrative_area_level_3"
*/
case city
}
Вы должны использовать массив для результатов вместо let resultsStr = NSMutableString()
и заполните табличное представление с источником данных как массив