Ikuti langkah-langkah dalam panduan ini untuk mengunduh Google Places API for iOS, menambahkan pustaka dan dependensi ke aplikasi Anda, dan mendapatkan kunci API gratis.
Catatan rilis tersedia untuk setiap rilis.
Langkah 1: Dapatkan Xcode versi terbaru
Untuk membangun proyek menggunakan Google Places API for iOS, Anda memerlukan versi 7.3 atau Xcode yang lebih baru.
Langkah 2: Pasang API
Gunakan Cocoapods
Google Places API for iOS Tersedia sebagai dua pod CocoaPod. Yang pertama dari pod ini, GooglePlaces, berisi semua fungsionalitas tempat yang tidak memerlukan peta (API terprogram dan widget UI pelengkapan otomatis), sementara GooglePlacePicker adalah pod terpisah yang berisi widget untuk menelusuri dan memilih tempat dari peta.
CocoaPods merupakan pengelola dependensi sumber terbuka untuk proyek Swift dan Objective-C Cocoa. Jika Anda belum memiliki alat (bantu) CocoaPods, pasang di macOS dengan menjalankan perintah berikut dari terminal. Untuk detailnya, lihat Panduan Memulai CocoaPods.
sudo gem install cocoapods
Buat Podfile untuk Google Places API for iOS dan gunakan untuk memasang API serta dependensinya:
- Jika Anda belum memiliki proyek Xcode, buatlah sekarang dan simpan ke mesin lokal Anda. (Jika Anda masih baru dengan development iOS, buat Single View Application.)
- Buat file bernama
Podfiledalam direktori proyek Anda. File ini mendefinisikan dependensi proyek Anda. - Edit
Podfiledan tambahkan dependensi Anda. Berikut ini adalah contoh yang menetapkan nama target aplikasi Anda, dan nama pod yang datang bersama Places API for iOS (GooglePlacePickerdanGoogleMapshanya diperlukan jika Anda menggunakan contoh place picker):source 'https://github.com/CocoaPods/Specs.git' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlaces' pod 'GooglePlacePicker' pod 'GoogleMaps' end
- Simpan
Podfile. Buka terminal dan masuklah ke direktori berisi
Podfile:cd <path-to-project>
Jalankan perintah
pod install. Ini akan memasang API yang ditetapkan dalamPodfile, beserta dependensi yang mungkin dimilikinya.pod install
Tutup Xcode, kemudian buka (klik dua kali) file proyek
.xcworkspaceAnda untuk menjalankan Xcode. Untuk seterusnya, Anda harus menggunakan file.xcworkspaceuntuk membuka proyek.
Pasang secara manual
Panduan ini menampilkan cara menambahkan framework GooglePlaces secara manual ke proyek Anda dan mengonfigurasi setelan pembangunan di Xcode.
- Unduh file sumber SDK:
GooglePlacePicker-2.0.1 hanya diperlukan jika Anda menggunakan place picker.
- Mekarkan file sumber.
- Luncurkan Xcode dan buka proyek yang ada, atau buat proyek baru. Jika Anda masih baru dengan iOS, buat Single View Application, dan nonaktifkan Use Storyboards serta aktifkan Use Automatic Reference Counting.
- Buang semua bundel Maps rilis sebelumnya dari proyek Anda.
- Seret bundel berikut ke dalam proyek Anda (bila ditanya, pilih Copy items if needed):
GooglePlaces-2.0.1/Frameworks/GooglePlaces.frameworkGoogleMaps-2.0.1/Subspecs/Base/Frameworks/GoogleMapsBase.framework
Jika menggunakan place picker, seret bundel berikut ke dalam proyek Anda (selain bundel sebelumnya yang telah terdaftar):
GooglePlacePicker-2.0.1/Frameworks/GooglePlacePicker.frameworkGoogleMaps-2.0.1/Subspecs/Maps/Frameworks/GoogleMapsCore.frameworkGoogleMaps-2.0.1/Subspecs/Maps/Frameworks/GoogleMaps.framework
- Klik-kanan
GooglePlaces.frameworkdi proyek Anda, dan pilih Show In Finder. - Seret
GooglePlaces.bundledari folderResourceske dalam proyek Anda. Bila dikonfirmasi, pastikan Copy items into destination group's folder tidak dipilih. - Jika Anda menggunakan place picker, ulangi langkah sebelumnya dan seret file
GoogleMaps.bundledanGooglePlacePicker.bundleke dalam proyek Anda. Ini bisa ditemukan diGoogleMaps.frameworkdanGooglePlacePicker.framework. - Pilih proyek Anda dari Project Navigator, dan pilih sasaran aplikasi Anda.
- Buka tab Build Phases, dan dalam Link Binary with Libraries, tambahkan kerangka kerja berikut:
GooglePlaces.frameworkGoogleMapsBase.frameworkGooglePlacePicker.framework(hanya jika menggunakan place picker)GoogleMapsCore.framework(hanya jika menggunakan place picker)GoogleMaps.framework(hanya jika menggunakan place picker)Accelerate.frameworkCoreData.frameworkCoreGraphics.frameworkCoreLocation.frameworkCoreText.frameworkGLKit.frameworkImageIO.frameworklibc++.tbdlibz.tbdOpenGLES.frameworkQuartzCore.frameworkSystemConfiguration.frameworkUIKit.framework
Pilih proyek Anda, bukan target tertentu, dan buka tab Build Settings.
- Di bagian Other Linker Flags, tambahkan
-ObjC. Jika setelan ini tidak terlihat, ubah filter di bilah Build Settings dari Basic menjadi All.
Langkah 3: Dapatkan kunci API
Untuk memulai penggunaan Google Places API for iOS, klik tombol di bawah ini yang akan memandu Anda menjalani proses mengaktifkan Google Places API for iOS dan mendapatkan kunci API.
Dapatkan KunciAlternatifnya, ikuti langkah-langkah ini untuk mendapatkan kunci API:
- Masuklah ke Google API Console.
- Buat atau pilih sebuah proyek.
- Klik Continue untuk mengaktifkan Google Places API for iOS.
- Pada laman Credentials, dapatkan kunci API.
Catatan: Jika Anda memiliki kunci dengan pembatasan iOS, Anda boleh menggunakan kunci itu. Anda bisa menggunakan kunci yang sama dengan salah satu aplikasi iOS Anda dalam proyek yang sama. - Dari dialog yang menampilkan kunci API, pilih Restrict key untuk menyetel pembatasan iOS atas kunci API.
- Di bagian Restrictions, pilih iOS apps, kemudian masukkan identifier bundel aplikasi Anda. Misalnya:
com.example.helloplaces. - Klik Save.
Kunci iOS Anda yang baru akan muncul dalam daftar kunci API untuk proyek Anda. Kunci API adalah string karakter, seperti ini:
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
Anda juga bisa mencari kunci yang sudah ada di Google API Console.
Untuk informasi selengkapnya mengenai penggunaan Google API Console, lihat Bantuan API Console.
Langkah 4: Tambahkan kunci API ke aplikasi Anda
Contoh kode berikut menunjukkan cara menambahkan kunci API ke sebuah aplikasi.
Tambahkan kunci API Anda ke AppDelegate.swift seperti berikut:
- Tambahkan pernyataan import berikut:
import GooglePlaces
- Tambahkan yang berikut ini ke metode
application(_:didFinishLaunchingWithOptions:)Anda, mengganti YOUR_API_KEY dengan kunci API Anda:GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Tambahkan kunci API Anda ke AppDelegate.m sebagai berikut:
- Tambahkan pernyataan import berikut:
@import GooglePlaces;
- Tambahkan yang berikut ini ke metode
application:didFinishLaunchingWithOptions:Anda, dengan mengganti YOUR_API_KEY dengan kunci API Anda:[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
Langkah 5: Mulai menulis kode
Contoh kode berikut menunjukkan cara mendapatkan tempat saat ini, dan menambahkan widget UI place picker ke aplikasi Anda.
Mendapatkan tempat sekarang
Swift
import UIKit
import GooglePlaces
class ViewController: UIViewController {
var placesClient: GMSPlacesClient!
// Add a pair of UILabels in Interface Builder, and connect the outlets to these variables.
@IBOutlet var nameLabel: UILabel!
@IBOutlet var addressLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
placesClient = GMSPlacesClient.shared()
}
// Add a UIButton in Interface Builder, and connect the action to this function.
@IBAction func getCurrentPlace(_ sender: UIButton) {
placesClient.currentPlace(callback: { (placeLikelihoodList, error) -> Void in
if let error = error {
print("Pick Place error: \(error.localizedDescription)")
return
}
self.nameLabel.text = "No current place"
self.addressLabel.text = ""
if let placeLikelihoodList = placeLikelihoodList {
let place = placeLikelihoodList.likelihoods.first?.place
if let place = place {
self.nameLabel.text = place.name
self.addressLabel.text = place.formattedAddress?.components(separatedBy: ", ")
.joined(separator: "\n")
}
}
})
}
}
Objective-C
#import "ViewController.h"
@import GooglePlaces;
@interface ViewController ()
// Add a pair of UILabels in Interface Builder, and connect the outlets to these variables.
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *addressLabel;
@end
@implementation ViewController {
GMSPlacesClient *_placesClient;
}
- (void)viewDidLoad {
[super viewDidLoad];
_placesClient = [GMSPlacesClient sharedClient];
}
// Add a UIButton in Interface Builder, and connect the action to this function.
- (IBAction)getCurrentPlace:(UIButton *)sender {
[_placesClient currentPlaceWithCallback:^(GMSPlaceLikelihoodList *placeLikelihoodList, NSError *error){
if (error != nil) {
NSLog(@"Pick Place error %@", [error localizedDescription]);
return;
}
self.nameLabel.text = @"No current place";
self.addressLabel.text = @"";
if (placeLikelihoodList != nil) {
GMSPlace *place = [[[placeLikelihoodList likelihoods] firstObject] place];
if (place != nil) {
self.nameLabel.text = place.name;
self.addressLabel.text = [[place.formattedAddress componentsSeparatedByString:@", "]
componentsJoinedByString:@"\n"];
}
}
}];
}
@end
Menambahkan place-picker
Aplikasi demo SDK yang disertakan bersama Google Places API for iOS menyertakan aplikasi contoh untuk widget UI place-picker. Untuk memasang demo place picker, gunakan perintah pod try GooglePlacePicker. Untuk detail selengkapnya, lihat panduan untuk contoh kode.
Inilah contoh pengantar cepat untuk membuat place-picker.
Swift
import UIKit
import GooglePlacePicker
class ViewController: UIViewController {
// Add a pair of UILabels in Interface Builder, and connect the outlets to these variables.
@IBOutlet var nameLabel: UILabel!
@IBOutlet var addressLabel: UILabel!
// Add a UIButton in Interface Builder, and connect the action to this function.
@IBAction func pickPlace(_ sender: UIButton) {
let center = CLLocationCoordinate2D(latitude: 37.788204, longitude: -122.411937)
let northEast = CLLocationCoordinate2D(latitude: center.latitude + 0.001, longitude: center.longitude + 0.001)
let southWest = CLLocationCoordinate2D(latitude: center.latitude - 0.001, longitude: center.longitude - 0.001)
let viewport = GMSCoordinateBounds(coordinate: northEast, coordinate: southWest)
let config = GMSPlacePickerConfig(viewport: viewport)
let placePicker = GMSPlacePicker(config: config)
placePicker.pickPlace(callback: {(place, error) -> Void in
if let error = error {
print("Pick Place error: \(error.localizedDescription)")
return
}
if let place = place {
self.nameLabel.text = place.name
self.addressLabel.text = place.formattedAddress?.components(separatedBy: ", ")
.joined(separator: "\n")
} else {
self.nameLabel.text = "No place selected"
self.addressLabel.text = ""
}
})
}
}
Objective-C
#import "ViewController.h"
@import GooglePlacePicker;
@interface ViewController ()
// Add a pair of UILabels in Interface Builder, and connect the outlets to these variables.
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *addressLabel;
@end
@implementation ViewController {
GMSPlacePicker *_placePicker;
}
// Add a UIButton in Interface Builder, and connect the action to this function.
- (IBAction)pickPlace:(UIButton *)sender {
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.788204, -122.411937);
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(center.latitude + 0.001,
center.longitude + 0.001);
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(center.latitude - 0.001,
center.longitude - 0.001);
GMSCoordinateBounds *viewport = [[GMSCoordinateBounds alloc] initWithCoordinate:northEast
coordinate:southWest];
GMSPlacePickerConfig *config = [[GMSPlacePickerConfig alloc] initWithViewport:viewport];
_placePicker = [[GMSPlacePicker alloc] initWithConfig:config];
[_placePicker pickPlaceWithCallback:^(GMSPlace *place, NSError *error) {
if (error != nil) {
NSLog(@"Pick Place error %@", [error localizedDescription]);
return;
}
if (place != nil) {
self.nameLabel.text = place.name;
self.addressLabel.text = [[place.formattedAddress
componentsSeparatedByString:@", "] componentsJoinedByString:@"\n"];
} else {
self.nameLabel.text = @"No place selected";
self.addressLabel.text = @"";
}
}];
}
@end