Google Places Autocomplete API 没有在我的 Tableview 中填充准确的地址

Google Places Autocomplete API Does not Populate the exact address in my Tableview

我正在使用 google Place Autocomplete API,我有 UITextField 而不是具有相同功能的 UISearchBar;我正在将搜索估计值填充到 tableView 中。但是,结果不显示确切的地址;相反,它只显示地名。我怎样才能使表视图中的结果是确切的地址而不是地名?

这是我的代码:

class DeliveryAddressVC: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var streetTextField: UITextField!
    @IBAction func searchTextClicked(_ sender: Any) {}
    @IBOutlet weak var tableView: UITableView!


    var tableData=[String]()
    var fetcher: GMSAutocompleteFetcher?

    override func viewDidLoad() {
        super.viewDidLoad()

        if streetTextField.text == "" {
                tableView.isHidden = true
        }

        self.edgesForExtendedLayout = []

        // Set bounds to inner-west Sydney Australia.
        let neBoundsCorner = CLLocationCoordinate2D(latitude: -33.843366,
                                                    longitude: 151.134002)
        let swBoundsCorner = CLLocationCoordinate2D(latitude: -33.875725,
                                                    longitude: 151.200349)
        let bounds = GMSCoordinateBounds(coordinate: neBoundsCorner,
                                         coordinate: swBoundsCorner)

        // Set up the autocomplete filter.
        let filter = GMSAutocompleteFilter()
        filter.type = .establishment

        // Create the fetcher.
        fetcher = GMSAutocompleteFetcher(bounds: bounds, filter: filter)
        fetcher?.delegate = self as GMSAutocompleteFetcherDelegate

        streetTextField.addTarget(self, action: #selector(DeliveryAddressVC.textFieldDidChanged(_:)), for: UIControl.Event.editingChanged)

        tableView.delegate = self
        tableView.dataSource = self

        tableView.reloadData()
    }

    // MARK: -UITextField Action

    @objc func textFieldDidChanged(_ textField:UITextField ){

        if streetTextField.text == "" {
            tableView.isHidden = true
        }else {
        tableView.isHidden = false
        }
        fetcher?.sourceTextHasChanged(streetTextField.text!)
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return tableData.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        var section = indexPath.section

        var row = indexPath.row

        let cell: UITableViewCell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier:"addCategoryCell")

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

        cell.textLabel?.text = tableData[indexPath.row]
        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.isHidden = true
    }



}
extension DeliveryAddressVC: GMSAutocompleteFetcherDelegate {
    func didAutocomplete(with predictions: [GMSAutocompletePrediction]) {
        tableData.removeAll()

        for prediction in predictions {

            tableData.append(prediction.attributedPrimaryText.string)

            //print("\n",prediction.attributedFullText.string)
            //print("\n",prediction.attributedPrimaryText.string)
            //print("\n********")
        }

        tableView.reloadData()
    }

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


}

找到解决方案;我不得不更改代码中的两行:

改变了这个: filter.type = .establishment

收件人:filter.type = .address

这个:tableData.append(prediction.attributedPrimaryText.string)

收件人:tableData.append(prediction.attributedFullText.string)