在 Swift 中单击 textField 时在 tableView 上搜索 Google 个位置 3?
Search Google Places on tableView when textField is clicked in Swift 3?
当我单击 textField
并希望在 textField
下方显示结果时如何搜索 Google Places
。我正在使用 Swift 3.0 version.Could 有人帮助我
首先您需要在项目中安装 GooglePlaces SDK。然后你参考下面的代码。
在Swift3
在 AppDelegate 中
import UIKit
import CoreData
import GoogleMaps
import GooglePlacePicker
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
func setUpGoogleMaps()
return true
}
func setUpGoogleMaps() {
let googleMapsApiKey = "AIzaSyA-kiOBvrR9CNztqutwmKaSLyXIid93K0E"
GMSServices.provideAPIKey(googleMapsApiKey)
GMSPlacesClient.provideAPIKey("AIzaSyA-kiOBvrR9CNztqutwmKaSLyXIid93K0E")
}
在你的 ViewController 中有 textField
import UIKit
import GooglePlaces
import GoogleMaps
import GooglePlacePicker
class HotelVC: UIViewController, GMSMapViewDelegate, UITextFieldDelegate {
@IBOutlet weak var YourTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.YourTextField.delegate = self
}
func textFieldDidBeginEditing(_ textField: UITextField) {
let acController = GMSAutocompleteViewController()
acController.delegate = self
self.present(acController, animated: true, completion: nil)
}
}
extension viewController: GMSAutocompleteViewControllerDelegate {
func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
print("Place name: \(place.name)")
print("Place address: \(place.formattedAddress ?? "null")")
self.YourTextField.text = place.formattedAddress
print("Place attributions: \(String(describing: place.attributions))")
self.dismiss(animated: true, completion: nil)
}
func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) {
// TODO: handle the error.
// print("Error: \(error.description)")
self.dismiss(animated: true, completion: nil)
}
// User canceled the operation.
func wasCancelled(_ viewController: GMSAutocompleteViewController) {
print("Autocomplete was cancelled.")
self.dismiss(animated: true, completion: nil)
}
}
您将从所选地点获取位置信息。试试这个代码。
public func viewController(viewController: GMSAutocompleteViewController, didAutocompleteWithPlace place: GMSPlace) {
var lat = place.coordinate.latitude
var lon = place.coordinate.longitude
print("lat lon",lat,lon)
}
当我单击 textField
并希望在 textField
下方显示结果时如何搜索 Google Places
。我正在使用 Swift 3.0 version.Could 有人帮助我
首先您需要在项目中安装 GooglePlaces SDK。然后你参考下面的代码。
在Swift3
在 AppDelegate 中
import UIKit
import CoreData
import GoogleMaps
import GooglePlacePicker
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
func setUpGoogleMaps()
return true
}
func setUpGoogleMaps() {
let googleMapsApiKey = "AIzaSyA-kiOBvrR9CNztqutwmKaSLyXIid93K0E"
GMSServices.provideAPIKey(googleMapsApiKey)
GMSPlacesClient.provideAPIKey("AIzaSyA-kiOBvrR9CNztqutwmKaSLyXIid93K0E")
}
在你的 ViewController 中有 textField
import UIKit
import GooglePlaces
import GoogleMaps
import GooglePlacePicker
class HotelVC: UIViewController, GMSMapViewDelegate, UITextFieldDelegate {
@IBOutlet weak var YourTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.YourTextField.delegate = self
}
func textFieldDidBeginEditing(_ textField: UITextField) {
let acController = GMSAutocompleteViewController()
acController.delegate = self
self.present(acController, animated: true, completion: nil)
}
}
extension viewController: GMSAutocompleteViewControllerDelegate {
func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
print("Place name: \(place.name)")
print("Place address: \(place.formattedAddress ?? "null")")
self.YourTextField.text = place.formattedAddress
print("Place attributions: \(String(describing: place.attributions))")
self.dismiss(animated: true, completion: nil)
}
func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) {
// TODO: handle the error.
// print("Error: \(error.description)")
self.dismiss(animated: true, completion: nil)
}
// User canceled the operation.
func wasCancelled(_ viewController: GMSAutocompleteViewController) {
print("Autocomplete was cancelled.")
self.dismiss(animated: true, completion: nil)
}
}
您将从所选地点获取位置信息。试试这个代码。
public func viewController(viewController: GMSAutocompleteViewController, didAutocompleteWithPlace place: GMSPlace) {
var lat = place.coordinate.latitude
var lon = place.coordinate.longitude
print("lat lon",lat,lon)
}