Swiftでxcodeにgoogleプレイスオートコンプリートを追加したいので、ユーザーは都市を検索してEnterキーを押すことができるので、アプリはその都市を地図に表示します。
私はグーグルマップを使用しているので、そのマップに接続する必要があり、検索バーはナビバー(マップのすぐ上)にしたいです
誰でもそれを行うための良いチュートリアルを知っていますか??
Swift= 3:
1-ポッドファイルを選択し、タイプ:ポッド「GooglePlaces」
2- appDelegateで、APIキーを追加します:GMSPlacesClient.provideAPIKey("YOUR KEY")
(GooglePlacesをインポートします)
3- googleMapを含むviewControllerで次のコードを使用します。
// This code snippet demonstrates adding a
// full-screen Autocomplete UI control
import UIKit
import GooglePlaces
class ViewController: UIViewController {
// TODO: Add a button to Main.storyboard to invoke onLaunchClicked.
// Present the Autocomplete view controller when the button is pressed.
@IBAction func onLaunchClicked(sender: UIButton) {
let acController = GMSAutocompleteViewController()
acController.delegate = self
present(acController, animated: true, completion: nil)
}
}
extension ViewController: GMSAutocompleteViewControllerDelegate {
// Handle the user's selection.
func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
print("Place name: \(place.name)")
print("Place address: \(place.formattedAddress)")
print("Place attributions: \(place.attributions)")
dismiss(animated: true, completion: nil)
}
func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) {
// TODO: handle the error.
print("Error: \(error)")
dismiss(animated: true, completion: nil)
}
// User cancelled the operation.
func wasCancelled(_ viewController: GMSAutocompleteViewController) {
print("Autocomplete was cancelled.")
dismiss(animated: true, completion: nil)
}
}
正確なチュートリアルではありませんが、Githubにはいくつかのリソースがあり、あなたが求めているものを達成するためにライブラリとコードサンプルを提供している人々がいます。
適切なチュートリアルがなくても、独自のコンポーネントを作成する場合は、これらのライブラリをチェックアウトし、コードがどのようにインスピレーションを得るかを理解することができます。
サイドトーンとして、Googleにもこのページがありますが、iOSアプリ専用のチュートリアルではなく、APIの仕組みに関する有用な説明がいくつかあります。 https://developers.google.com/places/documentation/autocomplete#例
GoogleでPlace APIのオートコンプリートを実装するラッパーのいずれかを試すことができます。
https://github.com/mrugrajsinh/MVAutocompletePlaceSearchTextField
その非常に単純なドロップインコントロールとUITextFieldのサブクラスなので、単純なUITextFieldUberと同様の自動補完ドロップダウンを実現できます。
tutorial 私が見つけた ios_google_places_autocomplete コードに基づいています。
@ Frederik :ライブラリに問題がある場合は、 問題を作成する 説明してください。
この最新のレポを使用してください。 with Swift 2.0
プロジェクトのZipファイルをダウンロードし、ポッドファイルを開いてpod 'GoogleMaps'と書き込み、ターミナルを開いてポッドをインストールします。
楽しい!!!
質問が出されて以来、Googleはこの種のワークフローのためにiOS SDKにUI要素を追加しました。 ドキュメント をご覧ください。
IOSアプリにGoogleマップAPIを実装してみましょう。これはとても楽しくて簡単です...大きな欠点があります。
IOS向けGoogle Places APIでは、24時間あたり1 000リクエストというデフォルトの制限が適用されます。アプリが制限を超えた場合、アプリは失敗し始めます。 24時間ごとに150 000のリクエストを取得する請求を有効にします。
無料アプリまたはフリーミアムアプリでどれくらい早く制限に達すると思いますか?アプリが失敗し始めると彼らが言う部分が大好きです。
使用法と利用規約 を注意深くお読みください。
また、サードパーティライブラリのフレームワークを含めずに、これらの簡単なリクエストを行うためのライブラリを作成しました。ライブラリでオートコンプリートのキャッシュを維持することもできます。
ライブラリに使用するには、次の手順に従います。-
GoogleApiHelper
をプロジェクトにインポートします。GoogleApiHelper
の初期化GoogleApi.shared.initialiseWithKey("API_KEY")
var input = GInput()
input.keyword = "San francisco"
GoogleApi.shared.callApi(input: input) { (response) in
if let results = response.data as? [GApiResponse.Autocomplete], response.isValidFor(.autocomplete) {
//Enjoy the Autocomplete Api
} else { print(response.error ?? "ERROR") }
}