Metin Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Metin Arama (Yeni), bir dizeye göre bir yer grubuyla ilgili bilgileri döndürür (ör. "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 yalnızca 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 ve Place.Field.DISPLAY_NAME içerecek şekilde ayarlayın. Bu, yanıttaki her eşleşen yeri temsil eden Place nesnelerinin yalnızca bu iki alanı içerdiği anlamına gelir.

  • Aramayı tanımlayan bir SearchByTextRequest objesi oluşturmak için SearchByTextRequest.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 ve SearchByTextResponse 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 bir Place 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ştururken setPlaceFields() 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ştururken setTextQuery() 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 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ştururken setIncludedType() 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 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 ve high.longitude = 180 derece ise görüntü alanı tüm boylamları içerir.
      • low.longitude = 180 derece ve high.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ştururken setLocationBias() 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 alanın dışında da bulunabileceği bölgeyi belirtme olarak düşünebilirsiniz.

    Konum kısıtlaması parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setLocationRestriction() 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ştururken setMaxResultCount() 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ştururken setMinRating() 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 parametreyi false 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ştururken setOpenNow() 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 bir 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ştururken setPriceLevels() 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 tercihini SearchByTextRequest.RankPreference.RELEVANCE veya SearchByTextRequest.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ştururken setRankPreference() yöntemini çağırın.

  • 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ştururken setRegionCode() 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 olarak false olduğunda yanıt, belirtilen türlerle eşleşmeyen yerler içerebilir.

    Katı tür filtreleme parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setStrictTypeFiltering() yöntemini çağırın.