Places SDK for Android memberikan informasi yang lengkap kepada aplikasi Anda tentang tempat, termasuk nama dan alamat tempat, informasi geografis, lokasi yang ditetapkan sebagai koordinat garis lintang/garis bujur, tipe tempat (seperti seperti klub malam, toko hewan peliharaan, museum), dan banyak lagi. Untuk mengakses informasi ini tempat tertentu, Anda bisa menggunakan ID tempat, sebuah pengenal stabil yang secara unik mengidentifikasi tempat.
Detail tempat
Tujuan
Place
memberikan informasi tentang tempat tertentu. Anda bisa mendapatkan
Place
dengan cara berikut:
- Telepon
PlacesClient.fetchPlace()
– Lihat panduan untuk mendapatkan tempat berdasarkan ID. - Telepon
PlacesClient.findCurrentPlace()
– Lihat panduan untuk mendapatkan lokasi saat ini.
Saat meminta tempat, Anda harus menentukan data tempat yang akan ditampilkan. Untuk melakukannya, teruskan daftar Place.Field nilai yang menentukan data yang akan ditampilkan. Daftar ini adalah pertimbangan penting karena memengaruhi biaya untuk setiap permintaan.
Karena hasil data tempat tidak boleh kosong, hanya hasil tempat dengan data yang
ditampilkan (misalnya, jika tempat yang diminta tidak memiliki foto, photos
bidang tidak akan ada dalam hasil).
Contoh berikut meneruskan daftar tiga Nilai Place.Field untuk menentukan data yang ditampilkan oleh permintaan:
Kotlin
// Specify the fields to return. val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)
Java
// Specify the fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
Mengakses kolom data objek Tempat
Setelah Anda mendapatkan objek Place
, gunakan metode objek untuk mengakses
kolom data yang ditentukan dalam permintaan. Jika kolom tidak ada di objek Place
,
metode terkait mengembalikan nol. Berikut adalah contoh beberapa metode yang tersedia.
Untuk daftar lengkap semua metode, lihat
Place
Referensi API.
getAddress()
– Alamat tempat, dapat dibaca manusia format font.getAddressComponents()
–List
komponen alamat untuk tempat ini. Komponen ini disediakan untuk tujuan untuk mengekstrak informasi terstruktur tentang alamat suatu tempat, untuk contoh menemukan kota tempat suatu tempat berada. Jangan gunakan ini komponen untuk pemformatan alamat; sebagai gantinya, panggilgetAddress()
, yang memberikan alamat berformat lokal.getId()
– ID tekstual untuk tempat tersebut. {i>Read<i} selengkapnya tentang ID tempat di bagian selanjutnya dari halaman ini.getLatLng()
– Lokasi geografis tempat, ditetapkan sebagai koordinat lintang dan bujur.getName()
– Nama tempat.getOpeningHours()
–OpeningHours
dari tempat tersebut. PanggilOpeningHours.getWeekdayText()
untuk menampilkan daftar string yang mewakili jam buka dan tutup untuk setiap hari dalam minggu tersebut. PanggilOpeningHours.getPeriods()
untuk menampilkan daftarperiod
objek dengan informasi lebih mendetail yang setara dengan data yang disediakan olehgetWeekdayText()
.Objek
Place
juga berisigetCurrentOpeningHours()
yang menampilkan jam operasional suatu tempat selama tujuh hari ke depan, dangetSecondaryOpeningHours()
yang menampilkan jam operasional sekunder suatu tempat selama tujuh hari ke depan.isOpen()
– Boolean yang menunjukkan apakah tempat tersebut sedang buka. Jika tidak ada waktu yang ditentukan, defaultnya adalah sekarang.isOpen
hanya akan dikembalikan jikaPlace.Field.UTC_OFFSET
danPlace.Field.OPENING_HOURS
tersedia. Untuk memastikan akurasi mintaPlace.Field.BUSINESS_STATUS
dan KolomPlace.Field.UTC_OFFSET
di permintaan tempat asli Anda. Jika tidak diminta, bisnis dianggap telah beroperasi. Tonton video ini untuk mengetahui cara menggunakannya.isOpen
dengan Place Details.
Beberapa contoh sederhana:
Kotlin
val name = place.name val address = place.address val location = place.latLng
Java
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
Mendapatkan tempat melalui ID
ID tempat adalah ID tekstual yang secara unik mengidentifikasi tempat. Di beberapa
Places SDK for Android, Anda bisa mengambil ID tempat dengan memanggil
Place.getId()
Tujuan
Layanan Place Autocomplete
juga mengembalikan ID tempat untuk setiap tempat yang cocok dengan kueri penelusuran yang diberikan
dan filter. Anda bisa menyimpan ID tempat dan menggunakannya untuk mengambil
Place
objek lagi nanti.
Untuk mendapatkan tempat menurut ID, panggil
PlacesClient.fetchPlace()
,
meneruskan FetchPlaceRequest
.
API menampilkan
FetchPlaceResponse
di
Task
.
Tujuan
FetchPlaceResponse
berisi
Place
yang cocok dengan ID tempat yang diberikan.
Contoh kode berikut menunjukkan pemanggilan fetchPlace()
ke
mendapatkan detail untuk tempat yang ditentukan.
Kotlin
// Define a Place ID. val placeId = "INSERT_PLACE_ID_HERE" // Specify the fields to return. val placeFields = listOf(Place.Field.ID, Place.Field.NAME) // Construct a request object, passing the place ID and fields array. val request = FetchPlaceRequest.newInstance(placeId, placeFields) placesClient.fetchPlace(request) .addOnSuccessListener { response: FetchPlaceResponse -> val place = response.place Log.i(PlaceDetailsActivity.TAG, "Place found: ${place.name}") }.addOnFailureListener { exception: Exception -> if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.message}") val statusCode = exception.statusCode TODO("Handle error with given status code") } }
Java
// Define a Place ID. final String placeId = "INSERT_PLACE_ID_HERE"; // Specify the fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Construct a request object, passing the place ID and fields array. final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields); placesClient.fetchPlace(request).addOnSuccessListener((response) -> { Place place = response.getPlace(); Log.i(TAG, "Place found: " + place.getName()); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { final ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + exception.getMessage()); final int statusCode = apiException.getStatusCode(); // TODO: Handle error with given status code. } });
Mendapatkan status buka
PlacesClient.isOpen(IsOpenRequest request)
menampilkan objek IsOpenResponse
yang menunjukkan apakah tempat tersebut
yang saat ini terbuka berdasarkan waktu
yang ditentukan dalam panggilan.
Metode ini mengambil satu argumen dari jenis IsOpenRequest
yang berisi:
Place
, atau string yang menentukan ID tempat.- Nilai waktu opsional yang menentukan waktu dalam milidetik dari 1970-01-01T00:00:00Z. Jika tidak ada waktu yang ditentukan, defaultnya adalah sekarang.
Metode ini mengharuskan kolom berikut ada di objek Place
:
Place.Field.BUSINESS_STATUS
Place.Field.CURRENT_OPENING_HOURS
Place.Field.OPENING_HOURS
Place.Field.UTC_OFFSET
Jika kolom ini tidak disediakan dalam objek Place
, atau jika Anda meneruskan ID tempat,
metode ini menggunakan
PlacesClient.fetchPlace()
untuk mengambilnya. Untuk informasi selengkapnya tentang cara membuat objek Tempat dengan kolom yang diperlukan,
lihat Place Details.
Contoh berikut menentukan apakah tempat saat ini buka. Dalam contoh ini, Anda hanya meneruskan
ID tempat ke isOpen()
:
Kotlin
val isOpenCalendar: Calendar = Calendar.getInstance() val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk" val request: IsOpenRequest = try { IsOpenRequest.newInstance(placeId, isOpenCalendar.timeInMillis) } catch (e: IllegalArgumentException) { e.printStackTrace() return } val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(request) isOpenTask.addOnSuccessListener { response -> val isOpen = response.isOpen } // ...
Java
@NonNull Calendar isOpenCalendar = Calendar.getInstance(); String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"; IsOpenRequest isOpenRequest; try { isOpenRequest = IsOpenRequest.newInstance(placeId, isOpenCalendar.getTimeInMillis()); } catch (IllegalArgumentException e) { e.printStackTrace(); return; } Task<IsOpenResponse> placeTask = placesClient.isOpen(isOpenRequest); placeTask.addOnSuccessListener( (response) -> isOpen = response.isOpen()); // ...
Contoh berikutnya menunjukkan pemanggilan isOpen()
tempat Anda meneruskan objek Place
.
Objek Place
harus berisi ID tempat yang valid:
Kotlin
val isOpenCalendar: Calendar = Calendar.getInstance() var place: Place val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk" // Specify the required fields for an isOpen request. val placeFields: List<Place.Field> = listOf( Place.Field.BUSINESS_STATUS, Place.Field.CURRENT_OPENING_HOURS, Place.Field.ID, Place.Field.OPENING_HOURS, Place.Field.UTC_OFFSET ) val placeRequest: FetchPlaceRequest = FetchPlaceRequest.newInstance(placeId, placeFields) val placeTask: Task<FetchPlaceResponse> = placesClient.fetchPlace(placeRequest) placeTask.addOnSuccessListener { placeResponse -> place = placeResponse.place val isOpenRequest: IsOpenRequest = try { IsOpenRequest.newInstance(place, isOpenCalendar.timeInMillis) } catch (e: IllegalArgumentException) { e.printStackTrace() return@addOnSuccessListener } val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(isOpenRequest) isOpenTask.addOnSuccessListener { isOpenResponse -> val isOpen = isOpenResponse.isOpen } // ... } // ...
Java
@NonNull Calendar isOpenCalendar = Calendar.getInstance(); String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"; // Specify the required fields for an isOpen request. List<Place.Field> placeFields = new ArrayList<>(Arrays.asList( Place.Field.BUSINESS_STATUS, Place.Field.CURRENT_OPENING_HOURS, Place.Field.ID, Place.Field.OPENING_HOURS, Place.Field.UTC_OFFSET )); FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields); Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request); placeTask.addOnSuccessListener( (placeResponse) -> { Place place = placeResponse.getPlace(); IsOpenRequest isOpenRequest; try { isOpenRequest = IsOpenRequest.newInstance(place, isOpenCalendar.getTimeInMillis()); } catch (IllegalArgumentException e) { e.printStackTrace(); return; } Task<IsOpenResponse> isOpenTask = placesClient.isOpen(isOpenRequest); isOpenTask.addOnSuccessListener( (isOpenResponse) -> isOpen = isOpenResponse.isOpen()); // ... }); // ...
Menampilkan atribusi dalam aplikasi Anda
Saat aplikasi Anda menampilkan informasi tempat, termasuk ulasan tempat, aplikasi juga harus ditampilkan atribusi apa pun. Untuk informasi selengkapnya, lihat atribusi.
Selengkapnya tentang ID tempat
ID tempat yang digunakan di Places SDK for Android adalah ID yang sama seperti yang digunakan di Places API. Setiap ID tempat hanya bisa merujuk ke satu tempat, tetapi satu tempat bisa memiliki lebih banyak dari satu ID tempat. Ada keadaan lain yang dapat menyebabkan suatu tempat dapatkan ID tempat baru. Misalnya, hal ini dapat terjadi jika suatu bisnis pindah ke lokasi HTTP/HTTPS.
Bila Anda meminta tempat dengan menetapkan ID tempat, Anda bisa yakin bahwa Anda akan selalu menerima respons yang sama (jika tempatnya masih ada). Namun, perhatikan bahwa respons mungkin berisi ID tempat yang berbeda dari yang dimaksud dalam permintaan Anda.
Untuk informasi selengkapnya, lihat ringkasan ID tempat.