Place Autocomplete (Baru)

Pilih platform: Android iOS JavaScript Layanan Web

Developer Wilayah Ekonomi Eropa (EEA)

Layanan Autocomplete (Baru) adalah API iOS yang menampilkan saran tempat sebagai respons terhadap permintaan. Dalam permintaan, tentukan string penelusuran teks dan batas geografis yang mengontrol area penelusuran.

Layanan Autocomplete (Baru) dapat mencocokkan kata dan substring lengkap dari input, yang me-resolve nama tempat, alamat, dan Plus Codes. Oleh karena itu, aplikasi dapat mengirimkan kueri saat pengguna mengetik, untuk memberikan saran tempat secara real time.

Saran tempat adalah tempat, seperti bisnis, alamat, dan lokasi menarik, berdasarkan string teks input dan area penelusuran yang ditentukan.

Misalnya, Anda memanggil API menggunakan input string yang berisi input pengguna parsial, "Spagh", dengan area penelusuran terbatas di New York City. Respons kemudian berisi daftar saran tempat yang cocok dengan string penelusuran dan area penelusuran, seperti restoran bernama "Cafe Spaghetti", beserta detail tentang tempat tersebut.

Saran tempat yang ditampilkan dirancang untuk ditampilkan kepada pengguna agar mereka dapat memilih tempat yang diinginkan. Anda dapat membuat permintaan Place Details (Baru) untuk mendapatkan informasi selengkapnya tentang saran tempat yang ditampilkan.

Anda dapat mengintegrasikan fungsi Pelengkapan Otomatis (Baru) ke dalam aplikasi Anda dengan dua cara utama:

Mendapatkan prediksi tempat secara terprogram

Permintaan Pelengkapan Otomatis (Baru)

Buat permintaan pelengkapan otomatis dengan memanggil metode di GMSPlacesClient. Anda dapat meneruskan parameter dalam objek GMSAutocompleteRequest. Respons memberikan saran Pelengkapan Otomatis dalam objek GMSAutocompletePlaceSuggestion.

Parameter kunci API dan query wajib diisi. Anda juga dapat menyertakan GMSAutocompleteSessionToken untuk mengaitkan permintaan dengan sesi penagihan dan GMSAutocompleteFilter untuk diterapkan ke hasil.

Versi Places Swift SDK

Buat permintaan pelengkapan otomatis dengan memanggil metode di PlacesClient. Anda dapat meneruskan parameter dalam objek AutocompleteRequest. Respons memberikan saran Pelengkapan Otomatis dalam objek AutocompletePlaceSuggestion.

Parameter kunci API dan query wajib diisi. Anda juga dapat menyertakan AutocompleteSessionToken untuk mengaitkan permintaan dengan sesi penagihan dan AutocompleteFilter untuk diterapkan ke hasil.

Untuk mengetahui informasi selengkapnya tentang parameter wajib dan opsional, lihat bagian parameter dalam dokumen ini.

Places Swift SDK

let center = (37.3913916, -122.0879074)
let northEast = (37.388162, -122.088137)
let southWest = (37.395804, -122.077023)

let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest)
let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias)

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  // Handle suggestions.
case .failure(let placesError):
  // Handle error.
}

Swift

let token = GMSAutocompleteSessionToken()

let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051)
let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.types = [kGMSPlaceTypeRestaurant]
filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds)

let request = GMSAutocompleteRequest(query:"Spagh")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137);
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ kGMSPlaceTypeRestaurant ];
filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Respons Pelengkapan Otomatis (Baru)

Pelengkapan otomatis menampilkan array hingga lima instance GMSAutocompleteSuggestion. Array berisi:

  • placeID
  • types: Jenis yang berlaku untuk tempat ini.
  • distanceMeters: Jarak dari asal.
  • attributedFullText: Teks lengkap saran yang dapat dibaca manusia.
  • attributedPrimaryText: Teks utama saran yang dapat dibaca manusia.
  • attributedSecondaryText: Teks sekunder saran yang dapat dibaca manusia.
  • structuredFormat: Nama spesifik dan teks yang membedakan, seperti kota atau wilayah.

Parameter wajib

kueri

String teks yang akan ditelusuri. Tentukan kata dan substring lengkap, nama tempat, alamat, dan Plus Codes. Layanan Autocomplete (Baru) menampilkan kandidat hasil berdasarkan string ini dan mengurutkan hasil berdasarkan relevansi yang terlihat.

