درخواست «جستجوی مکانهای اطراف (جدید)» منطقهای را که باید جستجو شود بهصورت دایرهای که با مختصات طول و عرض جغرافیایی نقطه مرکزی دایره و شعاع آن به متر تعریف شده است بهعنوان ورودی دریافت میکند. درخواست
فهرستی از مکانهای منطبق را برمیگرداند که هرکدام با یک شیء
Place
در محدوده جستجوی مشخصشده نشان داده میشوند.
بهطور پیشفرض، پاسخ شامل مکانهایی از همه انواع در محدوده جستجو است. میتوانید با مشخص کردن فهرستی از انواع مکانها برای گنجاندن یا نگنجاندن صریح در پاسخ، پاسخ را بهطور اختیاری فیلتر کنید. برای مثال، میتوانید مشخص کنید فقط مکانهایی در پاسخ گنجانده شود که از نوع «رستوران»، «نانوایی»، و «کافه» باشند، یا همه مکانهای از نوع «مدرسه» حذف شوند.
درخواستهای «جستجوی اطراف» (جدید)
با فراخوانی
PlacesClient.searchNearby،
درخواست «جستجوی مکانهای اطراف (جدید)» ایجاد کنید
و شیء
SearchNearbyRequest
را که پارامترهای درخواست را تعریف میکند ارسال کنید.
هدف 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، به دسترسی به فیلدهای داده شیء «مکان» مراجعه کنید.
پارامترهای الزامی
از شیء
SearchNearbyRequest
برای مشخص کردن پارامترهای لازم برای جستجو استفاده کنید.
فهرست فیلدها
وقتی جزئیات مکان را درخواست میکنید، باید دادههایی را که باید در شیء
Placeبرای مکان برگردانده شود بهعنوان ماسک فیلد مشخص کنید. برای تعریف پوشش فیلد، آرایهای از مقادیر را ازPlace.Fieldبه شیءSearchNearbyRequestارسال کنید. پوشاندن فیلد یک روش طراحی خوب است که تضمین میکند دادههای غیرضروری درخواست نکنید، که به اجتناب از زمان پردازش غیرضروری و هزینههای صورتحساب کمک میکند.یک یا چند فیلد زیر را مشخص کنید:
فیلدهای زیر جستجوی اطراف حرفهای واحد نگهداری موجودی را راهاندازی میکنند:
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برای مشاهده فهرست کامل فیلدها و 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برای فهرست کامل فیلدها و «واحد نگهداری کالا» مرتبط با آنها، فیلدهای داده مکان (جدید) را ببینید.
فیلدهای زیر باعث راهاندازی جستجوی مکانهای اطراف 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برای مشاهده فهرست کامل فیلدها و SKUهای مرتبط با آنها، به فیلدهای داده مکان (جدید) مراجعه کنید.
برای تنظیم پارامتر فهرست فیلد، هنگام ساختن شیء
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که منطقه جستجو را بهصورت دایره تعریف میکند، که با نقطه مرکزی و شعاع به متر تعریف میشود. شعاع باید بین ۰٫۰ تا ۵۰۰۰۰٫۰ باشد، با این نکته که اگر شعاع خیلی کوچک باشد،ZERO_RESULTSبهعنوان پاسخ برگردانده میشود.برای تنظیم پارامتر محدودیت مکان، هنگام ساختن شیء
SearchNearbyRequest، روشsetLocationRestriction()را فراخوانی کنید.
پارامترهای اختیاری
برای مشخص کردن پارامترهای اختیاری جستجو، از
SearchNearbyRequest
شیء استفاده کنید.
-
انواع و انواع اصلی
به شما امکان میدهد فهرستی از انواع را از انواع جدول A مشخص کنید که برای فیلتر کردن نتایج جستجو استفاده میشود. در هر دسته محدودیت نوع، حداکثر ۵۰ نوع را میتوان مشخص کرد.
یک مکان فقط میتواند یک نوع اصلی از انواع جدول الف مرتبط با خود داشته باشد. برای مثال، نوع اصلی ممکن است
"mexican_restaurant"یا"steak_house"باشد. ازincludedPrimaryTypesوexcludedPrimaryTypesبرای فیلتر کردن نتایج براساس نوع اصلی مکان استفاده کنید.یک مکان همچنین میتواند چندین مقدار نوع از انواع جدول الف مرتبط با آن داشته باشد. برای مثال، یک رستوران ممکن است انواع زیر را داشته باشد:
"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، درخواستهای «جستجوی مکانهای اطراف (جدید)» را ببینید.نوعهای گنجاندهشده
فهرستی از انواع مکانها از جدول الف برای جستجو. اگر این پارامتر حذف شود، مکانهای همه انواع برگردانده میشود.
برای تنظیم پارامتر انواع گنجاندهشده، هنگام ساختن شیء
SearchNearbyRequest، روشsetIncludedTypes()را فراخوانی کنید.انواع مستثناشده
فهرست انواع مکان از جدول الف برای کنار گذاشتن از جستجو.
اگر هم
includedTypes(مثل"school") و همexcludedTypes(مثل"primary_school") را در درخواست مشخص کنید، پاسخ شامل مکانهایی میشود که بهعنوان"school"دستهبندی شدهاند اما بهعنوان"primary_school"دستهبندی نشدهاند. پاسخ شامل مکانهایی است که با حداقل یکی ازincludedTypesو هیچکدام ازexcludedTypesمطابقت دارد.اگر انواع متناقضی وجود داشته باشد، مثلاً نوعی که هم در
includedTypesو هم درexcludedTypesظاهر شود، خطایINVALID_REQUESTبرگردانده میشود.برای تنظیم پارامتر انواع مستثنیشده، هنگام ساختن شیء
SearchNearbyRequest، روشsetExcludedTypes()را فراخوانی کنید.نوعهای اصلی لحاظشده
فهرستی از انواع مکانهای اصلی از جدول الف برای گنجاندن در جستجو.
برای تنظیم پارامتر انواع اصلی گنجاندهشده، هنگام ساختن شیء
SearchNearbyRequest، روشsetIncludedPrimaryTypes()را فراخوانی کنید.انواع اصلی مستثناشده
فهرست انواع مکان اصلی از جدول A برای کنار گذاشتن از جستجو.
اگر انواع اصلی متناقضی وجود داشته باشد، مثلاً نوعی که هم در
includedPrimaryTypesو هم درexcludedPrimaryTypesظاهر میشود، خطایINVALID_ARGUMENTبرگردانده میشود.برای تنظیم پارامتر انواع اصلی مستثنیشده، هنگام ساختن شیء
SearchNearbyRequest، روشsetExcludedPrimaryTypes()را فراخوانی کنید. -
حداکثر تعداد نتایج
حداکثر تعداد نتایج مکان را برای برگرداندن مشخص میکند. باید بین ۱ و ۲۰ (پیشفرض) باشد.
برای تنظیم پارامتر حداکثر تعداد نتایج، هنگام ساختن شیء
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 بهدست آورده است،
مثل عکسها و مرورها، نمایش میدهد، برنامه باید اسناد اقتباس الزامی را نیز نمایش دهد.
برای اطلاعات بیشتر، خطمشیهای کیت توسعه نرمافزار مکانها، ویژه Android را ببینید.