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. Ö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 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ğlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresi ve faturalandırma ücretlerinden kaçınabilirsiniz.

    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ı, 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ş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 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 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 bölgenin 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 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 yerleri içerebilir.

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