یک درخواست 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
ارسال کنید. پوشاندن میدان یک روش طراحی خوب برای اطمینان از عدم درخواست دادههای غیرضروری است که به جلوگیری از زمان پردازش غیرضروری و هزینههای صورتحساب کمک میکند.یک یا چند مورد از فیلدهای زیر را مشخص کنید:
فیلدهای زیر SKU جستجوی نزدیک (پایه) را فعال میکنند:
Place.Field.ADDRESS_COMPONENTS
،Place.Field.BUSINESS_STATUS
،Place.Field.ADDRESS
،Place.Field.ICON_BACKGROUND_COLOR
،Place.Field.ICON_URL
،Place.Field.LAT_LNG
،Place.Field.PHOTO_METADATAS
.Place.Field.PLUS_CODE
,Place.Field.PRIMARY_TYPE
,Place.Field.PRIMARY_TYPE_DISPLAY_NAME
,Place.Field.ID
,Place.Field.NAME
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
, Place.Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
فیلدهای زیر SKU جستجوی نزدیک (پیشرفته) را فعال می کنند:
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.RATING
Place.Field.PRICE_LEVEL
Place.Field.SECONDARY_OPENING_HOURS
،Place.Field.USER_RATING_COUNT
Place.Field.WEBSITE_URI
فیلدهای زیر 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.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 مراجعه کنید.