2017-03-02 57 views
0

我有城市名稱,即德克薩斯州奧斯汀。在搜索建築物時,我需要使用該城市作爲邊界參數。任何想法如何做到這一點?如何設置城市邊界?

 let filter = GMSAutocompleteFilter() 
     filter.type = .establishment 
     placesClient.autocompleteQuery(textField.text!, bounds: nil, filter: filter, callback: {(results, error) -> Void in 
      if let error = error { 
       print("Autocomplete error \(error)") 
       return 
      } 

      if let results = results { 
       print(results) 
      } 
     }) 
+0

您是否需要這樣:如果用戶在搜索欄中搜索任何地點/位置/等。所以用戶將得到特定城市/地區的所有結果? –

+0

所以在我過去的控制器中,我收集了城市名稱。在這個視圖控制器中,他們鍵入一個地方,它應該預測他們進入城市的地點。你可以假設已經有一個var name城市,並且有一個城市。 – joethemow

回答

0

我沒有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() 
    } 
相關問題