Metin Arama (Yeni), bir dizeye göre bir yer grubuyla ilgili bilgileri döndürür. Örneğin, "New York'ta pizza" veya "Ottawa yakınlarındaki ayakkabı mağazaları" ya da "123 Ana Cadde". Hizmet, metin dizesine ve ayarlanmış konum yanlılığına eşleşen yerlerin listesini döndürür.
Bu hizmet, özellikle otomatik bir sistemde belirsiz adres sorguları yapmak için kullanışlıdır. Ayrıca dizenin adres dışındaki bileşenleri, adreslerin yanı sıra işletmelerle de eşleşebilir. Belirsiz adres sorgularına örnek olarak kötü biçimlendirilmiş adresler veya işletme adları gibi adres dışı bileşenler içeren istekler verilebilir. Bölge, konum kısıtlaması veya konum yanlılığı gibi bir konum ayarlanmadığı sürece ilk iki örnekteki gibi istekler sıfır sonuç döndürebilir.
Metin Arama (Yeni), Yakındakiler Arama (Yeni)'ye benzer. Bu iki veri türü arasındaki temel fark, Metin Arama'nın (Yeni) istediğiniz arama dizesini belirtmenize izin vermesi, Yakındakiler Arama'nın (Yeni) ise aramanın yapılacağı belirli bir alan gerektirmesidir.
"10 High Street, UK" veya "123 Main Street, US" | Birleşik Krallık'ta birden fazla "High Street", ABD'de birden fazla "Main Street". Konum kısıtlaması ayarlanmadığı sürece sorgu istenen sonuçları döndürmez. |
"ChainRestaurant New York" | New York'ta birden fazla "ChainRestaurant" konumu; açık adres veya hatta sokak adı yok. |
"10 High Street, Escher UK" veya "123 Main Street, Pleasanton US" | Birleşik Krallık'taki Escher şehrinde yalnızca bir "High Street", ABD'deki Pleasanton CA şehrinde ise yalnızca bir "Main Street" vardır. |
"UniqueRestaurantName New York" | New York'ta bu ada sahip tek bir işletme var. Ayrıştırmak için sokak adresi gerekmiyor. |
"New York'ta pizza restoranları" | Bu sorgu, konum kısıtlamasını içerir ve "pizza restoranları" iyi tanımlanmış bir yer türüdür. Birden fazla sonuç döndürür. |
"+1 514-670-8700" | Bu sorgu bir telefon numarası içeriyor. Bu telefon numarasıyla ilişkili yerler için birden fazla sonuç döndürür. |
Metin arama istekleri
Metin arama isteği şu şekildedir:
// 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(); });
Bu örnekte:
Alan listesini yalnızca
Place.Field.ID
vePlace.Field.DISPLAY_NAME
içerecek şekilde ayarlayın. Bu, yanıttaki her eşleşen yeri temsil edenPlace
nesnelerinin yalnızca bu iki alanı içerdiği anlamına gelir.Aramayı tanımlayan bir
SearchByTextRequest
objesi oluşturmak içinSearchByTextRequest.Builder
öğesini kullanın.Metin sorgu dizesini "Spicy Vegetarian Food" (Acı Vejetaryen Yemek) olarak ayarlayın.
Maksimum sonuç yeri 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örtgene kısıtlayın. Bu alanın dışındaki eşleşmeler döndürülmez.
Bir
OnSuccessListener
ekleyin veSearchByTextResponse
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 tüm yerleri temsil eden
Place
nesnelerinin listesi (eşleşen her yer için birPlace
nesnesi).Her
Place
nesnesi yalnızca istekte iletilen 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.DISPLAY_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. Ardından, her Place
nesnesinde bu alanlara erişmek için Place.getId()
ve Place.getName()
yöntemlerini kullanabilirsiniz.
Place
nesnesinde verilere erişmeyle ilgili daha fazla örnek için Yer nesnesi veri alanlarına erişme başlıklı makaleyi inceleyin.
Gerekli parametreler
SearchByTextRequest
için gerekli parametreler şunlardır:
-
Alan listesi
Hangi yer veri alanlarının döndürüleceğini belirtin. Döndürülecek veri alanlarını belirten bir
Place.Field
değeri listesi gönderin. Yanıtta döndürülen alanların varsayılan listesi yok.Alan listeleri, gereksiz veri istememenizi sağlamak için iyi bir tasarım uygulamasıdır. Bu, gereksiz işlem süresinden ve faturalandırma ücretlerinden kaçınmanıza yardımcı olur.
Aşağıdaki alanlardan en az birini belirtin:
Aşağıdaki alanlar Metin Arama (Yalnızca Kimlik) SKU'sunu tetikler:
Place.Field.DISPLAY_NAME
,Place.Field.ID
,Place.Field.RESOURCE_NAME
Aşağıdaki alanlar Metin Arama (Temel) SKU'sunu tetikler:
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
Aşağıdaki alanlar Metin Arama (Gelişmiş) SKU'sunu tetikler:
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
Aşağıdaki alanlar Metin Arama (Tercih Edilen) SKU'sunu tetikler:
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
Alan listesi parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetPlaceFields()
yöntemini çağırın. -
Metin sorgusu
Aramanın yapılacağı metin dizesi. Örneğin: "restoran", "123 Ana Cadde" veya "San Francisco'da ziyaret edilebilecek en iyi yer". API, bu dizeye göre olası eşleşmeleri döndürür ve sonuçları algılanan alaka düzeylerine göre sıralar.
Metin sorgu 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ı, A Tablosu tarafından tanımlanan belirli türle eşleşen yerlerle sınırlandırır. 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 yanlılığı
Arama yapılacak bir alanı belirtir. Bu konum, bir önyargı görevi görür. Bu, 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.
Yer kısıtlaması veya yer yanlılığı belirtebilirsiniz ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi belirtme, konum önyargısını ise sonuçların büyük olasılıkla içinde veya yakınında olacağı bölgeyi belirtme olarak düşünebilirsiniz. Konum önyargısı kullanılırken sonuçların belirtilen alanın dışında olabileceğini unutmayın.
Bölgeyi dikdörtgen bir görüntü alanı veya daire olarak belirtin.
Daireler, merkez noktası ve yarıçapı (metre cinsinden) ile tanımlanır. Yarıçap, 0,0 ile 50000,0 arasında (bu değerler dahil) 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 çapraz karşıt düşük ve yüksek nokta olarak temsil edilen bir enlem-boylam görüntü alanıdır. Düşük nokta, dikdörtgenin güney batı köşesini, yüksek nokta ise dikdörtgenin kuzeydoğu köşesini gösterir.
Görüntü alanı kapalı bir bölge olarak kabul edilir. Enlem sınırları -90 ile 90 derece arasında, boylam sınırları ise -180 ile 180 derece arasında olmalıdır:
low
=high
ise görüntü alanı bu tek noktadan oluşur.low.longitude
>high.longitude
ise boylam aralığı tersine çevrilir (görüntü alanı 180 derece boylam çizgisini aşar).low.longitude
= -180 derece vehigh.longitude
= 180 derece ise 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ş olur.
Hem düşük hem de yüksek değerler doldurulmalı ve temsil edilen kutu boş olmamalıdır. Boş bir görüntü alanı hatayla sonuçlanır.
Örneğin, dikdörtgen bir görüntü alanı için Metin arama isteklerine bakın.
Yer yanlılığı parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetLocationBias()
yöntemini çağırın.
Konum kısıtlaması
Arama yapılacak bir alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Bölgeyi dikdörtgen bir görüntü alanı olarak belirtin. Görüntü alanını tanımlama hakkında bilgi edinmek için Konum yanlılığı bölümünü inceleyin.
Yer kısıtlaması veya yer yanlılığı belirtebilirsiniz ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi belirtme olarak, konum önyargısını ise sonuçların yakınında olması gereken ancak bölgenin dışında da bulunabileceği bölgeyi belirtme 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 ile 20 (varsayılan) 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,0 ile 5,0 (başlangıç ve bitiş değerleri dahil) arasında, 0,5'lik artışlarla 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, puanı 1,0'dan düşük olan tüm sonuçları ortadan kaldırır.
Minimum puan parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetMinRating()
yöntemini çağırın.Ş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 durumdan bağımsız olarak tüm işletmeleri döndürür. Bu parametreyifalse
olarak ayarlarsanız Google Haritalar veritabanında çalışma saatlerini belirtmeyen yerler döndürülür.Hemen aç parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetOpenNow()
yöntemini çağırın.-
Fiyat düzeyleri
Varsayılan olarak sonuçlar, tüm fiyat seviyelerinde hizmet sunan yerleri içerir. Sonuçları yalnızca belirli fiyat düzeylerindeki 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 listesini iletebilirsiniz:
1
: Tesis uygun fiyatlı hizmetler sunuyor.2
: Orta düzeyde fiyatlı hizmetler sunan yerler.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
Sorgu türüne göre sonuçların yanıtta nasıl sıralandığını belirtir:
- "New York'taki restoranlar" gibi kategorik bir sorgu için varsayılan değer
SearchByTextRequest.RankPreference.RELEVANCE
'tür (sonuçları arama alaka düzeyine göre sırala). Sıralama tercihiniSearchByTextRequest.RankPreference.RELEVANCE
veyaSearchByTextRequest.RankPreference.DISTANCE
(sonuçları mesafeye göre sıralama) olarak ayarlayabilirsiniz. - "Mountain View, CA" gibi kategorik olmayan bir sorgu için sıralama tercihi parametresini ayarsız bırakmanızı öneririz.
Sıralama tercihi parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetRankPreference()
yöntemini çağırın.- "New York'taki restoranlar" gibi kategorik bir 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 parametre, arama sonuçlarında da önyargı etkisi yaratabilir. 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.
CLDR kodlarını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) iken ISO 3166-1 kodu "gb"dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı" tüzel kişiliği için). Parametre, geçerli yasaya 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
include type parametresiyle kullanılır.
true
olarak ayarlandığında, yalnızca dahil etme türü ile 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 yerleri içerebilir.Katı tür filtreleme parametresini ayarlamak için
SearchByTextRequest
nesnesini oluştururkensetStrictTypeFiltering()
yöntemini çağırın.