如何设置城市边界?

如何设置城市边界?

问题描述:

我有城市名称,即德克萨斯州奥斯汀。在搜索建筑物时,我需要使用该城市作为边界参数。任何想法如何做到这一点?如何设置城市边界?

 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

我没有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() 
    }