通过Googleapi获取搜索位置以填写TableView



我尝试了gmsplacesclient,但我无法以正确格式获得填充em的结果。

之后,我使用了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在文本框中搜索地址,然后在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)*")
}

您应该将数组用于结果,而不是让结果= nsmutableString()

和带有数据源的填充表视图作为数组

您需要使用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
}

相关内容

  • 没有找到相关文章

最新更新