Nearby Search (Yeni) isteği, dairenin merkez noktasının enlem ve boylam koordinatları ile metre cinsinden yarıçapı tarafından tanımlanan, daire olarak belirtilen arama bölgesini giriş olarak alır. İstek, belirtilen arama alanında her biri bir Place nesnesiyle temsil edilen eşleşen yerlerin listesini döndürür.
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
İstek parametrelerini tanımlayan bir SearchNearbyRequest nesnesi ileterek PlacesClient.searchNearby'ı çağırarak Yakındaki Arama (Yeni) isteğinde bulunun.
SearchNearbyRequest nesnesi, istek için gerekli ve isteğe bağlı tüm parametreleri belirtir. Gerekli parametreler şunlardır:
Placenesnesinde 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ı için konum kısıtlaması, enlem/boylam çifti ve yarıçap değeri (metre cinsinden) olarak tanımlanır.
Bu örnek yakındaki yerleri arama isteği, yanıt Place nesnelerinin, arama sonuçlarındaki her bir Place nesnesi için Place.Field.ID ve Place.Field.DISPLAY_NAME yer alanlarını içerdiğini belirtir. Ayrıca yanıtı yalnızca "restaurant" ve "cafe" türündeki yerleri döndürecek ancak "pizza_restaurant" ve "american_restaurant" türündeki yerleri hariç tutacak şekilde filtreler.
// 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ğinden gelen yanıtı temsil eder. SearchNearbyResponse nesnesi şunları içerir:
- Eşleşen tüm yerleri temsil eden
Placenesnelerinin listesi. Eşleşen her yer için birPlacenesnesi bulunur. - Her
Placenesnesi, 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:
// 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 bir Place nesnesinin yalnızca eşleşen her yerin kimliğini ve adını içerdiği anlamına gelir. Ardından, her bir 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
Placenesnesinde döndürülecek verileri alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak içinPlace.Fielddeğerlerinden oluşan bir diziyiSearchNearbyRequestnesnesine iletin. Alan maskeleme, gereksiz veri istemediğinizden emin olmanızı sağlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresinden 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ılanPlace.Field.NAMEyerine kullanın.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* Desteği sonlandırılanPlace.Field.ICON_URLyerine 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_ENTRANCEAlanları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*
* Desteği sonlandırılanPlace.Field.PHONE_NUMBERyerine 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*
* Desteği sonlandırılanPlace.Field.USER_RATINGS_TOTALyerine kullanın.
Place.Field.WEBSITE_URIAlanların ve ilişkili SKU'larının tam listesi için Yer Verileri Alanları (Yeni) başlıklı makaleyi inceleyin.
Aşağıdaki alanlar Nearby Search 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.TAKEOUTAlanları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
SearchNearbyRequestnesnesini oluştururkensetPlaceFields()yöntemini çağırın.Aşağıdaki örnekte, bir istek tarafından döndürülen
PlacenesnesininPlace.Field.IDvePlace.Field.DISPLAY_NAMEalanları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
LocationRestrictionArama yapılacak bölgeyi tanımlayan, merkez noktası ve metre cinsinden yarıçap ile tanımlanan daire olarak belirtilen nesne. Yarıçap 0,0'dan büyük ve 50.000,0'den küçük veya buna eşit olmalıdır.Çok küçük bir yarıçap belirtildiğinde yanıt olarakZERO_RESULTSdöndürüleceğini unutmayın.Konum kısıtlama parametresini ayarlamak için
SearchNearbyRequestnesnesini oluştururkensetLocationRestriction()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 Tablo A türlerinden bir tür listesi belirtmenize olanak tanır. Her tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.
Bir yer, kendisiyle ilişkili Tablo A türlerinden yalnızca tek bir birincil türe sahip olabilir. Örneğin, birincil tür
"mexican_restaurant"veya"steak_house"olabilir. Sonuçları bir yerin birincil türüne göre filtrelemek içinincludedPrimaryTypesveexcludedPrimaryTypeskullanın.Bir yerle ilişkili Tablo A türlerinden birden fazla tür değeri de olabilir. Örneğin, bir restoran şu türlere sahip olabilir:
"seafood_restaurant","restaurant","food","point_of_interest","establishment". Bir yerle ilişkili türler listesindeki sonuçları filtrelemek içinincludedTypesveexcludedTypessimgelerini 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. Bu durumda yanıt, birincil türü"restaurant"olan yerleri içerebilir ancak yanıt,"chinese_restaurant"veya"seafood_restaurant"gibi daha spesifik bir birincil türe sahip yerleri de içerebilir.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")veexcludedPrimaryTypes = 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.includedTypesveexcludedTypeskullanımına ilişkin bir örnek için Yakınında Arama (Yeni) istekleri başlıklı makaleyi inceleyin.Dahil edilen türler
Aranacak yer türlerinin listesi (Tablo A'dan). Bu parametre atlanırsa tüm türlerdeki yerler döndürülür.
Dahil edilen türler parametresini ayarlamak için
SearchNearbyRequestnesnesini oluştururkensetIncludedTypes()yöntemini çağırın.Hariç tutulan türler
Tablo A'daki yer türleri listesi (arama sonuçlarından hariç tutulacak).
İstek içinde hem
includedTypes(ör."school") hem deexcludedTypes(ör."primary_school") belirtirseniz yanıtta"school"olarak kategorize edilen ancak"primary_school"olarak kategorize edilmeyen yerler yer alır. Yanıt,includedTypesdeğerlerinden en az biriyle eşleşen veexcludedTypesdeğerlerinden hiçbiriyle eşleşmeyen yerleri içerir.includedTypesveexcludedTypesgibi çakışan türler varsaINVALID_REQUESThatası döndürülür.Hariç tutulan türler parametresini ayarlamak için
SearchNearbyRequestnesnesini oluştururkensetExcludedTypes()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
SearchNearbyRequestnesnesini oluştururkensetIncludedPrimaryTypes()yöntemini çağırın.Hariç tutulan birincil türler
Aramadan hariç tutulacak, Tablo A'daki birincil yer türlerinin listesi.
Çakışan birincil türler varsa (ör. hem
includedPrimaryTypeshem deexcludedPrimaryTypesiçinde görünen bir tür)INVALID_ARGUMENThatası döndürülür.Hariç tutulan birincil türler parametresini ayarlamak için
SearchNearbyRequestnesnesini oluştururkensetExcludedPrimaryTypes()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
SearchNearbyRequestnesnesini oluştururkensetMaxResultCount()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.DISTANCESonuçları, belirtilen konuma olan mesafelerine göre artan düzende sıralar.
Sıra tercihi parametresini ayarlamak için
SearchNearbyRequestnesnesini oluştururkensetRankPreference()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. Varsayılan değer yoktur.
Yanıttaki
FORMATTED_ADDRESSalanının ülke adıregionCodeile eşleşirse ülke koduFORMATTED_ADDRESSalanından çıkarılır.Çoğu CLDR kodu, ISO 3166-1 kodlarıyla aynıdır ancak bazı önemli istisnalar vardı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
SearchNearbyRequestnesnesini oluştururkensetRegionCode()yöntemini çağırın.
Uygulamanızda ilişkilendirmeleri gösterme
Uygulamanız PlacesClient üzerinden elde edilen 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.