Places SDK for Android memberikan aplikasi Anda informasi lengkap tentang tempat, termasuk nama dan alamat tempat, lokasi geografis yang ditentukan sebagai koordinat lintang/bujur, jenis tempat (seperti kelab malam, toko hewan peliharaan, museum), dan lainnya. Guna mengakses informasi ini untuk tempat tertentu, Anda dapat menggunakan ID tempat, yaitu ID stabil yang secara unik mengidentifikasi tempat.
Detail tempat
Objek Place
memberikan informasi tentang tempat tertentu. Anda bisa mendapatkan objek Place
dengan cara berikut:
- Panggil
PlacesClient.findCurrentPlace()
– Lihat panduan untuk mendapatkan tempat saat ini. - Panggil
PlacesClient.fetchPlace()
– Lihat panduan untuk mendapatkan tempat berdasarkan ID.
Saat meminta tempat, Anda harus menentukan data tempat yang akan dikembalikan. Untuk melakukannya, teruskan daftar nilai Place.Field yang menentukan data yang akan ditampilkan. Daftar ini merupakan pertimbangan penting karena akan memengaruhi biaya untuk setiap permintaan.
Karena hasil data tempat tidak boleh kosong, hanya hasil tempat dengan data yang dikembalikan (misalnya, jika tempat yang diminta tidak memiliki foto, kolom photos
tidak akan ada dalam hasil).
Contoh berikut meneruskan daftar tiga nilai Place.Field untuk menentukan data yang ditampilkan oleh permintaan:
Java
// Specify the fields to return. final ListplaceFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
Kotlin
// Specify the fields to return. val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)
Setelah Anda mendapatkan objek Place
, gunakan metode objek untuk mengambil data tempat.
Berikut adalah contoh beberapa metode yang tersedia. Untuk mengetahui daftar lengkap semua metode, lihat referensi API
Place
.
getAddress()
– Alamat tempat, dalam format yang dapat dibaca manusia.getAddressComponents()
–List
komponen alamat untuk tempat ini. Komponen ini disediakan untuk mengekstrak informasi terstruktur tentang alamat suatu tempat, misalnya menemukan kota tempat sebuah tempat berada. Jangan gunakan komponen ini untuk pemformatan alamat; sebagai gantinya, panggilgetAddress()
, yang menyediakan alamat berformat lokal.getID()
– ID tekstual untuk tempat tersebut. Baca selengkapnya tentang ID tempat di sisa halaman ini.getLatLng()
– Lokasi geografis tempat, yang ditetapkan sebagai koordinat lintang dan bujur.getName()
– Nama tempat.getOpeningHours()
–OpeningHours
tempat. PanggilOpeningHours.getWeekdayText()
untuk menampilkan daftar string yang mewakili jam buka dan tutup untuk setiap hari dalam seminggu. PanggilOpeningHours.getPeriods()
untuk menampilkan daftar objekperiod
dengan informasi lebih mendetail yang setara dengan data yang disediakan olehgetWeekdayText()
. Catatan: Jika tempat selalu buka, jangka waktu ditampilkan sebagai Minggu pada tengah malam, dancloseEvent
adalah null.isOpen()
– Boolean yang menunjukkan apakah tempat tersebut buka atau tidak. Jika tidak ada waktu yang ditentukan, defaultnya adalah sekarang.isOpen
hanya akan ditampilkan jikaPlace.Field.UTC_OFFSET
danPlace.Field.OPENING_HOURS
tersedia. Untuk memastikan hasil yang akurat, minta kolomPlace.Field.BUSINESS_STATUS
danPlace.Field.UTC_OFFSET
dalam permintaan tempat asli Anda. Jika tidak diminta, diasumsikan bahwa bisnis tersebut beroperasi. Tonton video ini untuk mengetahui cara menggunakanisOpen
dengan Place Details.
Beberapa contoh sederhana:
Java
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
Kotlin
val name = place.name val address = place.address val location = place.latLng
Mendapatkan tempat melalui ID
ID tempat adalah ID tekstual yang secara unik mengidentifikasi tempat. Di Places SDK for Android, Anda dapat mengambil ID tempat dengan memanggil Place.getId()
.
Layanan
Place Autocomplete
juga mengembalikan ID tempat untuk setiap tempat yang cocok dengan filter dan
kueri penelusuran yang diberikan. Anda dapat menyimpan ID tempat dan menggunakannya untuk mengambil objek
Place
lagi nanti.
Untuk mendapatkan tempat berdasarkan ID, panggil
PlacesClient.fetchPlace()
,
dengan meneruskan FetchPlaceRequest
.
API menampilkan FetchPlaceResponse
di Task
.
FetchPlaceResponse
berisi
objek Place
yang cocok dengan ID tempat yang diberikan.
Contoh kode berikut menunjukkan pemanggilan fetchPlace()
untuk
mendapatkan detail tempat yang ditentukan.
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. } });
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") } }
Menampilkan atribusi dalam aplikasi Anda
Saat aplikasi Anda menampilkan informasi tempat, aplikasi juga harus menampilkan atribusi. Lihat dokumentasi tentang atribusi.
Selengkapnya tentang ID tempat
ID tempat yang digunakan di Places SDK for Android adalah ID yang sama dengan yang digunakan di Places API. Setiap ID tempat hanya bisa merujuk ke satu tempat, tetapi satu tempat bisa memiliki lebih dari satu ID tempat. Ada keadaan lain yang dapat menyebabkan suatu tempat mendapatkan ID tempat baru. Misalnya, hal ini dapat terjadi jika bisnis pindah ke lokasi baru.
Saat meminta tempat dengan menentukan ID tempat, Anda bisa merasa yakin bahwa Anda akan selalu menerima tempat yang sama dalam respons (jika tempat itu masih ada). Akan tetapi, perlu diketahui bahwa respons itu mungkin berisi ID tempat yang berbeda dari yang Anda minta.
Untuk informasi selengkapnya, lihat ringkasan ID tempat.