درخواست «جستجوی اطراف» (جدید) منطقه موردنظر برای جستجو را بهعنوان ورودی دریافت میکند
که بهصورت دایرهای مشخص شده است و با مختصات طول و عرض جغرافیایی نقطه مرکزی دایره و شعاع آن برحسب متر تعریف میشود. درخواست فهرستی از مکانهای منطبق را برمیگرداند که هریک با
GMSPlace
شیء در محدوده جستجوی مشخصشده نشان داده میشوند.
بهطور پیشفرض، پاسخ شامل مکانهایی از همه انواع در محدوده جستجو است. میتوانید بهصورت اختیاری با مشخص کردن فهرستی از انواع مکانها، پاسخ را فیلتر کنید تا بهطور صریح در پاسخ گنجانده شود یا از آن حذف شود. برای مثال، میتوانید مشخص کنید که فقط مکانهایی در پاسخ گنجانده شوند که از نوع «رستوران»، «نانوایی»، و «کافه» هستند، یا همه مکانهای از نوع «مدرسه» مستثنی شوند.
درخواستهای «جستجوی اطراف» (جدید)
با فراخوانی
GMSPlacesClient searchNearbyWithRequest:،
درخواست «جستجوی مکانهای اطراف» ایجاد کنید،
شیء
GMSPlaceSearchNearbyRequest
را که پارامترهای درخواست را تعریف میکند و روش فراخوانی برگشتی از نوع
GMSPlaceSearchNearbyResultCallback
را برای مدیریت پاسخ ارسال کنید.
هدف GMSPlaceSearchNearbyRequest همه
الزامی و اختیاری
پارامترهای درخواست را مشخص میکند. پارامترهای الزامی عبارتاند از:
- فهرست فیلدهایی که باید در شیء
GMSPlaceبرگردانده شوند، که به آن ماسک فیلد نیز گفته میشود، همانطور که توسطGMSPlacePropertyتعریف شده است. اگر حداقل یک فیلد را در فهرست فیلد مشخص نکنید، یا اگر فهرست فیلد را حذف کنید، تماس خطا برمیگرداند. - محدودیت مکان، یعنی دایرهای که محدوده جستجو را تعریف میکند.
این نمونه درخواست جستجوی مکانهای اطراف مشخص میکند که اشیای GMSPlace پاسخ
حاوی نام مکان (GMSPlacePropertyName) و مختصات مکان
(GMSPlacePropertyCoordinate) برای هر شیء GMSPlace در نتایج
جستجو است. همچنین پاسخ را فیلتر میکند تا فقط مکانهای نوع «رستوران» و «کافه» را برگرداند.
کیت توسعه نرمافزار Swift مکانها
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Swift
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchNearby(with: request, callback: callback)
آبجکتیو-سی
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
پاسخهای «جستجوی اطراف»
«میانای برنامهسازی کاربردی جستجوی اطراف» آرایهای از موارد منطبق را در قالبGMSPlace
اشیا برمیگرداند، با یک شیء GMSPlace برای هر مکان منطبق.
دریافت وضعیت باز
شیء GMSPlacesClient حاوی تابع عضوی بهنام isOpenWithRequest (isOpenRequest در Swift و isPlaceOpenRequest در GooglePlacesSwift) است که براساس زمان مشخصشده در تماس، پاسخی را برمیگرداند که نشان میدهد مکان درحالحاضر باز است یا نه.
این روش یک آرگومان واحد از نوع GMSPlaceIsOpenWithRequest میگیرد که شامل موارد زیر است:
- یک
GMSPlaceشیء، یا رشتهای که شناسه مکان را مشخص میکند. برای اطلاعات بیشتر درباره ایجاد شیء «مکان» با فیلدهای لازم، جزئیات مکان را ببینید.
- یک شیء اختیاری
NSDate(Obj-C) یاDate(Swift) که زمان موردنظر برای بررسی را مشخص میکند. اگر زمانی مشخص نشود، پیشفرض اکنون است. - روش
GMSPlaceOpenStatusResponseCallbackبرای مدیریت پاسخ. >
روش GMSPlaceIsOpenWithRequest مستلزم است که فیلدهای زیر در شیء GMSPlace تنظیم شود:
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
اگر این فیلدها در شیء «مکان» ارائه نشده باشند، یا اگر شناسه مکان را ارسال کنید، این روش از GMSPlacesClient GMSFetchPlaceRequest: برای واکشی آنها استفاده میکند.
پاسخ isOpenWithRequest
isOpenWithRequest یک شیء GMSPlaceIsOpenResponse برمیگرداند که حاوی مقدار بولی بهنام status است که نشان میدهد کسبوکار باز است، بسته است، یا وضعیت آن نامشخص است.
| زبان | مقدار درصورت باز بودن | مقدار درصورت بسته بودن | مقدار درصورت نامشخص بودن وضعیت |
|---|---|---|---|
| Places Swift | true |
false |
nil |
| Swift | .open |
.closed |
.unknown |
| آبجکتیو-سی | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
صدور صورتحساب برای isOpenWithRequest
- فیلدهای
GMSPlacePropertyUTCOffsetMinutesوGMSPlacePropertyBusinessStatusتحت واحد نگهداری موجودی دادههای پایه محاسبه میشوند. بقیه «ساعات کاری» تحت واحد نگهداری کالای سازمانی «جزئیات مکان» محاسبه میشود. - اگر شیء
GMSPlaceشما ازقبل این فیلدها را از درخواست قبلی داشته باشد، دوباره از شما هزینه کسر نخواهد شد.
مثال: درخواست GMSPlaceIsOpenWithRequest بده
مثال زیر نحوه مقداردهی اولیه GMSPlaceIsOpenWithRequest را در شیء GMSPlace موجود نشان میدهد.
کیت توسعه نرمافزار Swift مکانها
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
آبجکتیو-سی
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
پارامترهای الزامی
از شیء GMSPlaceSearchNearbyRequest برای مشخص کردن پارامترهای لازم برای
جستجو استفاده کنید.
-
فهرست فیلد
وقتی جزئیات مکان را درخواست میکنید، باید دادههایی را که میخواهید در شیء
GMSPlaceبرای مکان برگردانده شود بهعنوان ماسک فیلد مشخص کنید. برای تعریف کردن پوشش فیلد، آرایهای از مقادیر را ازGMSPlacePropertyبه شیءGMSPlaceSearchNearbyRequestارسال کنید. ماسک کردن فیلد روش طراحی خوبی است که تضمین میکند دادههای غیرضروری درخواست نکنید، که به جلوگیری از زمان پردازش غیرضروری و هزینههای صورتحساب کمک میکند.یک یا چند فیلد زیر را مشخص کنید:
فیلدهای زیر باعث راهاندازی SKU حرفهای جستجوی اطراف میشوند:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyName
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
GMSPlacePropertyPlaceID
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntranceبرای فهرست کامل فیلدها و «واحد نگهداری کالا» مرتبط با آنها، فیلدهای داده مکان (جدید) را ببینید.
فیلدهای زیر Nearby Search Enterprise SKU را راهاندازی میکنند:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteبرای فهرست کامل فیلدها و «واحد نگهداری کالا» مرتبط با آنها، فیلدهای داده مکان (جدید) را ببینید.
فیلدهای زیر باعث راهاندازی واحد نگهداری کالای Nearby Search Enterprise Plus میشوند:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeoutبرای فهرست کامل فیلدها و «واحد نگهداری کالا» مرتبط با آنها، فیلدهای داده مکان (جدید) را ببینید.
مثال زیر فهرستی از دو مقدار فیلد را برای مشخص کردن اینکه شیء
GMSPlaceبرگرداندهشده توسط درخواست حاوی فیلدهایnameوplaceIDاست ارسال میکند:کیت توسعه نرمافزار Swift مکانها
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
آبجکتیو-سی
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
-
locationRestriction
شیء
GMSPlaceLocationRestrictionکه منطقه جستجو را بهصورت دایرهای تعریف میکند و با نقطه مرکزی و شعاع برحسب متر مشخص میشود. شعاع باید بین ۰٫۰ و ۵۰۰۰۰٫۰ باشد و میتواند این دو عدد را نیز دربر بگیرد. شعاع پیشفرض ۰٫۰ است. باید آن را در درخواستتان روی مقداری بزرگتر از ۰٫۰ تنظیم کنید.
پارامترهای اختیاری
از شیء GMSPlaceSearchNearbyRequest برای مشخص کردن پارامترهای اختیاری برای
جستجو استفاده کنید.
-
includedTypes/excludedTypes، includedPrimaryTypes/excludedPrimaryTypes
به شما امکان میدهد فهرستی از انواع را از انواع جدول A مشخص کنید که برای فیلتر کردن نتایج جستجو استفاده میشود. حداکثر ۵۰ نوع را میتوان در هر دسته محدودیت نوع مشخص کرد.
مکان فقط میتواند یک نوع اصلی از انواع جدول 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": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}را مشخص کنید، مکانهای برگشتی خدمات مرتبط با"restaurant"را ارائه میدهند اما در درجه اول بهعنوان"steak_house"فعالیت نمیکنند.includedTypes
فهرستی از انواع مکانها از جدول الف برای جستجو. اگر این پارامتر حذف شود، مکانهای همه انواع برگردانده میشود.
excludedTypes
فهرست انواع مکان از جدول الف برای کنار گذاشتن از جستجو.
اگر هم
includedTypes(مثل"school") و همexcludedTypes(مثل"primary_school") را در درخواست مشخص کنید، پاسخ شامل مکانهایی میشود که بهعنوان"school"دستهبندی شدهاند اما بهعنوان"primary_school"دستهبندی نشدهاند. پاسخ شامل مکانهایی است که با حداقل یکی ازincludedTypesمطابقت دارد و با هیچکدام ازexcludedTypesمطابقت ندارد.اگر انواع متناقضی وجود داشته باشد، مثلاً نوعی که هم در
includedTypesو هم درexcludedTypesظاهر شود، خطایINVALID_REQUESTبرگردانده میشود.includedPrimaryTypes
فهرستی از انواع مکانهای اصلی از جدول الف برای گنجاندن در جستجو.
excludedPrimaryTypes
فهرست انواع مکان اصلی از جدول A برای کنار گذاشتن از جستجو.
اگر نوعهای اصلی متعارضی وجود داشته باشد، مثلاً نوعی که هم در
includedPrimaryTypesو هم درexcludedPrimaryTypesظاهر شود، خطایINVALID_ARGUMENTبرگردانده میشود. -
maxResultCount
حداکثر تعداد نتایج مکان را برای برگشت مشخص میکند. باید بین ۱ و ۲۰ (پیشفرض) فراگیر باشد.
-
rankPreference
نوع رتبهبندی برای استفاده. اگر این پارامتر حذف شود، نتایج براساس محبوبیت رتبهبندی میشوند. میتواند یکی از موارد زیر باشد:
-
.popularity(پیشفرض) نتایج را براساس محبوبیت آنها مرتب میکند. .distanceنتایج را بهترتیب صعودی براساس فاصلهشان از مکان مشخصشده مرتب میکند.
-
-
regionCode
کد منطقهای که برای قالببندی پاسخ استفاده میشود، بهعنوان مقدار کد CLDR دو نویسهای مشخص شده است. مقدار پیشفرضی وجود ندارد.
اگر نام کشور فیلد
formattedAddressدر پاسخ باregionCodeمطابقت داشته باشد، کد کشور ازformattedAddressحذف میشود. این پارامتر هیچ تأثیری برadrFormatAddressندارد، که همیشه نام کشور را دربرمیگیرد، یا برshortFormattedAddress، که هرگز آن را دربرنمیگیرد.اکثر کدهای CLDR با کدهای ISO 3166-1 یکسان هستند، با چند استثنای قابلتوجه. برای مثال، ccTLD پادشاهی متحد «uk» (.co.uk) است، درحالیکه کد ISO 3166-1 آن «gb» است (ازنظر فنی برای نهاد «پادشاهی متحد بریتانیای کبیر و ایرلند شمالی»). این پارامتر میتواند براساس قانون ذیربط بر نتایج تأثیر بگذارد.
نمایش ارجاعها در برنامه
وقتی برنامهتان اطلاعاتی را که از
GMSPlacesClient بهدست آورده است،
مثل عکسها و مرورها، نمایش میدهد، برنامه باید اسناد اقتباس الزامی را نیز نمایش دهد.
برای مثال، دارایی reviews شیء GMSPlacesClient
شامل آرایهای از حداکثر پنج
شیء GMSPlaceReview
است. هر شیء GMSPlaceReview میتواند شامل ارجاعها و ارجاعهای نویسنده باشد.
اگر مرور را در برنامهتان نمایش میدهید، باید اسناد یا اسناد نویسنده را نیز نمایش دهید.
برای اطلاعات بیشتر، مستندات مربوط به ارجاعها را ببینید.