GMSAutocompleteFetcher

GMSAutocompleteFetcher

我当前使用来自Google Places API端点的地址填充tableView的代码如下:

但是,我想创建一个自定义客户端来处理Places提供的autoCompleteQuery可以手动处理的功能。我假设这要求再次解析地址JSON,然后进行迭代,然后存储在数组中。如果您有解决方案,请告诉我。注释的代码可以完美运行,我正在尝试手动实现相同的结果。

func searchBar(searchBar: UISearchBar, textDidChange searchText: String){

//        let mapsClient = GMSPlacesClient()
//        mapsClient.autocompleteQuery(searchText, bounds: nil, filter: nil {(results, error: NSError?) in
//
//            self.resultsArray.removeAll()
//
//            if results == nil{
//                return
//            }
//
//            for result in results! {
//
//                if let result = result as GMSAutocompletePrediction! {
//                    self.resultsArray.append(result.attributedFullText.string)
//                }
//            }
//
//            self.searchResultsClient.reloadDataWithArray(self.resultsArray)
//        }

    gmsFetcher?.sourceTextHasChanged(searchText)

    self.searchResultsClient.reloadDataWithArray(self.resultsArray)
    print(resultsArray)
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

extension MainMapViewController: GMSAutocompleteFetcherDelegate {
func didAutocompleteWithPredictions(predictions: [GMSAutocompletePrediction]) {

    self.resultsArray.count + 1

    let resultsStr = NSMutableString()
    for prediction in predictions {
        resultsStr.appendFormat("%@\n", prediction.attributedPrimaryText)
    }

    resultText?.text = resultsStr as String
    self.resultsArray.append(resultsStr as String)
    self.searchResultsClient.reloadDataWithArray(self.resultsArray)
}
    func didFailAutocompleteWithError(error: NSError) {
        resultText?.text = error.localizedDescription
    }
}

最佳答案

您可以使用GMSAutocompleteFetcher,它在GMSPlacesClient上包装了autocompleteQuery方法。提取程序限制请求,仅返回最近输入的搜索文本的结果,并且不提供UI元素。

实施GMSAutocompleteFetcher的步骤:


  • 实现GMSAutocompleteFetcherDelegate协议。
  • 创建一个GMSAutocompleteFetcher对象。
  • 在用户键入时在提取程序上调用sourceTextHasChanged
  • 使用didAutcompleteWithPredictionsdidFailAutocompleteWithError协议方法处理预测和错误。


  • 可以在Use the fetcher中找到演示使用fetcher的实现步骤的示例代码。

    10-07 23:07