Parameter opsional

sessionToken

Token sesi adalah string yang dibuat pengguna yang melacak panggilan Autocomplete (Baru)—baik panggilan yang dilakukan melalui widget maupun panggilan terprogram—sebagai "sesi". Pelengkapan Otomatis (Baru) menggunakan token sesi untuk mengelompokkan fase kueri dan pemilihan dari penelusuran pelengkapan otomatis pengguna ke dalam sesi terpisah untuk tujuan penagihan. Untuk mengetahui informasi selengkapnya, lihat Token sesi.

Parameter AutocompleteFilter opsional

tipe

Suatu tempat hanya dapat memiliki satu jenis utama dari jenis Tabel A atau Tabel B yang terkait dengannya. Misalnya, jenis utama mungkin mexican_restaurant atau steak_house.

Secara default, API menampilkan semua tempat berdasarkan parameter input, terlepas dari nilai jenis utama yang terkait dengan tempat tersebut. Batasi hasil agar memiliki jenis utama tertentu atau jenis utama dengan meneruskan parameter types.

Gunakan parameter ini untuk menentukan hingga lima nilai jenis dari Tabel A atau Tabel B. Tempat harus cocok dengan salah satu nilai jenis utama yang ditentukan agar disertakan dalam respons.

Permintaan ditolak dengan error INVALID_REQUEST jika:

  • Lebih dari lima jenis ditentukan.
  • Jenis yang tidak dikenal akan ditentukan.

Misalnya, untuk membatasi hasil ke toko perlengkapan olahraga, tentukan jenis tersebut di AutocompleteFilter Anda:

Places Swift SDK

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
  

Swift

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]
  

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];

negara

Hanya menyertakan hasil dari daftar wilayah yang ditentukan, yang ditetapkan sebagai array hingga 15 nilai dua karakter ccTLD ("domain level teratas"). Jika tidak disertakan, tidak ada batasan yang diterapkan pada respons. Misalnya, untuk membatasi wilayah ke Jerman dan Prancis:

Places Swift SDK

let filter = AutocompleteFilter(countries: ["DE", "FR"])
  

Swift

let filter = GMSAutocompleteFilter()
filter.countries = ["DE", "FR"]

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.countries = @[ @"DE", @"FR" ];

Jika Anda menentukan locationRestriction dan countries, hasilnya berada di area persimpangan kedua setelan tersebut.

inputOffset

Offset karakter Unicode berbasis nol yang menunjukkan posisi kursor di input. Posisi kursor dapat memengaruhi prediksi yang ditampilkan. Jika kosong, nilai defaultnya adalah panjang input.

locationBias atau locationRestriction

Anda dapat menentukan locationBias atau locationRestriction, tetapi tidak keduanya, untuk menentukan area penelusuran. Anggap locationRestriction sebagai penentuan region tempat hasil harus berada, dan locationBias sebagai penentuan region yang harus dekat dengan hasil, tetapi dapat berada di luar area.

  • locationBias menentukan area yang akan ditelusuri. Lokasi ini berfungsi sebagai bias, yang berarti hasil di sekitar lokasi yang ditentukan dapat ditampilkan, termasuk hasil di luar area yang ditentukan.

  • locationRestriction menentukan area yang akan ditelusuri. Hasil di luar area yang ditentukan tidak ditampilkan.

Tentukan region locationBias atau locationRestriction sebagai area tampilan persegi panjang atau sebagai lingkaran.

Lingkaran ditentukan oleh titik tengah dan radius dalam meter. Radius harus antara 0,0 dan 50000,0, inklusif. Nilai defaultnya adalah 0,0. Untuk locationRestriction, Anda harus menetapkan radius ke nilai yang lebih besar dari 0,0. Jika tidak, permintaan tidak akan menampilkan hasil.

Contoh:

Places Swift SDK

let center = CLLocationCoordinate2DMake(40.477398, -74.259087)

let bias = CircularCoordinateRegion(center: center, radius: 1000.0)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

Swift

let center = CLLocationCoordinate2DMake(40.730610, -73.935242)
let radius = 1000.0

filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242);
radius = 1000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);

