都市向けにGoogleマップのオートコンプリートを実装しようとしています。テキストフィールドに入力すると、ユーザーの入力に基づいて潜在的な都市が自動的に表示されます。今のところ、結果をログに出力したいのですが、これを正しく実行しているかどうかはわかりません。これは、あなたが起因した文字列を印刷しているResult Austin{ GMSAutocompleteMatch = "<GMSAutocompleteMatchFragment: 0x608000235e60>"; }
オートコンプリートテーブルビューのGoogleマップを迅速に実装するにはどうすればよいですか?
var placesClient: GMSPlacesClient!
override func viewDidLoad() {
super.viewDidLoad()
placesClient = GMSPlacesClient.shared()
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
placeAutoComplete()
return true
}
func placeAutoComplete() {
let filter = GMSAutocompleteFilter()
filter.type = .city
placesClient.autocompleteQuery(cityField.text!, bounds: nil, filter: filter, callback: {(results, error) -> Void in
if let error = error {
print("Autocomplete error \(error)")
return
}
if let results = results {
for result in results {
print("Result \(result.attributedPrimaryText)")
}
}
})
}
を行います。たとえば、「A」と入力すると、上記のクラスにテキストフィールドが委譲されている限り、A以外の都市はA – joethemow
で始まります。テキストフィールドにテキストを入力するたびに、メソッド 'shouldChangeCharachtersInRange'。その時点で 'placeAutoComplete()'を呼び出します。 'placeAutoComplete()'メソッドの内部では、すべての結果が配列に格納されます。次に、tableViewを 'tableView.reloadData()'でリロードし、 'cellForRowAtIndexPath'の内部で' cell.textLabel.attributedText = resultArray [index.row] .attributedPrimaryText'を設定します。 – LoganHenderson