«کیت توسعه نرمافزار مکانها برای iOS» (جدید) اطلاعات غنیای درباره مکانها دراختیار برنامهتان قرار میدهد، ازجمله نام و نشانی مکان، مکان جغرافیایی مشخصشده بهصورت مختصات طول/عرض جغرافیایی، نوع مکان (مثل کلوپ شبانه، فروشگاه حیوانات خانگی، موزه)، و موارد دیگر. برای دسترسی به این اطلاعات برای مکانی خاص، میتوانید از شناسه مکان استفاده کنید، شناسه پایداری که مکان را بهصورت یکتا شناسایی میکند.
دریافت جزئیات مکان
این
GMSPlace
کلاس حاوی اطلاعاتی درباره مکان خاصی است، ازجمله همه فیلدهای داده نشاندادهشده در
فیلدهای داده مکان (جدید). با فراخوانی
GMSPlacesClient
fetchPlaceWithRequest:،
ارسال شیء GMSFetchPlaceRequest، و
روش فراخوانی از نوع
GMSPlaceResultCallback،
شیء GMSPlace
دریافت کنید.
شیء GMSFetchPlaceRequest مشخص میکند:
- (الزامی) شناسه مکان، شناسه یکتایی برای مکان در پایگاه داده Google Places و در Google Maps.
- (الزامی) فهرست فیلدهایی که باید در شیء
GMSPlaceبرگردانده شود، که به آن پوشش فیلد نیز گفته میشود، همانطور که توسطGMSPlacePropertyتعریف شده است. اگر حداقل یک فیلد را در فهرست فیلد مشخص نکنید، یا اگر فهرست فیلد را حذف کنید، تماس خطا برمیگرداند. - (اختیاری) کد منطقهای که برای قالببندی پاسخ استفاده میشود.
- (اختیاری) کد جلسه استفادهشده برای پایان دادن به جلسه «تکمیل خودکار (جدید)».
درخواست «جزئیات مکان» ایجاد کنید
این مثال مکان را براساس شناسه دریافت میکند و پارامترهای زیر را ارسال میکند:
- شناسه مکان
ChIJV4k8_9UodTERU5KXbkYpSYs. - فهرست فیلدی که مشخص میکند نام مکان و نشانی وبسایت برگردانده شود.
GMSPlaceResultCallbackبرای مدیریت نتیجه.
«میانای برنامهسازی کاربردی» روش فراخوانی مشخصشده را فرا میخواند و
GMSPlace
شیئی را به آن منتقل میکند. اگر مکان پیدا نشود، شیء مکان تهی است.
کیت توسعه نرمافزار Swift مکانها
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.name, .website] ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): // Handle place case .failure(let placesError): // Handle error }
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue} // Create the GMSFetchPlaceRequest object. let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil) client.fetchPlace(with: fetchPlaceRequest, callback: { (place: GMSPlace?, error: Error?) in guard let place, error == nil else { return } print("Place found: \(String(describing: place.name))") })
آبجکتیو-سی
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite]; // Create the GMSFetchPlaceRequest object. GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil]; [placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { NSLog(@"Place Found: %@", place.name); NSLog(@"The place URL: %@", place.website); } }];
پاسخ «جزئیات جا»
«جزئیات مکان» یک
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 موجود نشان میدهد.
کیت توسعه نرمافزار Places 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 } }];
پارامترهای الزامی
از شیء GMSFetchPlaceRequest برای مشخص کردن پارامترهای الزامی استفاده کنید.
شناسه مکان
شناسه مکان استفادهشده در «کیت توسعه نرمافزار مکانها برای iOS» همان شناسه استفادهشده در «میانای برنامهسازی کاربردی مکانها»، «کیت توسعه نرمافزار مکانها برای Android»، و دیگر «میاناهای برنامهسازی کاربردی Google» است. هر شناسه مکان فقط میتواند به یک مکان اشاره کند، اما یک مکان میتواند بیشاز یک شناسه مکان داشته باشد.
شرایطی وجود دارد که ممکن است باعث شود مکانی شناسه مکان جدیدی دریافت کند. برای مثال، این اتفاق ممکن است زمانی رخ دهد که کسبوکار به مکان جدیدی منتقل شود.
وقتی مکانی را با مشخص کردن شناسه مکان درخواست میکنید، میتوانید مطمئن باشید که همیشه همان مکان را در پاسخ دریافت خواهید کرد (اگر مکان هنوز وجود داشته باشد). توجه داشته باشید که پاسخ ممکن است حاوی شناسه مکانی باشد که با شناسه مکان موجود در درخواست شما متفاوت است.
فهرست فیلد
وقتی جزئیات مکان را درخواست میکنید، باید دادههایی را که باید در
شیء GMSPlace برای مکان بهعنوان ماسک فیلد برگردانده شود مشخص کنید. برای تعریف کردن پوشش فیلد،
آرایهای از مقادیر از
GMSPlaceProperty
به شیء GMSFetchPlaceRequest ارسال کنید.
پوشاندن فیلد یک روش طراحی خوب است که مطمئن شوید دادههای غیرضروری را درخواست نمیکنید، که به اجتناب از زمان پردازش غیرضروری و هزینههای صورتحساب کمک میکند.
یک یا چند فیلد زیر را مشخص کنید:
فیلدهای زیر شناسه «ملزومات جزئیات مکان» فقط با واحد نگهداری کالا را راهاندازی میکنند:
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotosبرای مشاهده فهرست کامل فیلدها و SKUهای مرتبط با آنها، به فیلدهای داده مکان (جدید) مراجعه کنید.
فیلدهای زیر باعث راهاندازی واحد نگهداری موجودی ضروریات جزئیات مکان میشوند:
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewportبرای فهرست کامل فیلدها و «واحد نگهداری کالا» مرتبط با آنها، فیلدهای داده مکان (جدید) را ببینید.
فیلدهای زیر واحد نگهداری کالا حرفهای جزئیات مکان را راهاندازی میکنند:
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntranceبرای فهرست کامل فیلدها و «واحد نگهداری کالا» مرتبط با آنها، فیلدهای داده مکان (جدید) را ببینید.
فیلدهای زیر واحد نگهداری کالا حرفهای جزئیات مکان را راهاندازی میکنند:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteبرای فهرست کامل فیلدها و «واحد نگهداری کالا» مرتبط با آنها، فیلدهای داده مکان (جدید) را ببینید.
فیلدهای زیر واحد نگهداری موجودی سازمانی جزئیات مکان را راهاندازی میکنند:
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];
پارامترهای اختیاری
از شیء GMSFetchPlaceRequest برای مشخص کردن پارامترهای اختیاری استفاده کنید.
regionCode
کد منطقه استفادهشده برای قالببندی پاسخ، که بهعنوان مقدار کد CLDR دو نویسهای مشخص شده است. این پارامتر همچنین میتواند تأثیر جانبداری بر نتایج جستجو داشته باشد. مقدار پیشفرضی وجود ندارد.
اگر نام کشور فیلد نشانی در پاسخ با کد منطقه مطابقت داشته باشد، کد کشور از نشانی حذف میشود.
اکثر کدهای CLDR با کدهای ISO 3166-1 یکسان هستند، با چند استثنای قابلتوجه. برای مثال، ccTLD پادشاهی متحد «uk» (.co.uk) است، درحالیکه کد ISO 3166-1 آن «gb» است (ازنظر فنی برای نهاد «پادشاهی متحد بریتانیای کبیر و ایرلند شمالی»). این پارامتر میتواند براساس قانون ذیربط بر نتایج تأثیر بگذارد.
sessionToken
کدهای جلسه رشتههای تولیدشده توسط کاربر هستند که تماسهای «تکمیل خودکار» (جدید) را بهعنوان «جلسه» پیگیری میکنند. «تکمیل خودکار» (جدید) از نشانهای جلسه برای گروهبندی مراحل انتخاب مکان و پُرسمان جستجوی تکمیل خودکار کاربر در یک جلسه مجزا برای اهداف صدور صورتحساب استفاده میکند. کدهای جلسه به تماسهای «جزئیات مکان (جدید)» که پساز تماسهای «تکمیل خودکار (جدید)» برقرار میشوند منتقل میشوند. برای اطلاعات بیشتر، به نشانه های جلسه مراجعه کنید.
نمایش ارجاعها در برنامه
وقتی برنامهتان اطلاعاتی را که از
GMSPlacesClient بهدست آورده است،
مثل عکسها و مرورها، نمایش میدهد، برنامه باید اسناد اقتباس الزامی را نیز نمایش دهد.
برای مثال، دارایی reviews شیء GMSPlacesClient
شامل آرایهای از حداکثر پنج
شیء GMSPlaceReview
است. هر شیء GMSPlaceReview میتواند شامل ارجاعها و ارجاعهای نویسنده باشد.
اگر مرور را در برنامهتان نمایش میدهید، باید اسناد یا اسناد نویسنده را نیز نمایش دهید.
برای اطلاعات بیشتر، مستندات مربوط به ارجاعها را ببینید.