Permintaan Nearby Search (Baru) menggunakan satu atau beberapa jenis tempat, dan menampilkan daftar tempat yang cocok dalam area yang ditentukan. Mask kolom yang menentukan satu atau beberapa jenis data diperlukan. Nearby Search (Baru) hanya mendukung permintaan POST.
Dengan API Explorer, Anda dapat membuat permintaan secara langsung sehingga Anda dapat memahami opsi API dan API:
Cobalah!Permintaan Nearby Search (Baru)
Permintaan Nearby Search (Baru) adalah permintaan POST HTTP ke URL dalam bentuk:
https://places.googleapis.com/v1/places:searchNearby
Teruskan semua parameter dalam isi permintaan JSON atau di header sebagai bagian dari permintaan POST. Contoh:
curl -X POST -d '{ "includedTypes": ["restaurant"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965}, "radius": 500.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName" \ https://places.googleapis.com/v1/places:searchNearby
Respons Nearby Search (Baru)
Nearby Search (Baru) menampilkan objek JSON sebagai respons. Dalam respons:
- Array
places
berisi semua tempat yang cocok. - Setiap tempat dalam array direpresentasikan oleh objek
Place
. ObjekPlace
berisi informasi mendetail tentang satu tempat. - FieldMask yang diteruskan dalam permintaan menentukan daftar kolom yang ditampilkan dalam objek
Place
.
Objek JSON lengkap dalam bentuk:
{ "places": [ { object (Place) } ] }
Parameter wajib
-
FieldMask
Tentukan daftar kolom yang akan ditampilkan dalam respons dengan membuat mask kolom respons. Teruskan mask kolom respons ke metode menggunakan parameter URL
$fields
ataufields
, atau dengan menggunakan header HTTPX-Goog-FieldMask
. Tidak ada daftar default kolom yang ditampilkan dalam respons. Jika Anda menghilangkan mask kolom, metode akan menampilkan error.Penyamaran kolom adalah praktik desain yang baik untuk memastikan Anda tidak meminta data yang tidak perlu. Cara ini akan membantu Anda menghindari waktu pemrosesan dan biaya penagihan yang tidak perlu.
Tentukan daftar yang dipisahkan koma untuk jenis data tempat yang akan ditampilkan. Misalnya, untuk mengambil nama tampilan dan alamat tempat.
X-Goog-FieldMask: places.displayName,places.formattedAddress
Gunakan
*
untuk mengambil semua kolom.X-Goog-FieldMask: *
Tentukan satu atau beberapa kolom berikut:
Kolom berikut memicu SKU Nearby Search (Basic):
places.accessibilityOptions
,places.addressComponents
,places.adrFormatAddress
,places.businessStatus
,places.displayName
,places.formattedAddress
,places.googleMapsUri
,places.iconBackgroundColor
,places.iconMaskBaseUri
,places.id
,places.location
,places.name
*,places.photos
,places.plusCode
,places.primaryType
,places.primaryTypeDisplayName
,places.shortFormattedAddress
,places.subDestinations
,places.types
,places.utcOffsetMinutes
,places.viewport
* Kolomplaces.name
berisi nama resource tempat dalam bentuk:places/PLACE_ID
. Gunakanplaces.displayName
untuk mengakses nama tekstual tempat tersebut.Kolom berikut memicu SKU Nearby Search (Advanced):
places.currentOpeningHours
,places.currentSecondaryOpeningHours
,places.internationalPhoneNumber
,places.nationalPhoneNumber
,places.priceLevel
,places.rating
,places.regularOpeningHours
,places.regularSecondaryOpeningHours
,places.userRatingCount
,places.websiteUri
Kolom berikut memicu SKU Nearby Search (Preferred):
places.allowsDogs
,places.curbsidePickup
,places.delivery
,places.dineIn
,places.editorialSummary
,places.evChargeOptions
,places.fuelOptions
,places.goodForChildren
,places.goodForGroups
,places.goodForWatchingSports
,places.liveMusic
,places.menuForChildren
,places.parkingOptions
,places.paymentOptions
,places.outdoorSeating
,places.reservable
,places.restroom
,places.reviews
,places.servesBeer
,places.servesBreakfast
,places.servesBeer
,places.servesBreakfast
places.servesBrunch
places.servesCocktails
places.servesCoffee
places.servesDesserts
places.servesDinner
places.servesLunch
places.servesVegetarianFood
places.servesWine
places.takeout
-
locationRestriction
Wilayah yang akan ditelusuri sebagai lingkaran, yang ditentukan oleh titik tengah dan radius dalam meter. Radius harus antara 0,0 dan 50000.0, inklusif. Radius default adalah 0.0. Anda harus menetapkannya dalam permintaan ke nilai yang lebih besar dari 0,0.
Contoh:
"locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 500.0 } }
Parameter opsional
-
includeTypes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes
Memungkinkan Anda menentukan daftar jenis dari jenis Tabel A yang digunakan untuk memfilter hasil penelusuran. Maksimal 50 jenis dapat ditentukan dalam setiap kategori pembatasan jenis.
Sebuah tempat hanya dapat memiliki satu jenis utama dari jenis Tabel A yang terkait dengannya. Misalnya, jenis utamanya mungkin
"mexican_restaurant"
atau"steak_house"
. GunakanincludedPrimaryTypes
danexcludedPrimaryTypes
untuk memfilter hasil pada jenis utama suatu tempat.Suatu tempat juga dapat memiliki beberapa nilai jenis dari jenis Tabel A yang terkait dengannya. Misalnya, restoran mungkin memiliki jenis berikut:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. GunakanincludedTypes
danexcludedTypes
untuk memfilter hasil pada daftar jenis yang terkait dengan tempat.Jika penelusuran ditentukan dengan beberapa pembatasan jenis, hanya tempat yang memenuhi semua batasan yang akan ditampilkan. Misalnya, jika Anda menentukan
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
, tempat yang ditampilkan akan menyediakan layanan terkait"restaurant"
, tetapi utamanya tidak beroperasi sebagai"steak_house"
.includedTypes
Daftar yang dipisahkan koma untuk jenis tempat dari Tabel A yang akan ditelusuri. Jika parameter ini dihilangkan, semua jenis tempat akan ditampilkan.
excludedTypes
Daftar yang dipisahkan koma untuk jenis tempat dari Tabel A yang akan dikecualikan dari penelusuran.
Jika Anda menentukan
includedTypes
( seperti"school"
) danexcludedTypes
(seperti"primary_school"
) dalam permintaan, respons akan menyertakan tempat yang dikategorikan sebagai"school"
, tetapi bukan sebagai"primary_school"
. Responsnya mencakup tempat yang cocok dengan setidaknya salah satuincludedTypes
dan tidak satu pun dariexcludedTypes
.Jika ada jenis yang bertentangan, seperti jenis yang muncul di
includedTypes
danexcludedTypes
, errorINVALID_REQUEST
akan ditampilkan.includedPrimaryTypes
Daftar yang dipisahkan koma untuk jenis tempat utama dari Tabel A untuk disertakan dalam penelusuran.
excludedPrimaryTypes
Daftar yang dipisahkan koma untuk jenis tempat utama dari Tabel A yang akan dikecualikan dari penelusuran.
Jika ada jenis utama yang bertentangan, seperti jenis yang muncul di
includedPrimaryTypes
danexcludedPrimaryTypes
, errorINVALID_ARGUMENT
akan ditampilkan. -
languageCode
Bahasa yang akan digunakan untuk menampilkan hasil.
- Lihat daftar bahasa yang didukung. Google sering memperbarui bahasa yang didukung, sehingga daftar ini mungkin tidak lengkap.
- Jika
languageCode
tidak diberikan, API akan ditetapkan secara default keen
. Jika Anda menetapkan kode bahasa yang tidak valid, API akan menampilkan errorINVALID_ARGUMENT
. - API berupaya sebaik mungkin untuk menyediakan alamat yang dapat dibaca oleh pengguna dan lokal. Untuk mencapai sasaran tersebut, metode ini akan menampilkan alamat dalam bahasa lokal, ditransliterasi ke skrip yang dapat dibaca oleh pengguna jika perlu, dengan mengamati bahasa pilihan. Semua alamat lain dikembalikan dalam bahasa yang dipilih. Komponen alamat ditampilkan dalam bahasa yang sama, yang dipilih dari komponen pertama.
- Jika nama tidak tersedia dalam bahasa yang dipilih, API menggunakan bahasa terdekat yang sesuai.
- Bahasa yang dipilih berpengaruh kecil terhadap serangkaian hasil yang dipilih API untuk ditampilkan, dan urutan tampilannya. Geocoder menafsirkan singkatan secara berbeda, bergantung pada bahasa, seperti singkatan untuk jenis jalan, atau sinonim yang mungkin valid dalam satu bahasa, tetapi tidak dalam bahasa lain.
-
maxResultCount
Menentukan jumlah maksimum hasil tempat yang akan ditampilkan. Harus antara 1 dan 20 (default) inklusif.
-
rankPreference
Jenis peringkat yang akan digunakan. Jika parameter ini dihilangkan, hasil akan diberi peringkat berdasarkan popularitas. Dapat berupa salah satu dari yang berikut:
POPULARITY
(default) Mengurutkan hasil berdasarkan popularitasnya.DISTANCE
Mengurutkan hasil dalam urutan menaik berdasarkan jaraknya dari lokasi yang ditentukan.
-
regionCode
Kode wilayah yang digunakan untuk memformat respons, yang ditetapkan sebagai nilai kode CLDR dua karakter. Tidak ada nilai default.
Jika nama negara untuk kolom
formattedAddress
dalam respons cocok denganregionCode
, kode negara akan dihapus dariformattedAddress
. Parameter ini tidak berpengaruh padaadrFormatAddress
, yang selalu menyertakan nama negara, atau padashortFormattedAddress
, yang tidak pernah menyertakannya.Sebagian besar kode CLDR 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 "Inggris Raya dan Irlandia Utara"). Parameter ini dapat memengaruhi hasil berdasarkan hukum yang berlaku.
Contoh Nearby Search (Baru)
Menemukan tempat dari jenis tertentu
Contoh berikut menunjukkan permintaan Nearby Search (Baru) untuk nama tampilan semua restoran dalam radius 500 meter, yang ditentukan oleh circle
:
curl -X POST -d '{ "includedTypes": ["restaurant"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965}, "radius": 500.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName" \ https://places.googleapis.com/v1/places:searchNearby
Perhatikan bahwa header X-Goog-FieldMask
menentukan bahwa respons
berisi kolom data berikut: places.displayName
.
Respons
kemudian berbentuk:
{ "places": [ { "displayName": { "text": "La Mar Cocina Peruana", "languageCode": "en" } }, { "displayName": { "text": "Kokkari Estiatorio", "languageCode": "en" } }, { "displayName": { "text": "Harborview Restaurant & Bar", "languageCode": "en" } }, ... }
Tambahkan lebih banyak jenis data ke mask kolom untuk menampilkan informasi tambahan.
Misalnya, tambahkan places.formattedAddress,places.types,places.websiteUri
untuk menyertakan alamat, jenis, dan alamat web restoran dalam respons:
curl -X POST -d '{ "includedTypes": ["restaurant"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965}, "radius": 500.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName,places.formattedAddress,places.types,places.websiteUri" \ https://places.googleapis.com/v1/places:searchNearby
response sekarang dalam bentuk:
{ "places": [ { "types": [ "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment" ], "formattedAddress": "PIER 1 1/2 The Embarcadero N, San Francisco, CA 94105, USA", "websiteUri": "http://lamarsf.com/", "displayName": { "text": "La Mar Cocina Peruana", "languageCode": "en" } }, { "types": [ "greek_restaurant", "meal_takeaway", "restaurant", "food", "point_of_interest", "establishment" ], "formattedAddress": "200 Jackson St, San Francisco, CA 94111, USA", "websiteUri": "https://kokkari.com/", "displayName": { "text": "Kokkari Estiatorio", "languageCode": "en" } }, ... }
Menemukan berbagai jenis tempat
Contoh berikut menampilkan permintaan Nearby Search (Baru) untuk
nama tampilan semua minimarket dan toko minuman keras dalam radius 1.000 meter dari
circle
yang ditentukan:
curl -X POST -d '{ "includedTypes": ["liquor_store", "convenience_store"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 1000.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName,places.primaryType,places.types" \ https://places.googleapis.com/v1/places:searchNearbyContoh ini menambahkan
places.primaryType
dan places.types
ke mask kolom
sehingga responsnya menyertakan informasi jenis tentang setiap tempat, sehingga mempermudah pemilihan tempat
yang sesuai dari hasil.
Mengecualikan jenis tempat dari penelusuran
Contoh berikut menampilkan permintaan Nearby Search (Baru) untuk semua tempat dengan jenis "school"
, tidak termasuk semua tempat berjenis "primary_school"
, yang memberi peringkat hasil menurut jarak:
curl -X POST -d '{ "includedTypes": ["school"], "excludedTypes": ["primary_school"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 1000.0 } }, "rankPreference": "DISTANCE" }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName" \ https://places.googleapis.com/v1/places:searchNearby
Menelusuri semua tempat di dekat suatu area, memberi peringkat berdasarkan jarak
Contoh berikut menampilkan permintaan Nearby Search (Baru) untuk tempat di dekat titik di pusat kota San Francisco. Dalam contoh ini, Anda menyertakan parameter rankPreference
untuk mengurutkan hasil menurut jarak:
curl -X POST -d '{ "maxResultCount": 10, "rankPreference": "DISTANCE", "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 1000.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName" \ https://places.googleapis.com/v1/places:searchNearby
Cobalah!
API Explorer memungkinkan Anda membuat permintaan contoh sehingga Anda dapat memahami opsi API dan API.
- Pilih ikon API, , di sisi kanan halaman.
- Jika perlu, luaskan Show standardparameters dan tetapkan
parameter
fields
ke mask kolom. - Jika perlu, edit Isi permintaan.
- Pilih tombol Execute. Di jendela pop-up, pilih akun yang ingin Anda gunakan untuk membuat permintaan.
Di panel API Explorer, pilih ikon luaskan, , untuk meluaskan jendela API Explorer.