Yakında Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Yakında Arama (Yeni) isteği, aranacak bölgeyi giriş olarak alır. Bu bölge, dairenin odak noktasının enlem ve boylam koordinatları ile metre cinsinden yarıçapı ile tanımlanan bir daire olarak belirtilir. İstek, belirtilen arama alanında eşleşen yerlerin listesini döndürür. Bu listedeki her yer, Place nesnesiyle temsil edilir.

Varsayılan olarak, yanıtta arama alanındaki tüm yer türleri bulunur. İsteğe bağlı olarak, yanıta açıkça dahil edilecek veya yanıttan hariç tutulacak yer türlerinin listesini belirterek yanıtı filtreleyebilirsiniz. Örneğin, yanıta yalnızca "restoran", "fırın" ve "kafe" türündeki yerlerin dahil edilmesini veya "okul" türündeki tüm yerlerin hariç tutulmasını belirtebilirsiniz.

Yakında Arama (Yeni) istekleri

PlacesClient.searchNearby işlevini çağırarak ve istek parametrelerini tanımlayan bir SearchNearbyRequest nesnesi ileterek Yakındaki Arama (Yeni) isteği gönderin.

SearchNearbyRequest nesnesi, istek için gerekli ve isteğe bağlı tüm parametreleri belirtir. Gerekli parametreler şunlardır:

  • Place nesnesinde döndürülecek alanların listesi. Bu liste, alan maskesi olarak da bilinir. Alan listesinde en az bir alan belirtmezseniz veya alan listesini atlarsanız çağrı hata döndürür.
  • Arama alanının konum kısıtlaması, enlem/boylam çifti ve metre cinsinden yarıçap değeri olarak tanımlanır.

Bu örnekteki yakındaki arama isteğinde, yanıttaki Place nesnelerinin, arama sonuçlarındaki her bir Place nesnesi için Place.Field.ID ve Place.Field.DISPLAY_NAME yer alanlarını içermesi gerektiği belirtilmektedir. Ayrıca yanıtı yalnızca "restoran" ve "kafe" türündeki yerleri döndürecek şekilde filtreler ancak "pizza_restaurant" ve "american_restaurant" türündeki yerleri hariç tutar.

// Define a list of fields to include in the response for each returned place.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);

// Define the search area as a 1000 meter diameter circle in New York, NY.
LatLng center = new LatLng(40.7580, -73.9855);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000);

// Define a list of types to include.
final List<String> includedTypes = Arrays.asList("restaurant", "cafe");
// Define a list of types to exclude.
final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant");

// Use the builder to create a SearchNearbyRequest object.
final SearchNearbyRequest searchNearbyRequest =
SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields)
    .setIncludedTypes(includedTypes)
    .setExcludedTypes(excludedTypes)
    .setMaxResultCount(10)
    .build());

// Call placesClient.searchNearby() to perform the search.
// Define a response handler to process the returned List of Place objects.
placesClient.searchNearby(searchNearbyRequest)
    .addOnSuccessListener(response -> {
      List<Place> places = response.getPlaces();
    });

Yakında Arama (Yeni) yanıtları

SearchNearbyResponse sınıfı, bir arama isteğine verilen yanıtı temsil eder. SearchNearbyResponse nesnesi şunları içerir:

  • Eşleşen tüm yerleri temsil eden Place nesnelerinin listesi. Eşleşen yer başına bir Place nesnesi bulunur.
  • 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:

// Define a list of fields to include in the response for each returned place.
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. Ardından, her Place nesnesindeki 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 başlıklı makaleyi inceleyin.

Gerekli parametreler

