Place Details

Pilih platform: Android iOS JavaScript Layanan Web

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:

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, panggil getAddress(), 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. Panggil OpeningHours.getWeekdayText() untuk menampilkan daftar string yang mewakili jam buka dan tutup untuk setiap hari dalam minggu tersebut. Panggil OpeningHours.getPeriods() untuk menampilkan daftar period objek dengan informasi lebih mendetail yang setara dengan data yang disediakan oleh getWeekdayText().

    Objek Place juga berisi getCurrentOpeningHours() yang menampilkan jam operasional suatu tempat selama tujuh hari ke depan, dan getSecondaryOpeningHours() 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 jika Place.Field.UTC_OFFSET dan Place.Field.OPENING_HOURS tersedia. Untuk memastikan akurasi minta Place.Field.BUSINESS_STATUS dan Kolom Place.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.