Metin Arama, bir dizeye göre bir dizi yer hakkında bilgi döndürür. Örneğin, "İstanbul'da pizza", "Taksim yakınındaki ayakkabı mağazaları" veya "Ana Cadde No: 123". Hizmet, metin dizesiyle eşleşen yerlerin ve ayarlanan bir konum önyargısının bir listesiyle yanıt verir.
Hizmet, özellikle otomatik bir sistemde belirsiz adres sorguları oluşturmak için yararlıdır ve dizenin adres olmayan bileşenleri, işletmelerle ve adreslerle eşleşebilir. Belirsiz adres sorgularına örnek olarak kötü biçimlendirilmiş adresler veya işletme adları gibi adres olmayan bileşenler içeren istekler verilebilir. Bölge, konum kısıtlaması veya konum ön yargısı gibi bir konum ayarlanmadıkça ilk iki örnek gibi istekler sıfır sonuç döndürebilir.
"Taksim Mahallesi, Hasbahçe Sokak, Üsküdar, 34110" | İngiltere'de birden fazla "High Street", ABD'de birden fazla "Ana Cadde". Sorgu, konum kısıtlaması ayarlanmadıkça istenen sonuçları döndürmüyor. |
"ZincirRestoran İstanbul" | New York'ta birden fazla "ChainRestaurant" konumu; açık adres, hatta sokak adı yok. |
"10. Cadde, Escher UK" veya "123 Main Street, Pleasanton ABD" | İngiltere'nin Escher şehrinde yalnızca bir "High Street"; ABD'nin Pleasanton CA şehrinde yalnızca bir "Ana Cadde". |
"BenzersizRestoranAdi İstanbul" | New York'ta bu ada sahip yalnızca bir işletme; ayırt etmek için açık adres gerekmez. |
"İstanbul'daki pizza restoranları" | Bu sorgu, konum kısıtlamasını içeriyor ve "pizza restoranları" iyi tanımlanmış bir yer türüdür. Birden çok sonuç döndürür. |
"+1 514-670-8700" | Bu sorgu bir telefon numarası içeriyor. Bu telefon numarasıyla ilişkilendirilmiş yerler için birden fazla sonuç döndürür. |
Metin Arama istekleri
Metin Arama isteği şu biçimdedir:
// 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
değerlerini içerecek şekilde ayarlayın. Bu, yanıttaki her bir eşleşen yeri temsil edenPlace
nesnelerinin yalnızca bu iki alanı içerdiği anlamına gelir.Aramayı tanımlayan bir
SearchByTextRequest
nesnesi oluşturmak içinSearchByTextRequest.Builder
aracını kullanın.Metin sorgusu dizesini "Acılı Vejetaryen Yemekleri" olarak ayarlayın.
Maksimum sonuç basamak sayısını 10 olarak ayarlayın. Varsayılan ve maksimum değer 20'dir.
Arama alanını, enlem ve boylam koordinatlarıyla tanımlanan dikdörtgenle sınırlandırın. Bu alanın dışında eşleşme döndürülmez.
Bir
OnSuccessListener
ekleyin veSearchByTextResponse
nesnesinden eşleşen yerleri alın.
Metin Arama yanıtları
SearchByTextResponse
sınıfı, arama isteğinden gelen yanıtı temsil eder. Bir SearchByTextResponse
nesnesi şunları içerir:
Eşleşen yer başına bir
Place
nesne olacak şekilde, eşleşen tüm yerleri temsil edenPlace
nesnelerinin listesi.Her
Place
nesnesi yalnızca istekte geçirilen alan listesi tarafından tanımlanan alanları içerir.
Ö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ı içerdiği anlamına gelir. Daha sonra, her bir Place
nesnesinde bu alanlara erişmek için Place.getId()
ve Place.getName()
yöntemlerini kullanabilirsiniz.
Place
nesnesindeki verilere erişmeyle ilgili daha fazla örnek için Yer nesnesi veri alanlarına erişme konusuna bakın.
Gerekli parametreler
-
Alan listesi
Döndürülecek yer verisi alanlarını belirtin. Döndürülecek veri alanlarını belirten bir
Place.Field
değerleri listesi iletin. Yanıtta döndürülen alanların varsayılan bir listesi yoktur.Alan listeleri, gereksiz veri isteğinde bulunmamanız için iyi bir tasarım uygulamasıdır. Böylece gereksiz işleme süresi ve faturalandırma ücretlerinin önüne geçilir.
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
-
Metin sorgusu
Aranacak metin dizesi. Örneğin: "restoran", "Ana Cadde No: 123" veya "İstanbul'da ziyaret edilecek en iyi yer". API, bu dizeye göre aday eşleşmeleri döndürür ve sonuçları algılanan alaka düzeylerine göre sıralar.
İsteğe bağlı parametreler
Bu parametreleri SearchByTextRequest.Builder
yöntemlerini kullanarak ayarlayın. Örneğin, maksimum sonuç sayısını ayarlamak için SearchByTextRequest.Builder.setMaxResultCount()
yöntemini çağırın.
Dahil edilen tür
Sonuçları, Tablo A tarafından tanımlanan belirtilen türle eşleşen yerlerle kısıtlar. Yalnızca bir tür belirtilebilir. Örneğin:
setIncludedType("bar")
setIncludedType("pharmacy")
Konum ön yargısı
Aranacak alanı belirtir. Bu konum bir ön yargı görevi görür. Yani belirtilen alanın dışındaki sonuçlar da dahil olmak üzere, belirtilen konumun çevresindeki sonuçların döndürülebileceği anlamına gelir.
Konum kısıtlaması veya konum ağırlıklandırmasını belirtebilirsiniz, ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi, konum ön yargısını ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtmek olarak düşünebilirsiniz.
Bölgeyi dikdörtgen Görünüm veya daire olarak belirtin.
Bir daire, merkez noktası ve yarıçapıyla metre cinsinden tanımlanır. Yarıçap 0,0 ile 50000,0 (her iki değer dahil) arasında olmalıdır. Varsayılan yarıçap 0,0'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, düşük ve yüksek noktaların çapraz olarak karşısında iki nokta olarak gösterilen enlem-boylam görüntü alanıdır. Alçak nokta, dikdörtgenin güneybatı köşesini, yüksek nokta ise dikdörtgenin kuzeydoğu köşesini temsil eder.
Görüntü alanı, kapalı bir bölge olarak kabul edilir, yani sınırlarını içerir. Enlem sınırları -90 ile 90 derece dahil, boylam sınırları ise -180 ile 180 derece (bu değerler dahil) arasında olmalıdır:
low
=high
ise görüntü alanı o tek noktadan oluşur.low.longitude
>high.longitude
ise boylam aralığı ters çevrilir (görüntü alanı, 180 derecelik boylam çizgisini geçer).low.longitude
= -180 derece vehigh.longitude
= 180 dereceyse görüntü alanı tüm boylamları içerir.low.longitude
= 180 derece vehigh.longitude
= -180 derece ise boylam aralığı boş olur.low.latitude
>high.latitude
ise enlem aralığı boştur.
Hem düşük hem de yüksek doldurulmalıdır ve temsil edilen kutu boş olamaz. Boş görüntü alanı hataya neden olur.
Örneğin, dikdörtgen bir görüntü alanı için Metin Arama istekleri'ne bakın.
Konum kısıtlaması
Aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Bölgeyi dikdörtgen Görünüm olarak belirtin. Görüntü Alanını tanımlamayla ilgili bilgi için Konum ağırlıklandırması açıklamasına bakın.
Konum kısıtlaması veya konum ağırlıklandırmasını belirtebilirsiniz, ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi, konum ön yargısını ise sonuçların yakınında olması gereken ancak alanın dışında olabilecek bölgeyi belirtmek olarak düşünebilirsiniz.
-
Maksimum sonuç sayısı
Döndürülecek maksimum yer sonucu sayısını belirtir. 1 ile 20 (varsayılan) arasında olmalıdır.
Minimum kullanıcı oyu
Sonuçları yalnızca ortalama kullanıcı puanı bu sınırdan yüksek veya bu sınıra eşit olanlarla kısıtlar. Değerler, 0,5'lik artışlarla 0,0 ile 5,0 (dahil) arasında olmalıdır. Örneğin: 0, 0,5, 1,0, ... , 5,0 dahil. Değerler en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri 1,0'dan küçük bir puana sahip tüm sonuçları eler.
Şu anda açık
true
ise yalnızca sorgu gönderildiği sırada açık olan yerleri döndürür.false
ise açık durumundan bağımsız olarak tüm işletmeleri iade edin. Bu parametreyifalse
olarak ayarlarsanız Google Rehber veritabanında çalışma saatleri belirtilmeyen yerler döndürülür.-
Fiyat seviyeleri
Aramayı belirli fiyat düzeylerinde işaretlenen yerlerle sınırlandırın. Varsayılan olarak tüm fiyat seviyeleri seçilir.
Aşağıdaki tam sayı değerlerinden bir veya daha fazlasını içeren bir liste belirtin:
- 1 -
PRICE_LEVEL_INEXPENSIVE
- 2:
PRICE_LEVEL_MODERATE
- 3:
PRICE_LEVEL_EXPENSIVE
- 4:
PRICE_LEVEL_VERY_EXPENSIVE
- 1 -
Sıralama tercihi
Sonuçların yanıtta nasıl sıralandığını belirtir. API, geçerli olduğunda varsayılan olarak
RELEVANCE
kullanır. Örneğin, "İstanbul'daki restoranlar" gibi bir sorgu içinRELEVANCE
varsayılan değerdir. "Mountain View, CA" gibi coğrafi sorgular veya diğer sorgu türleri için hiçbir varsayılan ayar uygulanmaz ve sonuçlar arka uç tarafından döndürüldükleri sırayla gösterilir.Olası değerlere örnekler:
SearchByTextRequest.RankPreference.DISTANCE
: Sonuçları mesafeye göre sıralayın.SearchByTextRequest.RankPreference.RELEVANCE
: Sonuçları alaka düzeyine göre sıralayın.
Bölge kodu
Yanıtı biçimlendirmek için kullanılan, iki karakterli CLDR kodu değeri olarak belirtilen bölge kodu. Bu parametrenin arama sonuçları üzerinde de önyargı etkisi olabilir. Varsayılan değer yoktur.
Yanıttaki adres alanının ülke adı bölge koduyla eşleşirse ülke kodu adresten çıkarılır.
Bazı önemli istisnalar dışında CLDR kodlarının çoğu ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu ise "gb"'dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallık'ı" için kullanılır). Parametre, geçerli yasalara göre sonuçları etkileyebilir.
Katı kurallı filtre türü
İçerme türü parametresiyle kullanılır.
true
olarak ayarlandığında, yalnızca dahil etme türü tarafından belirtilen belirtilen türlerle eşleşen yerler döndürülür. Varsayılan olarakfalse
olduğunda yanıt, belirtilen türlerle eşleşmeyen yerler içerebilir.