Metin Arama (Yeni), bir dizeye dayalı olarak bir dizi yerle ilgili bilgileri döndürür. Örneğin, "İstanbul'da pizza" veya "İstanbul yakınlarındaki ayakkabı mağazaları" ya da "Ana Cadde No: 123". Hizmet, metin dizesiyle eşleşen yerlerin bir listesiyle ve ayarlanan konum ön yargılarıyla yanıt verir.
Hizmet özellikle otomatik bir sistemde belirsiz adres sorguları yapmak için yararlıdır ve dizenin adres olmayan bileşenleri, işletmelerin yanı sıra adreslerin de eşleşmesini sağlayabilir. Belirsiz adres sorgularına örnek olarak, kötü biçimlendirilmiş adresler veya işletme adları gibi adres olmayan bileşenler içeren istekler verilebilir. İlk iki örnekteki gibi istekler, bir konum (bölge, konum kısıtlaması veya konum sapması gibi) ayarlanmadıkça sıfır sonuç döndürebilir.
Metin Arama (Yeni), Yakındaki Arama (Yeni)'ye benzer. Bu ikisi arasındaki temel fark, Metin Arama (Yeni) işlevinin rastgele bir arama dizesi belirtmenize izin verirken Yakındaki Arama (Yeni) özelliğinin arama için belirli bir alan gerektirmesidir.
"10 High Street, UK" veya "123 Main Street, ABD" | Birleşik Krallık'ta birden fazla "Ana Cadde", ABD'de birden fazla "Ana Cadde". Bir konum kısıtlaması ayarlanmadığı sürece sorgu, istenen sonuçları döndürmez. |
"Restoran Zincir Restoran İstanbul" | New York'ta birden fazla "ChainRestaurant" konumu; açık adres, hatta sokak adı yok. |
"10 High Street, Escher UK" veya "123 Main Street, Pleasanton Türkiye" | Birleşik Krallık'ın Escher şehrinde sadece bir "High Street"; ABD'nin Pleasanton CA şehrinde sadece bir "Main Street"tir. |
"Benzersiz RestoranAdı İstanbul" | New York'ta bu ada sahip yalnızca bir işletme var; ayırt etmek için açık adres gerekmez. |
"İstanbul'daki pizza restoranları" | Bu sorgu, konum kısıtlaması içeriyor ve "pizza restoranları" iyi tanımlanmış bir yer türü. Birden fazla 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ç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, her eşleşen yeri temsil eden yanıttakiPlace
nesnelerinin yalnızca bu iki alanı içerdiği anlamına gelir.Aramayı tanımlayan bir
SearchByTextRequest
nesnesi oluşturmak içinSearchByTextRequest.Builder
işlevini kullanın.Metin sorgu dizesini "Acı Vejetaryen Yemek" olarak ayarlayın.
Maksimum sonuç sayısı 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ışındaki eşleşmeler döndürülmez.
OnSuccessListener
ekleyipSearchByTextResponse
nesnesinden eşleşen yerleri alın.
Metin Arama yanıtları
SearchByTextResponse
sınıfı, bir arama isteğinden gelen yanıtı temsil eder. SearchByTextResponse
nesnesi şunları içerir:
Eşleşen yer başına bir
Place
nesne olmak üzere, eşleşen tüm yerleri temsil edenPlace
nesnelerin listesi.Her
Place
nesnesi yalnızca istekte iletilen alan listesiyle 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.
Bir Place
nesnesindeki verilere erişme hakkında daha fazla örnek için Yer nesnesi veri alanlarına bakın
Gerekli parametreler
SearchByTextRequest
için gerekli parametreler şunlardır:
-
Alan listesi
Döndürülecek yer verisi alanlarını belirtin. Döndürülecek veri alanlarını belirten
Place.Field
değerlerinin listesini iletin. Yanıtta varsayılan bir döndürülen alanlar listesi yoktur.Alan listeleri, gereksiz veri isteğinde bulunmadığınızdan emin olmak için iyi bir tasarım uygulamasıdır. Bu da gereksiz işlem süresi ve faturalandırma ücretlerinin önlenmesine yardımcı olur.
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", "Ana Cadde No: 123" veya "İstanbul'da ziyaret edilecek en iyi yer". API, bu dizeye dayalı aday eşleşmeleri döndürür ve sonuçları algılanan alaka düzeyine göre sıralar.
Metin sorgusu parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetTextQuery()
yöntemini çağırın.
İsteğe bağlı parametreler
İsteğinizin isteğe bağlı parametrelerini belirtmek için SearchByTextRequest
nesnesini kullanı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")
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 bir sapma görevi görür. Bu da belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun etrafındaki sonuçların döndürülebileceği anlamına gelir.
Konum kısıtlaması veya konum yanlılığını belirtebilirsiniz ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi belirtmek; konum ön yargısını ise sonuçların yakınında olması gereken ancak bölgenin dışında olabilecek bölgeyi belirtmek olarak düşünebilirsiniz.
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 50.000,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, çapraz olarak zıt yönde iki düşük ve yüksek noktayla temsil edilen, 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ı bölge olarak kabul edilir. Yani kendi sınırlarını içerir. Enlem sınırları -90 ile 90 derece (dahil) arasında, boylam sınırları ise -180 ila 180 derece (her ikisi de dahil) arasında olmalıdır:
low
=high
olursa görüntü alanı, bu tek noktadan oluşur.low.longitude
>high.longitude
ise boylam aralığı tersine çevrilir (görüntü alanı 180 derecelik boylam çizgisini geçer).low.longitude
= -180 derece vehigh.longitude
= 180 derece olursa görüntü alanı tüm boylamları içerir.low.longitude
= 180 derece vehigh.longitude
= -180 derece olursa boylam aralığı boş olur.low.latitude
>high.latitude
olursa enlem aralığı boş olur.
Hem düşük hem de yüksek alanları doldurulmalıdır ve gösterilen kutu boş bırakılamaz. Boş görüntü alanı hatayla sonuçlanır.
Örneğin, dikdörtgen görüntü alanı için Metin Arama istekleri bölümüne bakın.
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 döndürülmez. Bölgeyi dikdörtgen görünüm alanı olarak belirtin. Görünümü tanımlama hakkında bilgi edinmek için Konum yanlılığı açıklamasına bakın.
Konum kısıtlaması veya konum yanlılığını belirtebilirsiniz ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi belirtmek; konum ön yargısını ise sonuçların yakınında olması gereken ancak bölge dışında olabilecek bölgeyi belirtmek olarak düşünebilirsiniz.
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. 1-20 (varsayılan) dahil bu değerler arasında olmalıdır.
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ı 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 bu sayılar. Değerler, en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri 1,0'dan düşük olan tüm sonuçları eler.
Minimum derecelendirme parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetMinRating()
yöntemini çağırın.Şu anda açık
true
ise yalnızca sorgunun gönderildiği sırada açık olan yerleri döndürün.false
ise açık durumundan bağımsız olarak tüm işletmeleri döndürün. Bu parametreyifalse
olarak ayarlarsanız Google Rehber veritabanında çalışma saatlerini belirtmeyen yerler döndürülür."Şimdi aç" parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetOpenNow()
yöntemini çağırın.-
Fiyat seviyeleri
Sonuçlar, varsayılan olarak tüm fiyat düzeylerinde hizmet sunan yerleri içerir. Sonuçları yalnızca belirli fiyat seviyelerindeki yerleri içerecek şekilde kısıtlamak için döndürmek istediğiniz yerlerin fiyat düzeylerine karşılık gelen tam sayı değerlerinin bir listesini iletebilirsiniz:
1
- Yer, pahalı olmayan hizmetler sunuyor.2
- Yer, orta fiyatlı hizmetler sunuyor.3
- Yer, pahalı hizmetler sunuyor.4
- Yer ç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, sorgunun türüne göre yanıtta nasıl sıralandığını belirtir:
- "İstanbul'daki restoranlar" gibi bir kategorik sorgu için varsayılan değer
SearchByTextRequest.RankPreference.RELEVANCE
(sonuçları arama alaka düzeyine göre sırala)dır. Sıralama tercihiniSearchByTextRequest.RankPreference.RELEVANCE
veyaSearchByTextRequest.RankPreference.DISTANCE
(sonuçları mesafeye göre sırala) olarak ayarlayabilirsiniz. - "Mountain View, CA" gibi kategorik olmayan bir sorgu için sıra tercihi parametresini ayarlamadan bırakmanızı öneririz.
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 varsayılan değer
Bölge kodu
Yanıtı biçimlendirmek için kullanılan bölge kodu. İki karakterli CLDR kodu değeri olarak belirtilir. Bu parametrenin arama sonuçları üzerinde yanlılık etkisi de olabilir. Varsayılan bir değer yok.
Yanıttaki adres alanının ülke adı bölge koduyla eşleşiyorsa ülke kodu adresten çıkarılır.
CLDR kodların çoğu, bazı önemli istisnalar dışında ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu "gb" (teknik olarak "Büyük Britanya ve Kuzey İrlanda'daki Birleşik Krallık'a" ait tüzel kişi için) "gb" şeklindedir. 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.
true
olarak ayarlandığında yalnızca dahil etme türüyle belirtilen türlerle eşleşen yerler döndürülür.false
olduğunda varsayılan yanıt, belirtilen türlerle eşleşmeyen yerler içerebilir.Katı tür filtreleme parametresini ayarlamak için,
SearchByTextRequest
nesnesini oluştururkensetStrictTypeFiltering()
yöntemini çağırın.