یک درخواست Nearby Search (جدید) منطقه ای را برای جستجو مشخص شده به عنوان یک دایره، که با مختصات طول و عرض جغرافیایی نقطه مرکزی دایره و شعاع بر حسب متر تعریف شده است، به عنوان ورودی می گیرد. درخواست فهرستی از مکانهای منطبق را برمیگرداند که هر کدام با یک شی Place در ناحیه جستجوی مشخص شده نمایش داده میشوند.
به طور پیشفرض، پاسخ حاوی مکانهایی از همه نوع در ناحیه جستجو است. میتوانید بهصورت اختیاری پاسخ را با تعیین فهرستی از انواع مکانها فیلتر کنید تا صریحاً در پاسخ قرار داده یا از آن حذف کنید. برای مثال، میتوانید مشخص کنید که فقط مکانهایی در پاسخ گنجانده شود که از نوع «رستوران»، «نانپزی» و «کافه» هستند یا همه مکانهای نوع «مدرسه» را حذف کنید.
درخواستهای جستجوی نزدیک (جدید).
با فراخوانی PlacesClient.searchNearby و ارسال یک شی SearchNearbyRequest که پارامترهای درخواست را تعریف می کند، یک درخواست Nearby Search (جدید) ایجاد کنید.
شی SearchNearbyRequest تمام پارامترهای مورد نیاز و اختیاری را برای درخواست مشخص می کند. پارامترهای مورد نیاز عبارتند از:
- لیست فیلدهایی که باید در شیء
Placeبرگردند که به عنوان فیلد ماسک نیز شناخته می شود. اگر حداقل یک فیلد را در لیست فیلد مشخص نکنید، یا اگر لیست فیلد را حذف کنید، تماس یک خطا برمیگرداند. - محدودیت مکان برای منطقه جستجو، به عنوان یک جفت طول و عرض جغرافیایی و مقدار شعاع، بر حسب متر تعریف شده است.
این مثال درخواست جستجوی نزدیک مشخص می کند که اشیاء Place پاسخ حاوی فیلدهای مکان Place.Field.ID و Place.Field.DISPLAY_NAME برای هر شیء Place در نتایج جستجو هستند. همچنین پاسخ را فقط به مکانهای برگشتی از نوع «رستوران» و «کافه» فیلتر میکند، اما مکانهای نوع «پیتزا_رستوران» و «رستوران_آمریکایی» را حذف میکند.
// 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(); });
پاسخهای جستجوی نزدیک (جدید).
کلاس SearchNearbyResponse پاسخ یک درخواست جستجو را نشان می دهد. یک شی SearchNearbyResponse شامل:
- فهرستی از اشیاء
Placeکه همه مکانهای منطبق را نشان میدهند، با یک شیPlaceدر هر مکان منطبق. - هر شی
Placeفقط شامل فیلدهایی است که توسط لیست فیلد ارسال شده در درخواست تعریف شده است.
به عنوان مثال، در درخواست شما یک لیست فیلد را به صورت زیر تعریف کرده اید:
// 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);
این لیست فیلد به این معنی است که هر شیء Place در پاسخ فقط شامل شناسه مکان و نام هر مکان منطبق است. سپس می توانید از متدهای Place.getId() و Place.getName() برای دسترسی به این فیلدها در هر شیء Place استفاده کنید.
برای مثالهای بیشتر از دسترسی به دادهها در یک شی Place ، به فیلدهای داده شیء Access Place مراجعه کنید.
پارامترهای مورد نیاز
از شی SearchNearbyRequest برای تعیین پارامترهای مورد نیاز برای جستجو استفاده کنید.
لیست زمینه
وقتی جزئیات مکان را درخواست میکنید، باید دادههایی را که باید در شیء
Placeبرای مکان بهعنوان یک فیلد ماسک برگردانده شوند، مشخص کنید. برای تعریف فیلد ماسک، آرایه ای از مقادیر را ازPlace.Fieldبه شیSearchNearbyRequestارسال کنید. پوشاندن میدان یک روش طراحی خوب برای اطمینان از عدم درخواست دادههای غیرضروری است که به جلوگیری از زمان پردازش غیرضروری و هزینههای صورتحساب کمک میکند.یک یا چند مورد از فیلدهای زیر را مشخص کنید:
فیلدهای زیر Nearby Search Pro SKU را فعال میکنند:
Place.Field.ADDRESS_COMPONENTS
Place.Field.BUSINESS_STATUS
Place.Field.ADDRESS
Place.Field.DISPLAY_NAME>*
* به جایPlace.Field.NAMEاستفاده کنید که منسوخ شده است.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* به جایPlace.Field.ICON_URLاستفاده کنید که منسوخ شده است.
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فیلدهای زیر Nearby Search Enterprise SKU را فعال می کنند:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER*
* به جایPlace.Field.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.USER_RATINGS_TOTALاستفاده کنید که منسوخ شده است.
Place.Field.WEBSITE_URIفیلدهای زیر Nearby Search Enterprise Plus SKU را فعال می کنند:
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
برای تنظیم پارامتر لیست فیلد، هنگام ساختن شی
SearchNearbyRequest، متدsetPlaceFields()را فراخوانی کنید.مثال زیر فهرستی از دو مقدار فیلد را تعریف می کند تا مشخص کند که شی
Placeکه توسط یک درخواست بازگردانده می شود شامل فیلدهایPlace.Field.IDوPlace.Field.DISPLAY_NAMEباشد:
// 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);
محدودیت مکان
یک شی
LocationRestrictionکه منطقه مورد جستجو را به عنوان یک دایره مشخص می کند، که با نقطه مرکزی و شعاع بر حسب متر تعریف می شود. شعاع باید بین بزرگتر از 0.0 و کمتر یا مساوی 50000.0 باشد، به خاطر داشته باشید که تعیین شعاع بسیار کوچکZERO_RESULTSبه عنوان پاسخ برمی گرداند.برای تنظیم پارامتر محدودیت مکان، هنگام ساخت شی
SearchNearbyRequest، متدsetLocationRestriction()را فراخوانی کنید.
پارامترهای اختیاری
از شی SearchNearbyRequest برای تعیین پارامترهای اختیاری برای جستجو استفاده کنید.
انواع و انواع اولیه
به شما امکان می دهد لیستی از انواع از انواع جدول A که برای فیلتر کردن نتایج جستجو استفاده می شود را مشخص کنید. حداکثر 50 نوع را می توان در هر دسته بندی محدودیت نوع مشخص کرد.
یک مکان فقط می تواند یک نوع اصلی از انواع جدول A مرتبط با آن داشته باشد. برای مثال، نوع اولیه ممکن است
"mexican_restaurant"یا"steak_house"باشد. ازincludedPrimaryTypesوexcludedPrimaryTypesبرای فیلتر کردن نتایج در نوع اصلی مکان استفاده کنید.یک مکان همچنین میتواند چندین مقدار نوع از انواع جدول A مرتبط با آن داشته باشد. به عنوان مثال، یک رستوران ممکن است انواع زیر را داشته باشد:
"seafood_restaurant"،"restaurant"،"food"،"point_of_interest"،"establishment". ازincludedTypesوexcludedTypesبرای فیلتر کردن نتایج در لیست انواع مرتبط با یک مکان استفاده کنید.وقتی یک نوع اولیه عمومی را مشخص میکنید، مانند
"restaurant"یا"hotel"، پاسخ میتواند شامل مکانهایی باشد که نوع اصلی خاصتری نسبت به نوع مشخصشده دارند. به عنوان مثال، شما مشخص می کنید که یک نوع اصلی"restaurant"را شامل شود. سپس پاسخ میتواند شامل مکانهایی با نوع اصلی"restaurant"باشد، اما پاسخ همچنین میتواند شامل مکانهایی با نوع اصلی خاصتر باشد، مانند"chinese_restaurant"یا"seafood_restaurant".اگر جستجویی با محدودیتهای چندگانه مشخص شده باشد، فقط مکانهایی که همه محدودیتها را برآورده میکنند، برگردانده میشوند. برای مثال، اگر
includedTypes = Arrays.asList("restaurant")وexcludedPrimaryTypes = Arrays.asList("steak_house")را مشخص کنید، مکان های برگشتی خدمات مربوط به"restaurant"را ارائه می دهند اما در اصل به عنوان"steak_house"عمل نمی کنند.برای مثالی از نحوه استفاده از
includedTypesوexcludedTypes، به درخواستهای Nearby Search (جدید) مراجعه کنید.انواع شامل
فهرستی از انواع مکان ها از جدول A برای جستجو. اگر این پارامتر حذف شود، مکان های همه نوع برگردانده می شوند.
برای تنظیم پارامتر انواع موجود، هنگام ساخت شی
SearchNearbyRequest، متدsetIncludedTypes()را فراخوانی کنید.انواع مستثنی شده
فهرستی از انواع مکان از جدول A برای حذف از جستجو.
اگر هر دو
includedTypes(مانند"school") وexcludedTypes(مانند"primary_school") را در درخواست مشخص کنید، پاسخ شامل مکان هایی است که به عنوان"school"طبقه بندی می شوند اما نه به عنوان"primary_school". پاسخ شامل مکانهایی است که حداقل با یکی ازincludedTypesو هیچ یک ازexcludedTypesمطابقت ندارند.اگر انواع متضاد وجود داشته باشد، مانند نوعی که در هر دو نوع
includedTypesوexcludedTypesظاهر می شود، یک خطایINVALID_REQUESTبرگردانده می شود.برای تنظیم پارامتر انواع excluded، هنگام ساخت شی
SearchNearbyRequest، متدsetExcludedTypes()را فراخوانی کنید.شامل انواع اولیه
فهرستی از انواع مکان های اصلی از جدول A برای گنجاندن در جستجو.
برای تنظیم پارامتر انواع اولیه شامل، متد
setIncludedPrimaryTypes()را هنگام ساختن شیSearchNearbyRequestفراخوانی کنید.انواع اولیه مستثنی شده است
فهرستی از انواع مکان های اصلی از جدول A برای حذف از جستجو.
اگر انواع اصلی متناقض وجود داشته باشد، مانند نوعی که هم در
includedPrimaryTypesوexcludedPrimaryTypesظاهر می شود، یک خطایINVALID_ARGUMENTبرگردانده می شود.برای تنظیم پارامتر انواع اولیه حذف شده، هنگام ساختن شی
SearchNearbyRequest، متدsetExcludedPrimaryTypes()را فراخوانی کنید.حداکثر تعداد نتایج
حداکثر تعداد نتایج مکان برای بازگشت را مشخص می کند. باید بین 1 تا 20 (پیشفرض) باشد.
برای تنظیم حداکثر پارامتر تعداد نتیجه، هنگام ساخت شی
SearchNearbyRequest، متدsetMaxResultCount()را فراخوانی کنید.اولویت رتبه
نوع رتبه بندی مورد استفاده اگر این پارامتر حذف شود، نتایج بر اساس محبوبیت رتبه بندی می شوند. ممکن است یکی از موارد زیر باشد:
-
POPULARITY(پیش فرض) نتایج را بر اساس محبوبیت آنها مرتب می کند. -
DISTANCEمرتبسازی به ترتیب صعودی بر اساس فاصله آنها از مکان مشخص شده نتیجه میدهد.
برای تنظیم پارامتر اولویت رتبه، هنگام ساخت شی
SearchNearbyRequest، متدsetRankPreference()را فراخوانی کنید.-
کد منطقه
کد منطقه ای که برای قالب بندی پاسخ استفاده می شود، به عنوان مقدار کد CLDR دو کاراکتری مشخص شده است. هیچ مقدار پیش فرض وجود ندارد.
اگر نام کشور فیلد
FORMATTED_ADDRESSدر پاسخ باregionCodeمطابقت داشته باشد، کد کشور ازFORMATTED_ADDRESSحذف می شود.اکثر کدهای CLDR با کدهای ISO 3166-1 یکسان هستند، با برخی استثناهای قابل توجه. برای مثال، ccTLD بریتانیا "uk" (.co.uk) است در حالی که کد ISO 3166-1 آن "gb" است (از لحاظ فنی برای نهاد "پادشاهی متحده بریتانیای کبیر و ایرلند شمالی"). این پارامتر می تواند بر نتایج بر اساس قانون قابل اجرا تأثیر بگذارد.
برای تنظیم پارامتر کد منطقه، هنگام ساخت شی
SearchNearbyRequest، متدsetRegionCode()را فراخوانی کنید.
اسناد را در برنامه خود نمایش دهید
هنگامی که برنامه شما اطلاعات به دست آمده از PlacesClient را نمایش می دهد، مانند عکس ها و نظرات، برنامه باید اسناد مورد نیاز را نیز نمایش دهد.
برای اطلاعات بیشتر، به سیاستهای مربوط به مکانها SDK برای Android مراجعه کنید.