gpt4 book ai didi

iphone - 如何在 iOS 中将 Google Places 自动完成请求设置为 UITextField

转载 作者:行者123 更新时间:2023-12-01 18:26:44 24 4
gpt4 key购买 nike

我是 iOS 编程的新手。我的要求是将 google 地方自动完成请求设置为 UITextField .
我写的代码如下

NSString *urlPath = [NSString stringWithFormat:@"/maps/api/place/autocomplete/json?input=%@&types=geocode&language=en-EN&sensor=false",string];
NSURL *url = [[NSURL alloc]initWithScheme:@"http" host:@"maps.googleapis.com" path:urlPath];
NSLog(@"url is:::%@",url);

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setURL:url];
[request setHTTPMethod:@"POST"];

NSURLResponse *response ;
NSError *error;
NSData *data;
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"data is:::%@",data);

NSMutableDictionary *jsonDict= (NSMutableDictionary*)[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSLog(@"jsonDict is:%@",jsonDict);

但它给了空。你能告诉我我哪里做错了吗?

最佳答案

试试下面的 Swift 代码:-

import UIKit
import GooglePlaces

class TableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {



@IBOutlet weak var txtField: UITextField!
@IBOutlet weak var tableView: UITableView!

var tableData = [GMSAutocompletePrediction]()

var fetcher: GMSAutocompleteFetcher?

override func viewDidLoad() {
super.viewDidLoad()

self.view.backgroundColor = UIColor.white
self.edgesForExtendedLayout = []

let nsBoundsCorner = CLLocationCoordinate2D(latitude: 20.5937, longitude: 78.9629)

let bounds = GMSCoordinateBounds(coordinate: nsBoundsCorner, coordinate: nsBoundsCorner)

let filter = GMSAutocompleteFilter()
filter.type = .establishment

fetcher = GMSAutocompleteFetcher(bounds: bounds, filter: filter)
fetcher?.delegate = self

txtField?.addTarget(self, action: #selector(textFieldDidChange(textField:)),for: .editingChanged)

tableView.delegate = self
tableView.dataSource = self

self.tableView.reloadData()


// Do any additional setup after loading the view.
}

@objc func textFieldDidChange(textField: UITextField) {
fetcher?.sourceTextHasChanged(txtField.text!)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return tableData.count
}

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

var section = indexPath.section
var row = indexPath.row

let cell1 : UITableViewCell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell1")

cell1.selectionStyle = UITableViewCellSelectionStyle.none
cell1.backgroundColor = UIColor.clear
cell1.contentView.backgroundColor = UIColor.clear
cell1.textLabel?.textAlignment = NSTextAlignment.left
cell1.textLabel?.textColor = UIColor.black
cell1.textLabel?.font = UIFont.systemFont(ofSize: 14.0)

cell1.textLabel?.text = tableData[indexPath.row].attributedFullText.string
return cell1
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
txtField.text = tableData[indexPath.row].attributedFullText.string
getLatLongFromAutocompletePrediction(prediction:tableData[indexPath.row])
}

func getLatLongFromAutocompletePrediction(prediction:GMSAutocompletePrediction){

let placeClient = GMSPlacesClient()

placeClient.lookUpPlaceID(prediction.placeID!) { (place, error) -> Void in
if let error = error {
//show error
return
}

if let place = place {
place.coordinate.longitude //longitude
place.coordinate.latitude //latitude
} else {
//show error
}
}
}
}

extension TableViewController: GMSAutocompleteFetcherDelegate {


func didAutocomplete(with predictions: [GMSAutocompletePrediction]) {

tableData.removeAll()

for prediction in predictions{

tableData.append(prediction)

}
tableView.reloadData()
}

func didFailAutocompleteWithError(_ error: Error) {
print(error.localizedDescription)
}
}

关于iphone - 如何在 iOS 中将 Google Places 自动完成请求设置为 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com