Metin Arama (Yeni), bir dizi bir dizeye göre yer alır. Örneğin, "İstanbul'da pizza" veya "ayakkabı mağazaları Ottawa yakınında" veya "Ana Cadde No: 123". Hizmet, bir yer listesiyle yanıt verir metin dizesiyle ve ayarlanan konum yanlılığıyla eşleşir.
Bu hizmet özellikle, muğlak adresler sorguları dizenin adres olmayan bileşenleri, işletmelerle aynı zamanda adres. Belirsiz adres sorgusu örnekleri, kötü biçimlendirilmiş adreslerdir veya işletme adları gibi adres dışı bileşenleri içeren istekler. İstek sayısı Örneğin ilk iki örnek, bir konum şöyle değilse sıfır sonuç döndürebilir: (ör. bölge, konum kısıtlaması veya konum ön yargısı) ayarlanmış olmalıdır.
Metin Arama (Yeni), Yakındaki Arama'ya benzer (Yeni). Ana ikisi arasındaki fark Metin Arama (Yeni) rastgele bir arama dizesi belirtmenize olanak tanırken, Yakındaki Arama (Yeni) için bir belirli bir alan adı içinde arama yapabilirsiniz.
"10 High Street, Birleşik Krallık" veya "Ana Cadde No: 123, Türkiye" | Birleşik Krallık'ta birden fazla "High Street"s; ABD'de birden fazla "Ana Cadde" var. Konum kısıtlaması geçerli değilse sorgu, istenen sonuçları döndürmüyor. ayarlandı. |
"Restoran Zincir Restoran İstanbul" | Birden çok "ChainRestaurant" New York'taki konumlar; açık adres yok veya Hatta sokak adı bile olabilir. |
"İstiklal Caddesi 10, İstanbul" veya "İstiklal Caddesi No:123, İstanbul" | Yalnızca bir tane "Ana Cadde" İngiltere'nin Escher şehrinde; sadece bir tane "Ana Cadde" bir e-posta alırsınız. |
"Benzersiz RestoranAdı İstanbul" | New York'ta bu ada sahip yalnızca bir işletme; açık adres yok gerekli olduğu anlamına gelir. |
"İstanbul'daki pizza restoranları" | Bu sorgu, konum kısıtlaması ve "pizza restoranları" ifadesini içeriyor : iyi tanımlanmış bir yer türü olabilir. Birden fazla sonuç döndürür. |
"+1 514-670-8700" | Bu sorgu bir telefon numarası içeriyor. Şunun için birden fazla sonuç döndürür: yer alır. |
Metin Arama istekleri
Metin Arama isteği şu biçimde olur:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.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(); });
Bu örnekte:
Alan listesini yalnızca
Place.Field.ID
vePlace.Field.NAME
içerecek şekilde ayarlayın. Bu, yanıtta yer alan ve her bir eşleşmeyi temsil edenPlace
nesne anlamına gelir yer yalnızca bu iki alanı içermelidir.SearchByTextRequest.Builder
kullanın oluşturmak içinSearchByTextRequest
nesnesini ifade eder.Metin sorgu dizesini "Acı Vejetaryen Yemek" olarak ayarlayın.
Maksimum sonuç sayısı sayısını 10 olarak ayarlayın. Varsayılan ve üst sınır 20'dir.
Arama alanını enlem ve boylam değerleriyle tanımlanan dikdörtgenle sınırlayın boylam koordinatları. Bu alanın dışındaki eşleşmeler döndürülmez.
Bir
OnSuccessListener
ekleyin ve eşleşen yerleri şuradan alın:SearchByTextResponse
nesnesini tanımlayın.
Metin Arama yanıtları
İlgili içeriği oluşturmak için kullanılan
SearchByTextResponse
class , bir arama isteğinden gelen yanıtı temsil eder. SearchByTextResponse
nesne şunu içerir:
Eşleşen tüm yerleri temsil eden
Place
nesne listesi ve bir tane Eşleşen yer başınaPlace
nesne.Her
Place
nesnesi yalnızca alan listesinde tanımlanan alanları içerir emin olun.
Örneğin, istekte bir alan listesini şu şekilde tanımladınız:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
Bu alan listesi, yanıttaki her Place
nesnesinin yalnızca
eşleşen her yerin yer kimliğini ve adını girin. Ardından, Place.getId()
ve her Place
nesnesinde bu alanlara erişmek için Place.getName()
yöntem.
Bir Place
nesnesindeki verilere erişme ile ilgili daha fazla örnek için Yere Erişme konusuna bakın
nesne veri alanları
Gerekli parametreler
Şunun için gerekli parametreler:
SearchByTextRequest
şunlardır:
-
Alan listesi
Döndürülecek yer verisi alanlarını belirtin. Şunlardan oluşan bir listeyi iletin:
Place.Field
değer, döndürülecek veri alanlarını belirten Varsayılan bir döndüren alan adları belirleyebilirsiniz.Alan listeleri, bir istek gönderen kullanıcı için Böylece, gereksiz işlem süresini ve faturalandırma ücretleri.
Aşağıdaki alanlardan birini veya daha fazlasını belirtin:
Aşağıdaki alanlar Metin Arama (Yalnızca Kimlik) SKU'sunu tetikler:
Place.Field.ID
,Place.Field.NAME
Aşağıdaki alanlar Metin Arama (Temel) SKU'sunu tetikler:
Place.Field.ADDRESS_COMPONENTS
,Place.Field.BUSINESS_STATUS
,Place.Field.ADDRESS
,Place.Field.ICON_BACKGROUND_COLOR
,Place.Field.ICON_URL
,Place.Field.LAT_LNG
,Place.Field.PHOTO_METADATAS
,Place.Field.PLUS_CODE
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
,Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
Aşağıdaki alanlar Metin Arama (Gelişmiş) SKU'sunu tetikler:
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.SECONDARY_OPENING_HOURS
,Place.Field.PHONE_NUMBER
,Place.Field.PRICE_LEVEL
,Place.Field.RATING
,Place.Field.OPENING_HOURS
,Place.Field.USER_RATINGS_TOTAL
,Place.Field.WEBSITE_URI
Aşağıdaki alanlar Metin Arama (Tercih Edilen) SKU'sunu tetikler:
Place.Field.CURBSIDE_PICKUP
,Place.Field.DELIVERY
,Place.Field.DINE_IN
,Place.Field.EDITORIAL_SUMMARY
,Place.Field.RESERVABLE
,Place.Field.REVIEWS
,Place.Field.SERVES_BEER
,Place.Field.SERVES_BREAKFAST
,Place.Field.SERVES_BRUNCH
,Place.Field.SERVES_DINNER
,Place.Field.SERVES_LUNCH
,Place.Field.SERVES_VEGETARIAN_FOOD
,Place.Field.SERVES_WINE
,Place.Field.TAKEOUT
Alan listesi parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetPlaceFields()
yöntemini çağırın. -
Metin sorgusu
Aranacak metin dizesi, örneğin: "restoran", "İstiklal Caddesi No:123" ya da "İstanbul'da ziyaret edilecek en iyi yer". API bu dizeye dayalı aday eşleşmeleri döndürür ve sonuçları şunlara göre sıralar: ilişkili olarak değerlendirilir.
Metin sorgusu parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetTextQuery()
yöntemini çağırın.
İsteğe bağlı parametreler
Şunu kullanın:
SearchByTextRequest
nesnesini tanımlayın.
Dahil edilen tür
Sonuçları, tarafından tanımlanan belirtilen türle eşleşen yerlerle kısıtlar Tablo A. Yalnızca bir tür belirtilebilir. Örneğin:
setIncludedType("bar")
setIncludedType("pharmacy")
Dahil edilen tür parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetIncludedType()
yöntemini çağırın.Konum ön yargısı
Aranacak alanı belirtir. Bu konum, belirli bir belirtilen konumun etrafındaki sonuçlar, şunun sonuçları da dahil olmak üzere döndürülebilir: belirtilen alanın dışına çıktı.
Konum kısıtlaması veya konum sapması ancak her ikisi birden değil. Konum kısıtlamasını, kullanıcının olması gereken bölge ve konum sapması sonuçların yakınında olması gereken ancak dışında olabilecek bölgeyi belirtmek inceleyeceğiz.
Bölgeyi dikdörtgen görünüm veya daire olarak belirtin.
Bir daire, merkez noktası ve metre cinsinden yarıçapla tanımlanır. Yarıçap 0,0 ile 50000,0 (her ikisi de dahil) arasında olmalıdır. Örneğin:
// 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();
Dikdörtgen, iki şekilde gösterilen enlem-boylam görünümüdür alt ve yüksek noktaların karşısında çapraz olarak çapraz çizgi bulunur. En düşük nokta güneybatıyı işaret eder dikdörtgenin köşesi, yüksek nokta ise kuzeydoğuyu köşesine dokunun.
Görüntü alanı, yani kendi sınırını içerir. Enlem sınırları -90 ile 90 derece (her ikisi de dahil) arasında olmalı ve boylam sınırları -180 ile 180 derece (her iki değer dahil) arasında olmalıdır:
low
=high
olursa görüntü alanı şunları içerir: tek bir noktaya parmak bastınız.- Eğer
low.longitude
>high.longitude
, boylam aralığı ters çevrilmiş (görüntü alanı 180 dereceyi geçiyor boylam çizgisi) içerir. low.longitude
= -180 derece vehigh.longitude
= 180 derece, görüntü alanı tüm boylamlar.low.longitude
= 180 derece vehigh.longitude
= -180 derece, boylam aralığı boştur.- Eğer
low.latitude
>high.latitude
, enlem aralığı boş.
Hem düşük hem de yüksek alanları doldurulmalı, gösterilen kutu kullanılamaz boştur. Boş görüntü alanı hatayla sonuçlanır.
Örneğin, dikdörtgen görüntü alanı için Metin Arama istekleri.
Konum yanlılığı parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetLocationBias()
yöntemini çağırın.
Konum kısıtlaması
Aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar geri döndü. Bölgeyi dikdörtgen görünüm alanı olarak belirtin. Açıklamayı göster Konum yanlılığı yüzdesi bölümünü tanımlama hakkında bilgi edinin.
Konum kısıtlaması veya konum sapması ancak her ikisi birden değil. Konum kısıtlamasını, kullanıcının olması gereken bölge ve konum sapması sonuçların yakınında olması gereken ancak dışında olabilecek bölgeyi belirtmek inceleyeceğiz.
Konum kısıtlaması parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetLocationRestriction()
yöntemini çağırın.-
Maksimum sonuç sayısı
Döndürülecek maksimum yer sonucu sayısını belirtir. Şu değerler arasında olmalıdır: 1 ve 20 (varsayılan) değerleri dahil.
Maksimum sonuç sayısı parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetMaxResultCount()
yöntemini çağırın. Minimum kullanıcı oyu
Sonuçları, yalnızca ortalama kullanıcı puanı şundan yüksek olanlarla kısıtlar: veya eşit olabilir. Değerler, 0,0 ile 5,0 (dahil) arasında olmalıdır 0,5'lik artışlar olacaktır. Örneğin: 0, 0,5, 1,0, ... , 5,0 dahil bu sayılar. Değerler 0,5'e yuvarlanır. Örneğin, 0,6 değeri, sonuç 1,0'ın altındadır.
Minimum derecelendirme parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetMinRating()
yöntemini çağırın.Şu anda açık
true
ise yalnızca faaliyette olan yerleri döndürün sorgu gönderilir.false
ise tüm işletmeleri döndürün açık durumundan bağımsız olarak sağlayın. Google Rehber veritabanında çalışma saatleri belirtilmeyen yerler bu parametreyifalse
olarak ayarlarsanız döndürülür."Şimdi aç" parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetOpenNow()
yöntemini çağırın.-
Fiyat seviyeleri
Varsayılan olarak, sonuçlar tüm fiyat düzeylerinde hizmet sunan yerleri içerir. Kısıtlamak için sadece belirli fiyat düzeylerindeki yerleri eklemek istiyorsanız, Döndürmek istediğiniz yerlerin fiyat seviyelerine karşılık gelen tam sayı değerleri:
1
- Yer, pahalı olmayan hizmetler sunuyor.2
- Yer, orta fiyatlı hizmetler sunuyor.3
- Yer, pahalı hizmetler sunuyor.4
- Mekan çok pahalı hizmetler sunuyor.
Fiyat düzeyleri parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetPriceLevels()
yöntemini çağırın. Sıralama tercihi
Sonuçların yanıtta türüne göre nasıl sıralandığını belirtir. sorgu:
- "İstanbul'daki Restoranlar" gibi bir kategorik sorgu için
SearchByTextRequest.RankPreference.RELEVANCE
(sonuçları arama alaka düzeyine göre sıralama) varsayılan değerdir. Sıralama tercihiniSearchByTextRequest.RankPreference.RELEVANCE
veyaSearchByTextRequest.RankPreference.DISTANCE
(sonuçları mesafeye göre sırala). - "Mountain View, CA" gibi kategorik olmayan bir sorgu için sıralama tercihi parametresini ayarlamadan bırakmanız da mümkündür.
Sıralama tercihi parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetRankPreference()
yöntemini çağırın.- "İstanbul'daki Restoranlar" gibi bir kategorik sorgu için
Bölge kodu
Yanıtı biçimlendirmek için kullanılan bölge kodu, CLDR kodu değerini girin. Bu parametrenin yanlılık etkisi de olabilir daha fazla bilgi edineceksiniz. Varsayılan bir değer yok.
Yanıttaki adres alanının ülke adı bölge kodundan ülke kodu atlanır.
Çoğu CLDR kodu ISO 3166-1 kodlarıyla aynıdır. bazı önemli istisnalarla birlikte. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu "gb" ise (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı"). Parametre, geçerli yasalara göre sonuçları etkileyebilir.
Bölge kodu parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetRegionCode()
yöntemini çağırın.Katı tür filtreleme
Dahil etme türü parametresiyle kullanılır. Şuna ayarlandığında
true
, yalnızca içerir.false
durumunda, yanıt varsayılan olarak belirtilen türlerle eşleşmiyor.Katı tür filtreleme parametresini ayarlamak için,
SearchByTextRequest
nesnesini oluştururkensetStrictTypeFiltering()
yöntemini çağırın.