Arama için gerekli parametreleri belirtmek üzere SearchNearbyRequest nesnesini kullanın.

  • Alan listesi

    Yer ayrıntılarını istediğinizde, yer için Place nesnesinde döndürülecek verileri alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak için Place.Field değerlerinden oluşan bir diziyi SearchNearbyRequest nesnesine iletin. Alan maskeleme, gereksiz veri istemediğinizden emin olmanızı sağlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işleme süresi ve faturalandırma ücretlerinden kaçınabilirsiniz.

    Aşağıdaki alanlardan birini veya daha fazlasını belirtin:

    • Aşağıdaki alanlar Yakındaki Arama Pro SKU'sunu tetikler:

      Place.Field.ADDRESS_COMPONENTS
      Place.Field.BUSINESS_STATUS
      Place.Field.ADDRESS
      Place.Field.DISPLAY_NAME >*
          * Destek sonlandırılan Place.Field.NAME yerine kullanın.
      Place.Field.ICON_BACKGROUND_COLOR
      Place.Field.ICON_MASK_URL*
          * Desteği sonlandırılan Place.Field.ICON_URL yerine kullanın.
      Place.Field.ID
      Place.Field.LAT_LNG
      Place.Field.PHOTO_METADATAS
      Place.Field.PLUS_CODE
      Place.Field.PRIMARY_TYPE
      Place.Field.PRIMARY_TYPE_DISPLAY_NAME
      Place.Field.RESOURCE_NAME
      Place.Field.TYPES
      Place.Field.UTC_OFFSET
      Place.Field.VIEWPORT
      Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE

      Alanların ve ilişkili SKU'larının tam listesi için Yer Veri Alanları (Yeni) başlıklı makaleyi inceleyin.

    • Aşağıdaki alanlar Nearby Search Enterprise SKU'yu tetikler:

      Place.Field.CURRENT_OPENING_HOURS
      Place.Field.CURRENT_SECONDARY_OPENING_HOURS
      Place.Field.INTERNATIONAL_PHONE_NUMBER*
          * Kullanımdan kaldırılan Place.Field.PHONE_NUMBER yerine kullanın.
      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*
          * Kullanımdan kaldırılan Place.Field.USER_RATINGS_TOTAL yerine kullanılır.
      Place.Field.WEBSITE_URI

      Alanların ve ilişkili SKU'ların tam listesi için Yer Veri Alanları (Yeni) başlıklı makaleyi inceleyin.

    • Aşağıdaki alanlar Yakındaki Arama Enterprise Plus 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

      Alanların ve ilişkili SKU'larının tam listesi için Yer Veri Alanları (Yeni) başlıklı makaleyi inceleyin.

    Alan listesi parametresini ayarlamak için SearchNearbyRequest nesnesini oluştururken setPlaceFields() yöntemini çağırın.

    Aşağıdaki örnekte, bir istek tarafından döndürülen Place nesnesinin Place.Field.ID ve Place.Field.DISPLAY_NAME alanlarını içerdiğini belirtmek için iki alan değerinden oluşan bir liste tanımlanmaktadır:

// Define a list of fields to include in the response for each returned place.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
  • Konum kısıtlaması

    A LocationRestriction merkez noktası ve metre cinsinden yarıçap ile tanımlanan bir daire olarak belirtilen, aranacak bölgeyi tanımlayan nesne. Yarıçap 0,0'dan büyük ve 50.000,0'dan küçük veya bu değere eşit olmalıdır.Çok küçük bir yarıçap belirtmenin yanıt olarak ZERO_RESULTS döndüreceğini unutmayın.

    Konum kısıtlama parametresini ayarlamak için SearchNearbyRequest nesnesini oluştururken setLocationRestriction() yöntemini çağırın.

İsteğe bağlı parametreler