Persegi panjang adalah area pandang garis lintang-bujur, yang direpresentasikan sebagai dua titik low dan high yang berlawanan secara diagonal. Area pandang dianggap sebagai area tertutup, yang berarti area pandang mencakup batasnya. Batas lintang harus berkisar antara -90 hingga 90 derajat inklusif, dan batas bujur harus berkisar antara -180 hingga 180 derajat inklusif:

  • Jika low = high, area tampilan terdiri dari satu titik tersebut.
  • Jika low.longitude > high.longitude, rentang garis bujur dibalik (area tampilan melintasi garis bujur 180 derajat).
  • Jika low.longitude = -180 derajat dan high.longitude= 180 derajat, area tampilan akan mencakup semua bujur.
  • Jika low.longitude = 180 derajat dan high.longitude = -180 derajat, rentang bujur kosong.

low dan high harus diisi, dan kotak yang ditampilkan tidak boleh kosong. Viewport kosong akan menyebabkan error.

Misalnya, area tampilan ini sepenuhnya mencakup New York City:

Places Swift SDK

let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087)
let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

Swift

let high = CLLocationCoordinate2DMake(40.921628, -73.700051)
let low = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceRectangularLocationOption(high, low)

Objective-C

CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087);
CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceRectangularLocationOption(high, low);

asal

Titik asal untuk menghitung jarak garis lurus ke tujuan (ditampilkan sebagai distanceMeters). Jika nilai ini tidak disertakan, jarak garis lurus tidak akan ditampilkan. Harus ditentukan sebagai koordinat lintang dan bujur:

Places Swift SDK

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
  

Swift

let filter = GMSAutocompleteFilter()
filter.origin =  CLLocation(latitude: 37.395804, longitude: -122.077023)
 

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];

filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];

regionCode

Kode wilayah yang digunakan untuk memformat respons, yang ditetapkan sebagai nilai dua karakter ccTLD ("domain level teratas"). Sebagian besar kode ccTLD identik dengan kode ISO 3166-1, dengan beberapa pengecualian. Misalnya, ccTLD Inggris Raya adalah "uk" (.co.uk) sedangkan kode ISO 3166-1-nya adalah "gb" (secara teknis untuk entitas "The United Kingdom of Great Britain and Northern Ireland").

Jika Anda menentukan kode wilayah yang tidak valid, API akan menampilkan error INVALID_ARGUMENT. Parameter dapat memengaruhi hasil berdasarkan hukum yang berlaku.

shouldIncludePureServiceAreaBusinesses

Jika true, menampilkan bisnis jasa sistem panggilan murni dalam array respons. Bisnis jasa sistem panggilan murni adalah bisnis yang melakukan kunjungan atau pengiriman ke pelanggan secara langsung, tetapi tidak melayani pelanggan di alamat bisnisnya.

Contoh:

Places Swift SDK

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

Swift

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.shouldIncludePureServiceAreaBusinesses = YES;

Menambahkan widget Place Autocomplete

Untuk memberikan pengalaman pelengkapan otomatis tempat yang konsisten dengan lebih mudah, Anda dapat menambahkan widget Place Autocomplete ke aplikasi Anda. Widget ini menyediakan antarmuka khusus layar penuh yang menangani input pengguna dan menampilkan prediksi tempat kepada pengguna sekaligus menampilkan objek AutocompletePlaceSuggestion ke aplikasi. Kemudian, Anda dapat membuat permintaan Place Details (Baru) untuk mendapatkan informasi tambahan tentang prediksi tempat.

Widget pelengkapan otomatis tempat

Seperti saat mendapatkan prediksi tempat secara terprogram, widget Place Autocomplete memungkinkan Anda menggunakan token sesi untuk mengelompokkan permintaan pelengkapan otomatis ke dalam sesi untuk tujuan penagihan. Anda dapat meneruskan token sesi dengan memanggil AutocompleteSessionToken().

Jika Anda tidak memberikan token sesi, widget akan membuat token sesi Autocomplete untuk Anda, yang kemudian dapat diperoleh dari callback onSelection. Untuk mengetahui informasi selengkapnya tentang cara menggunakan token sesi, lihat Tentang token sesi.

Saat nilai binding show ditetapkan ke true, pengguna akan dibawa ke tampilan layar penuh tempat mereka dapat memilih tempat. Saat pengguna mengetik, widget akan menampilkan saran tempat seperti bisnis, alamat, dan lokasi menarik. Saat pengguna memilih tempat, widget akan memanggil pengendali onSelection dengan tempat yang dipilih, dan menutup tampilan layar penuh.

Parameter widget Place Autocomplete

Selain parameter yang tersedia secara terprogram, widget Place Autocomplete juga menawarkan parameter berikut.

tunjukkan

