我沒有GMSAutocompleteFilter工作,但我已經與谷歌的API實現的,所以我在這裏分享一些示例代碼,試試這個:
採取搜索欄&實現其委託&調用谷歌Places API的作爲如下。在這裏,你需要傳遞城市名稱。所以在調用這個API之後,你會得到結果。有了這個結果,我將地名存儲在兩個不同的字符串中,即strMainTitle & strSubTitle。最後重新加載表格以顯示列表。此外,你必須實現tableview委託&數據源方法來顯示錶上的列表(這裏你需要採取tableview來顯示搜索文本查詢)。
// MARK:- SearchBar Delegate methods
func searchBar(searchBar: UISearchBar,textDidChange searchText: String)
{
let strCityString = "your city name"
let session = NSURLSession.sharedSession()
let apiServerKey = "Put here your apiServerkey"
var urlString = "https://maps.googleapis.com/maps/api/place/autocomplete/json?key=\(apiServerKey)&input=\(strCityString)"+"\(searchBarObj.text!)"
urlString = urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
session.dataTaskWithURL(NSURL(string: urlString)!) {
(data, response, error) -> Void in
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options:[]) as? [String:AnyObject] {
dispatch_async(dispatch_get_main_queue(), {() -> Void in
let returnedPlaces: NSArray? = json["predictions"] as? NSArray// print("Predictions Retrunedplaces: \(returnedPlaces)")
self.arraySearchResults.removeAllObjects()
self.arraySearchResults.addObjectsFromArray(json["predictions"] as! [AnyObject])// (returnedPlaces!)
self.strMainTitle.removeAllObjects()
self.strSubTitle.removeAllObjects()
for index in 0..<returnedPlaces!.count {
if let returnedPlace = returnedPlaces?[index] as? NSDictionary {
var placeName = ""
if let name = returnedPlace["description"] as? NSString {
placeName = name as String
}
var fullNameArr = placeName.componentsSeparatedByString(",")
var strname = String()
let laststring:Int = fullNameArr.count - 1
for i in 1..<fullNameArr.count
{
if i == laststring //fullNameArr.count - 1
{
strname += "\(fullNameArr[i])"
}
else
{
strname += "\(fullNameArr[i])"+","
}
}
self.strMainTitle.addObject(placeName.componentsSeparatedByString(",").first!)
self.strSubTitle.addObject(strname)
}
}
self.tableviewForSearchBar.reloadData()
})
}
} catch {
}
}.resume()
}
您是否需要這樣:如果用戶在搜索欄中搜索任何地點/位置/等。所以用戶將得到特定城市/地區的所有結果? –
所以在我過去的控制器中,我收集了城市名稱。在這個視圖控制器中,他們鍵入一個地方,它應該預測他們進入城市的地點。你可以假設已經有一個var name城市,並且有一個城市。 – joethemow