Arama için isteğe bağlı parametreleri belirtmek üzere SearchNearbyRequest nesnesini kullanın.

  • Türler ve birincil türler

    Arama sonuçlarını filtrelemek için kullanılan türler Tablo A listesinden türler belirtmenize olanak tanır. Her tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.

    Bir yer, Tablo A'da yer alan türlerden yalnızca tek bir birincil türe sahip olabilir. Örneğin, birincil tür "mexican_restaurant" veya "steak_house" olabilir. Bir yerin birincil türüyle ilgili sonuçları filtrelemek için includedPrimaryTypes ve excludedPrimaryTypes öğelerini kullanın.

    Bir yerle ilişkili Tablo A türlerinden birden fazla tür değeri de olabilir. Örneğin, bir restoranın şu türleri olabilir: "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment". Bir yerle ilişkili türlerin listesindeki sonuçları filtrelemek için includedTypes ve excludedTypes tuşlarını kullanın.

    "restaurant" veya "hotel" gibi genel bir birincil tür belirttiğinizde yanıtta, belirtilenden daha spesifik bir birincil tür içeren yerler olabilir. Örneğin, "restaurant" birincil türünü dahil etmeyi belirtirsiniz. Yanıtta, birincil türü "restaurant" olan yerler bulunabilir. Bununla birlikte, yanıtta "chinese_restaurant" veya "seafood_restaurant" gibi daha belirgin bir birincil türe sahip yerler de yer alabilir.

    Bir arama birden fazla tür kısıtlamasıyla belirtilirse yalnızca tüm kısıtlamaları karşılayan yerler döndürülür. Örneğin, includedTypes = Arrays.asList("restaurant") ve excludedPrimaryTypes = Arrays.asList("steak_house") değerlerini belirtirseniz döndürülen yerler "restaurant" ile ilgili hizmetler sunar ancak öncelikli olarak "steak_house" olarak faaliyet göstermez.

    includedTypes ve excludedTypes'nin nasıl kullanılacağına dair bir örnek için Yakındaki Arama (Yeni) istekleri bölümüne bakın.

    Dahil edilen türler

    Aranacak A Tablosu'ndaki yer türlerinin listesi. Bu parametre atlanırsa her türden yer döndürülür.

    Dahil edilen türler parametresini ayarlamak için SearchNearbyRequest nesnesini oluştururken setIncludedTypes() yöntemini çağırın.

    Hariç tutulan türler

    Tablo A'daki yer türlerinin bir arama işleminden hariç tutulacak listesi.

    İstek içinde hem includedTypes (ör. "school") hem de excludedTypes (ör. "primary_school") belirtirseniz yanıtta "school" olarak kategorize edilen ancak "primary_school" olarak kategorize edilmeyen yerler yer alır. Yanıtta, includedTypes'den en az biriyle eşleşen ve excludedTypes'den hiçbiriyle eşleşmeyen yerler yer alıyor.

    includedTypes ve excludedTypes gibi çakışan türler varsa INVALID_REQUEST hatası döndürülür.

    Hariç tutulan türler parametresini ayarlamak için SearchNearbyRequest nesnesini oluştururken setExcludedTypes() yöntemini çağırın.

    Dahil edilen birincil türler

    Aramaya dahil edilecek Tablo A'daki birincil yer türlerinin listesi.

    Dahil edilen birincil türler parametresini ayarlamak için SearchNearbyRequest nesnesini oluştururken setIncludedPrimaryTypes() yöntemini çağırın.

    Hariç tutulan birincil türler

    Arama dışında tutulacak Tablo A'daki birincil yer türlerinin listesi.

    includedPrimaryTypes ve excludedPrimaryTypes'de görünen bir tür gibi çakışan birincil türler varsa INVALID_ARGUMENT hatası döndürülür.

    Hariç tutulan birincil türler parametresini ayarlamak için SearchNearbyRequest nesnesi oluşturulurken setExcludedPrimaryTypes() 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 (bu değerler dahil).

    Maksimum sonuç sayısı parametresini ayarlamak için SearchNearbyRequest nesnesini oluştururken setMaxResultCount() yöntemini çağırın.

  • Sıralama tercihi

    Kullanılacak sıralama türü. Bu parametre atlanırsa sonuçlar popülerliğe göre sıralanır. Aşağıdakilerden biri olabilir:

    • POPULARITY (varsayılan) Sonuçları popülerliklerine göre sıralar.
    • DISTANCE Sonuçları, belirtilen konuma olan mesafelerine göre artan düzende sıralar.

    Sıra tercihi parametresini ayarlamak için SearchNearbyRequest nesnesini oluştururken setRankPreference() yöntemini çağırın.

  • Bölge kodu

    Yanıtı biçimlendirmek için kullanılan bölge kodu, iki karakterli CLDR kodu değeri olarak belirtilir. Varsayılan değer yoktur.

    Yanıttaki FORMATTED_ADDRESS alanının ülke adı regionCode ile eşleşiyorsa ülke kodu FORMATTED_ADDRESS alanından çıkarılır.

    Bazı önemli istisnalar dışında çoğu CLDR kodu, 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ığı" tüzel kişiliği için). Parametre, geçerli yasaya göre sonuçları etkileyebilir.

    Bölge kodu parametresini ayarlamak için SearchNearbyRequest nesnesini oluştururken setRegionCode() yöntemini çağırın.

Uygulamanızda ilişkilendirmeleri gösterme

Uygulamanız PlacesClient'dan alınan bilgileri (ör. fotoğraflar ve yorumlar) gösterdiğinde gerekli atıfları da göstermelidir.

Daha fazla bilgi için Android için Yerler SDK'sı Politikaları başlıklı makaleyi inceleyin.