show menentukan apakah widget ditampilkan.

AutocompleteUICustomization

Parameter AutocompleteUICustomization menentukan penyesuaian UI yang akan diterapkan ke widget. Opsi penyesuaiannya adalah:

  • AutocompleteListDensity. Dengan parameter ini, Anda dapat memilih kepadatan daftar saran, baik multiLine maupun twoLine.
  • AutocompleteUIIcon. Dengan parameter ini, Anda dapat memilih apakah akan menampilkan ikon default untuk setiap item daftar atau tidak.

onSelection

Penutupan yang akan dijalankan saat tempat dipilih.

onError

Penutupan yang akan dijalankan saat terjadi error. PlacesError akan diteruskan jika terjadi error.

Lihat contoh kode lengkap.

Contoh Pelengkapan Otomatis (Baru)

Menggunakan locationRestriction dan locationBias

Autocomplete (Baru) menggunakan penyesuaian IP secara default untuk mengontrol area penelusuran. Dengan penyesuaian IP, API menggunakan alamat IP perangkat untuk menyesuaikan hasil. Anda dapat secara opsional menggunakan locationRestriction atau locationBias, tetapi tidak keduanya, untuk menentukan area yang akan ditelusuri.

Pembatasan lokasi menentukan area yang akan ditelusuri. Hasil di luar area yang ditentukan tidak akan ditampilkan. Contoh berikut menggunakan pembatasan lokasi untuk membatasi permintaan ke pembatasan lokasi melingkar dengan radius 5.000 meter yang berpusat di San Francisco:

Places Swift SDK

let center = (37.775061, -122.419400)
let radius = 5000.0
let restriction = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionRestriction: restriction)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Dengan bias lokasi, lokasi berfungsi sebagai bias, yang berarti hasil di sekitar lokasi yang ditentukan dapat ditampilkan, termasuk hasil di luar area yang ditentukan. Contoh berikutnya mengubah permintaan sebelumnya untuk menggunakan bias lokasi:

Places Swift SDK

let center = (37.775061, -122.419400)
let radius = 5000.0
let bias = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionBias: bias)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Jenis penggunaan

Gunakan parameter jenis untuk membatasi hasil dari permintaan agar berjenis tertentu seperti yang tercantum dalam Tabel A dan Tabel B. Anda dapat menentukan array hingga lima nilai. Jika dihilangkan, semua jenis akan ditampilkan.

Contoh berikut menentukan string kueri "Soccer" dan menggunakan parameter jenis untuk membatasi hasil ke tempat dengan jenis "sporting_goods_store":

Places Swift SDK

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
    

Swift

let token = GMSAutocompleteSessionToken()

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]

let request = GMSAutocompleteRequest(query:"Soccer")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Gunakan asal

Jika Anda menyertakan parameter origin dalam permintaan, yang ditentukan sebagai koordinat garis lintang dan bujur, API akan menyertakan jarak garis lurus dari asal ke tujuan dalam respons. Respons menampilkan jarak sebagai distanceMeters.

Contoh ini menetapkan asal ke pusat San Francisco:

Places Swift SDK

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194))
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let origin = CLLocation(latitude: 37.7749, longitude: -122.4194)

let filter = GMSAutocompleteFilter()

filter.origin =  origin

let request = GMSAutocompleteRequest(query:"Amoeba")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))")
        }
      }
    })

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
      }
    }
}];

Menambahkan widget Place Autocomplete

Places Swift SDK

struct PlaceAutocompleteDemoView: View {

  @State private var fetchedPlace: Place?
  @State private var placesError: PlacesError?
  @State private var showWidget = false

  public var body: some View {
    VStack {
      Button("Search for a place") {
        showWidget.toggle()
      }
      .placeAutocomplete(
        show: $showWidget,
        onSelection: { (autocompletePlaceSuggestion, autocompleteSessionToken) in
          Task {
            let placesClient = await PlacesClient.shared
            let fetchPlaceRequest = FetchPlaceRequest(
              placeID: autocompletePlaceSuggestion.placeID,
              placeProperties: [.displayName, .formattedAddress],
              sessionToken: autocompleteSessionToken
            )

            switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
            case .success(let place):
              print("Fetched place: \(place)")
              self.fetchedPlace = place
            case .failure(let placesError):
              print("Failed to fetch place: \(placesError)")
              self.placesError = placesError
            }
          }
        },
        onError: { placesError in
          self.placesError = placesError
        }
      )
    }
  }
}