Text Search (Baru) menampilkan informasi tentang serangkaian tempat berdasarkan suatu string — misalnya "pizza di Bandung" atau "toko sepatu di dekat Solo" atau "Jl. Rajawali 3". Layanan ini merespons dengan daftar tempat yang cocok dengan string teks dan bias lokasi yang telah ditetapkan.
Layanan ini sangat berguna untuk membuat kueri alamat ambigu dalam sistem otomatis, dan komponen non-alamat pada string yang mungkin cocok dengan bisnis serta alamat. Contoh kueri alamat ambigu adalah alamat yang tidak diformat dengan baik atau permintaan yang menyertakan komponen non-alamat seperti nama bisnis. Permintaan seperti dua contoh pertama mungkin menampilkan hasil nol kecuali jika lokasi — seperti wilayah, pembatasan lokasi, atau bias lokasi — ditetapkan.
Text Search (Baru) mirip dengan Nearby Search (Baru). Perbedaan utama antara keduanya adalah Text Search (Baru) memungkinkan Anda menentukan string penelusuran arbitrer, sedangkan Nearby Search (Baru) memerlukan area tertentu untuk melakukan penelusuran.
"10 High Street, UK" atau "123 Main Street, US" | Beberapa "High Street" di Inggris Raya; beberapa "Main Street" di Amerika Serikat. Kueri tidak menampilkan hasil yang diinginkan kecuali jika batasan lokasi ditetapkan. |
"ChainRestaurant New York" | Beberapa lokasi "ChainRestaurant" di New York; tidak ada alamat jalan atau bahkan nama jalan. |
"10 High Street, Escher UK" atau "123 Main Street, Pleasanton US" | Hanya satu "High Street" di kota Escher, Inggris Raya; hanya satu "Main Street" di kota Pleasanton, California, AS. |
"UniqueRestaurantName New York" | Hanya ada satu tempat dengan nama ini di New York; tidak perlu alamat jalan untuk membedakannya. |
"restoran pizza di Jakarta" | Kueri ini berisi batasan lokasinya, dan "restoran pizza" adalah jenis tempat yang ditentukan dengan baik. Fungsi ini menampilkan beberapa hasil. |
"+1 514-670-8700" | Kueri ini berisi nomor telepon. Fungsi ini menampilkan beberapa hasil untuk tempat yang terkait dengan nomor telepon tersebut. |
Permintaan Text Search
Permintaan Text Search memiliki format:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Define latitude and longitude coordinates of the search area. LatLng southWest = new LatLng(37.38816277477739, -122.08813770258874); LatLng northEast = new LatLng(37.39580487866437, -122.07702325966572); // Use the builder to create a SearchByTextRequest object. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationRestriction(RectangularBounds.newInstance(southWest, northEast)).build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
Dalam contoh ini, Anda:
Tetapkan daftar kolom agar hanya menyertakan
Place.Field.ID
danPlace.Field.DISPLAY_NAME
. Artinya, objekPlace
dalam respons yang mewakili setiap tempat yang cocok hanya berisi dua kolom tersebut.Gunakan
SearchByTextRequest.Builder
untuk membuat objekSearchByTextRequest
yang menentukan penelusuran.Tetapkan string kueri teks ke "Spicy Vegetarian Food".
Tetapkan jumlah maksimum tempat hasil ke 10. Nilai default dan maksimumnya adalah 20.
Batasi area penelusuran ke persegi panjang yang ditentukan oleh koordinat lintang dan bujur. Tidak ada kecocokan di luar area ini yang ditampilkan.
Tambahkan
OnSuccessListener
dan dapatkan tempat yang cocok dari objekSearchByTextResponse
.
Respons Text Search
Class
SearchByTextResponse
mewakili respons dari permintaan penelusuran. Objek SearchByTextResponse
berisi:
Daftar objek
Place
yang mewakili semua tempat yang cocok, dengan satu objekPlace
per tempat yang cocok.Setiap objek
Place
hanya berisi kolom yang ditentukan oleh daftar kolom yang diteruskan dalam permintaan.
Misalnya, dalam permintaan, Anda menentukan daftar kolom sebagai:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
Daftar kolom ini berarti setiap objek Place
dalam respons hanya berisi
ID tempat dan nama setiap tempat yang cocok. Kemudian, Anda dapat menggunakan metode Place.getId()
dan Place.getName()
untuk mengakses kolom ini di setiap objek Place
.
Untuk contoh lain tentang cara mengakses data dalam objek Place
, lihat Mengakses kolom data objek Tempat
Parameter wajib
Parameter yang diperlukan untuk
SearchByTextRequest
adalah:
-
Daftar kolom
Menentukan kolom data tempat yang akan ditampilkan. Teruskan daftar nilai
Place.Field
yang menentukan kolom data yang akan ditampilkan. Tidak ada daftar default kolom yang ditampilkan dalam respons.Daftar kolom adalah praktik desain yang baik untuk memastikan Anda tidak meminta data yang tidak diperlukan. Cara ini akan membantu Anda menghindari waktu pemrosesan dan biaya penagihan yang tidak perlu.
Tentukan satu atau beberapa kolom berikut:
Kolom berikut memicu SKU Text Search (ID Only):
Place.Field.DISPLAY_NAME
,Place.Field.ID
,Place.Field.RESOURCE_NAME
Kolom berikut memicu SKU Text Search (Basic):
Place.Field.ACCESSIBILITY_OPTIONS
,Place.Field.ADDRESS_COMPONENTS
,Place.Field.ADR_FORMAT_ADDRESS
,Place.Field.BUSINESS_STATUS
,Place.Field.FORMATTED_ADDRESS
,Place.Field.GOOGLE_MAPS_URI
,Place.Field.ICON_BACKGROUND_COLOR
,Place.Field.ICON_MASK_URL
,Place.Field.LOCATION
,Place.Field.PHOTO_METADATAS
,Place.Field.PLUS_CODE
,Place.Field.PRIMARY_TYPE
,Place.Field.PRIMARY_TYPE_DISPLAY_NAME
,Place.Field.SHORT_FORMATTED_ADDRESS
,Place.Field.SUB_DESTINATIONS
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
Kolom berikut memicu SKU Text Search (Advanced):
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER
,Place.Field.NATIONAL_PHONE_NUMBER
Place.Field.OPENING_HOURS
,Place.Field.PRICE_LEVEL
,Place.Field.RATING
,Place.Field.SECONDARY_OPENING_HOURS
,Place.Field.USER_RATING_COUNT
Place.Field.WEBSITE_URI
Kolom berikut memicu SKU Text Search (Preferred):
Place.Field.ALLOWS_DOGS
,Place.Field.CURBSIDE_PICKUP
,Place.Field.DELIVERY
,Place.Field.DINE_IN
,Place.Field.EDITORIAL_SUMMARY
,Place.Field.EV_CHARGE_OPTIONS
,Place.Field.FUEL_OPTIONS
,Place.Field.GOOD_FOR_CHILDREN
,Place.Field.GOOD_FOR_GROUPS
,Place.Field.GOOD_FOR_WATCHING_SPORTS
,Place.Field.LIVE_MUSIC
,Place.Field.MENU_FOR_CHILDREN
,Place.Field.OUTDOOR_SEATING
,Place.Field.PARKING_OPTIONS
,Place.Field.PAYMENT_OPTIONS
,Place.Field.RESERVABLE
,Place.Field.RESTROOM
,Place.Field.REVIEWS
,Place.Field.SERVES_BEER
,Place.Field.SERVES_BREAKFAST
,Place.Field.SERVES_BRUNCH
,Place.Field.SERVES_COCKTAILS
,Place.Field.SERVES_COFFEE
,Place.Field.SERVES_DESSERT
,Place.Field.SERVES_DINNER
,Place.Field.SERVES_LUNCH
,Place.Field.SERVES_VEGETARIAN_FOOD
,Place.Field.SERVES_WINE
,Place.Field.TAKEOUT
Untuk menetapkan parameter daftar kolom, panggil metode
setPlaceFields()
saat mem-build objekSearchByTextRequest
. -
Kueri teks
String teks yang digunakan untuk menelusuri, misalnya: "restaurant", "123 Main Street", atau "best place to visit in San Francisco". API ini menampilkan kandidat hasil berdasarkan string ini dan mengurutkan hasil berdasarkan relevansi yang terlihat.
Untuk menetapkan parameter kueri teks, panggil metode
setTextQuery()
saat mem-build objekSearchByTextRequest
.
Parameter opsional
Gunakan objek
SearchByTextRequest
untuk menentukan parameter opsional untuk permintaan Anda.
Jenis yang disertakan
Membatasi hasil ke tempat yang cocok dengan jenis yang ditentukan oleh Tabel A. Hanya satu jenis yang dapat ditentukan. Contoh:
setIncludedType("bar")
setIncludedType("pharmacy")
Untuk menetapkan parameter jenis yang disertakan, panggil metode
setIncludedType()
saat mem-build objekSearchByTextRequest
.Bias lokasi
Menentukan area yang akan ditelusuri. Lokasi ini berfungsi sebagai bias yang berarti bahwa hasil di sekitar lokasi yang ditentukan dapat ditampilkan, termasuk hasil di luar area yang ditentukan.
Anda dapat menentukan pembatasan lokasi atau bias lokasi, tetapi tidak keduanya. Pembatasan lokasi menentukan wilayah tempat hasil harus berada, dan bias lokasi menentukan wilayah tempat hasil kemungkinan akan berada atau berada di dekatnya. Perhatikan bahwa saat menggunakan bias lokasi, hasil masih dapat berada di luar area yang ditentukan.
Tentukan wilayah sebagai Viewport persegi panjang atau sebagai lingkaran.
Lingkaran ditentukan oleh titik tengah dan radius dalam meter. Radius harus antara 0,0 dan 50000,0, inklusif. Contoh:
// Define latitude and longitude coordinates of the center of the search area. LatLng searchCenter = new LatLng(37.38816277477739, -122.08813770258874); // Use the builder to create a SearchByTextRequest object. // Set the radius of the search area to 500.0 meters. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationBias(CircularBounds.newInstance(searchCenter, 500.0)).build();
Persegi panjang adalah area pandang lintang-bujur, yang direpresentasikan sebagai dua titik rendah dan tinggi yang berlawanan secara diagonal. Titik terendah menandai sudut barat daya persegi panjang, dan titik tertinggi mewakili sudut timur laut persegi panjang.
Area pandang dianggap sebagai wilayah tertutup, yang berarti 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 pandang terdiri dari satu titik tersebut. - Jika
low.longitude
>high.longitude
, rentang bujur akan terbalik (area pandang melintasi garis bujur 180 derajat). - Jika
low.longitude
= -180 derajat danhigh.longitude
= 180 derajat, area pandang akan menyertakan semua bujur. - Jika
low.longitude
= 180 derajat danhigh.longitude
= -180 derajat, rentang bujur kosong. - Jika
low.latitude
>high.latitude
, rentang lintang akan kosong.
Nilai rendah dan tinggi harus diisi, dan kotak yang direpresentasikan tidak boleh kosong. Area pandang kosong akan menyebabkan error.
Misalnya, untuk area pandang persegi panjang, lihat Permintaan Penelusuran Teks.
Untuk menetapkan parameter bias lokasi, panggil metode
setLocationBias()
saat mem-build objekSearchByTextRequest
.- Jika
Pembatasan lokasi
Menentukan area yang akan ditelusuri. Hasil di luar area yang ditentukan tidak akan ditampilkan. Tentukan wilayah sebagai Viewport persegi panjang. Lihat deskripsi Bias lokasi untuk mengetahui informasi tentang cara menentukan Area Tampilan.
Anda dapat menentukan pembatasan lokasi atau bias lokasi, tetapi tidak keduanya. Anggap pembatasan lokasi sebagai menentukan wilayah tempat hasil harus berada, dan bias lokasi sebagai menentukan wilayah tempat hasil harus berada di dekatnya, tetapi dapat berada di luar area.
Untuk menetapkan parameter pembatasan lokasi, panggil metode
setLocationRestriction()
saat mem-build objekSearchByTextRequest
.-
Jumlah hasil maksimum
Menentukan jumlah maksimum hasil tempat yang akan ditampilkan. Harus antara 1 dan 20 (default) inklusif.
Untuk menetapkan parameter jumlah hasil maksimum, panggil metode
setMaxResultCount()
saat mem-build objekSearchByTextRequest
. Nilai minimum
Membatasi hasil hanya untuk bisnis yang rating pengguna rata-ratanya lebih besar dari atau sama dengan batas ini. Nilai harus antara 0,0 dan 5,0 (inklusif) dengan inkremen 0,5. Misalnya: 0, 0,5, 1,0, ... , 5,0 inklusif. Nilai dibulatkan ke atas ke 0,5 terdekat. Misalnya, nilai 0,6 akan menghapus semua hasil dengan rating kurang dari 1,0.
Untuk menetapkan parameter rating minimum, panggil metode
setMinRating()
saat mem-build objekSearchByTextRequest
.Buka sekarang
Jika
true
, hanya tampilkan tempat yang sedang buka pada saat kueri dikirim. Jikafalse
, tampilkan semua bisnis terlepas dari status buka. Tempat yang tidak menetapkan jam buka dalam database Google Places akan ditampilkan jika Anda menetapkan parameter ini kefalse
.Untuk menetapkan parameter buka sekarang, panggil metode
setOpenNow()
saat mem-build objekSearchByTextRequest
.-
Tingkat harga
Secara default, hasil mencakup tempat yang menyediakan layanan di semua tingkat harga. Untuk membatasi hasil agar hanya menyertakan tempat pada tingkat harga tertentu, Anda dapat meneruskan daftar nilai bilangan bulat yang sesuai dengan tingkat harga untuk tempat yang ingin ditampilkan:
1
- Tempat menyediakan layanan yang murah.2
- Tempat ini menyediakan layanan dengan harga sedang.3
- Tempat menyediakan layanan yang mahal.4
- Tempat menyediakan layanan yang sangat mahal.
Untuk menetapkan parameter tingkat harga, panggil metode
setPriceLevels()
saat mem-build objekSearchByTextRequest
. Preferensi peringkat
Menentukan cara hasil diberi peringkat dalam respons berdasarkan jenis kueri:
- Untuk kueri kategori seperti "Restoran di New York City",
SearchByTextRequest.RankPreference.RELEVANCE
(peringkat hasil berdasarkan relevansi penelusuran) adalah default. Anda dapat menetapkan preferensi peringkat keSearchByTextRequest.RankPreference.RELEVANCE
atauSearchByTextRequest.RankPreference.DISTANCE
(mengurutkan hasil menurut jarak). - Untuk kueri non-kategoris seperti "Mountain View, CA", sebaiknya Anda membiarkan parameter preferensi peringkat tidak ditetapkan.
Untuk menetapkan parameter preferensi peringkat, panggil metode
setRankPreference()
saat mem-build objekSearchByTextRequest
.- Untuk kueri kategori seperti "Restoran di New York City",
Kode wilayah
Kode wilayah yang digunakan untuk memformat respons, yang ditentukan sebagai nilai kode CLDR dua karakter. Parameter ini juga dapat memiliki efek bias pada hasil penelusuran. Tidak ada nilai default.
Jika nama negara kolom alamat dalam respons cocok dengan kode wilayah, kode negara akan dihilangkan dari alamat.
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 "The United Kingdom of Great Britain and Northern Ireland"). Parameter ini dapat memengaruhi hasil berdasarkan hukum yang berlaku.
Untuk menetapkan parameter kode wilayah, panggil metode
setRegionCode()
saat mem-build objekSearchByTextRequest
.Pemfilteran jenis ketat
Digunakan dengan parameter jenis penyertaan. Jika ditetapkan ke
true
, hanya tempat yang cocok dengan jenis yang ditentukan oleh jenis yang disertakan yang akan ditampilkan. Jikafalse
, default, respons dapat berisi tempat yang tidak cocok dengan jenis yang ditentukan.Untuk menetapkan parameter pemfilteran jenis yang ketat, panggil metode
setStrictTypeFiltering()
saat mem-build objekSearchByTextRequest
.