Places SDK برای iOS (جدید) اطلاعات غنی درباره مکانها، از جمله نام و آدرس مکان، موقعیت جغرافیایی مشخص شده به عنوان مختصات طول و عرض جغرافیایی، نوع مکان (مانند کلوپ شبانه، فروشگاه حیوانات خانگی، موزه) را به برنامه شما ارائه میدهد. و بیشتر برای دسترسی به این اطلاعات برای یک مکان خاص، می توانید از شناسه مکان استفاده کنید، یک شناسه پایدار که به طور منحصر به فرد مکان را شناسایی می کند.
جزئیات مکان را دریافت کنید
کلاس GMSPlace
حاوی اطلاعاتی در مورد یک مکان خاص است، از جمله تمام فیلدهای داده نشان داده شده در Place Data Fields (جدید) . با فراخوانی GMSPlacesClient fetchPlaceWithRequest:
ارسال یک شیء GMSFetchPlaceRequest
و یک روش پاسخ به تماس از نوع GMSPlaceResultCallback
یک شی GMSPlace
دریافت کنید.
شی GMSFetchPlaceRequest
مشخص می کند:
- (الزامی) شناسه مکان ، یک شناسه منحصر به فرد برای یک مکان در پایگاه داده Google Places و در Google Maps.
- (الزامی) فهرست فیلدهایی که باید در شیء
GMSPlace
بازگردانده شوند، که فیلد ماسک نیز نامیده می شود، همانطور که توسطGMSPlaceProperty
تعریف شده است. اگر حداقل یک فیلد را در لیست فیلد مشخص نکنید، یا اگر لیست فیلد را حذف کنید، تماس یک خطا برمیگرداند. - (اختیاری) کد منطقه ای که برای قالب بندی پاسخ استفاده می شود.
- (اختیاری) نشانه جلسه مورد استفاده برای پایان دادن به یک جلسه تکمیل خودکار (جدید).
درخواست جزئیات مکان کنید
این مثال با عبور از پارامترهای زیر یک مکان با شناسه دریافت می کند:
- شناسه مکان
ChIJV4k8_9UodTERU5KXbkYpSYs
. - یک لیست فیلدی که مشخص می کند نام مکان و URL وب سایت را برگرداند.
- یک
GMSPlaceResultCallback
برای رسیدگی به نتیجه.
API روش برگشت تماس مشخص شده را فراخوانی می کند و در یک شی GMSPlace
ارسال می کند. اگر مکان پیدا نشد، شی مکان صفر است.
سویفت
// 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))") })
هدف-C
// 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); } }];
مکانها Swift SDK برای iOS (پیشنمایش)
// 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 }
پاسخ جزئیات مکان
Place Details یک شی GMSPlace
حاوی جزئیات مربوط به مکان را برمی گرداند. فقط فیلدهایی که در لیست فیلد مشخص شده اند در شی GMSPlace
پر می شوند.
وضعیت باز را دریافت کنید
شی GMSPlacesClient
حاوی تابع عضوی به نام isOpenWithRequest
( isOpenRequest
در Swift و isPlaceOpenRequest
در GooglePlacesSwift) است که بر اساس زمان مشخص شده در تماس، پاسخی را نشان می دهد که نشان می دهد مکان در حال حاضر باز است یا خیر.
این روش یک آرگومان واحد از نوع GMSPlaceIsOpenWithRequest
می گیرد که حاوی:
- یک شی
GMSPlace
یا رشته ای که شناسه مکان را مشخص می کند. برای اطلاعات بیشتر در مورد ایجاد شی Place با فیلدهای لازم، جزئیات مکان را ببینید. - یک شیء اختیاری
NSDate
(Obj-C) یاDate
(Swift) که زمانی را که میخواهید بررسی کنید مشخص میکند. اگر زمان مشخص نشده باشد، پیش فرض اکنون است. - یک روش
GMSPlaceOpenStatusResponseCallback
برای رسیدگی به پاسخ. >
متد GMSPlaceIsOpenWithRequest
به فیلدهای زیر نیاز دارد که در شی GMSPlace
تنظیم شوند:
-
GMSPlacePropertyUTCOffsetMinutes
-
GMSPlacePropertyBusinessStatus
-
GMSPlacePropertyOpeningHours
-
GMSPlacePropertyCurrentOpeningHours
-
GMSPlacePropertySecondaryOpeningHours
اگر این فیلدها در شیء Place ارائه نشده باشند، یا اگر شناسه مکان را ارسال کنید، این روش از GMSPlacesClient GMSFetchPlaceRequest:
برای واکشی آنها استفاده می کند.
پاسخ isOpenWithRequest
isOpenWithRequest
یک شی GMSPlaceIsOpenResponse
حاوی یک مقدار بولی به نام status
را برمی گرداند که نشان می دهد کسب و کار باز است، بسته است یا وضعیت ناشناخته است.
زبان | ارزش در صورت باز بودن | ارزش در صورت بسته شدن | در صورت ناشناخته بودن وضعیت، مقدار را تعیین کنید |
---|---|---|---|
سویفت | .open | .closed | .unknown |
هدف-C | GMSPlaceOpenStatusOpen | GMSPlaceOpenStatusClosed | GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (پیش نمایش) | true | false | nil |
صورتحساب برای isOpenWithRequest
- فیلدهای
GMSPlacePropertyUTCOffsetMinutes
وGMSPlacePropertyBusinessStatus
تحت عنوان Basic Data SKU شارژ می شوند. بقیه ساعات کار تحت SKU جزئیات مکان (پیشرفته) شارژ می شود. - اگر شی
GMSPlace
شما قبلاً دارای این فیلدها از درخواست قبلی است، دیگر هزینه ای از شما کسر نخواهد شد.
مثال: یک درخواست GMSPlaceIsOpenWithRequest
ایجاد کنید
مثال زیر نشان می دهد که چگونه یک GMSPlaceIsOpenWithRequest
را در یک شی GMSPlace
موجود مقداردهی کنید. سویفت
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 } }
هدف-C
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 } }];
GooglePlacesSwift
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 }
پارامترهای مورد نیاز
از شی GMSFetchPlaceRequest
برای تعیین پارامترهای مورد نیاز استفاده کنید.
شناسه مکان
شناسه مکان مورد استفاده در Places SDK برای iOS همان شناسهای است که در Places API، Places SDK برای Android و سایر APIهای Google استفاده میشود. هر شناسه مکان می تواند تنها به یک مکان اشاره داشته باشد، اما یک مکان واحد می تواند بیش از یک شناسه مکان داشته باشد.
شرایطی وجود دارد که ممکن است باعث شود یک مکان شناسه مکان جدیدی دریافت کند. برای مثال، اگر یک کسب و کار به مکان جدیدی نقل مکان کند، ممکن است این اتفاق بیفتد.
هنگامی که با تعیین شناسه مکان درخواست مکانی می کنید، می توانید مطمئن باشید که همیشه همان مکان را در پاسخ دریافت خواهید کرد (اگر مکان هنوز وجود دارد). با این حال، توجه داشته باشید که پاسخ ممکن است حاوی شناسه مکانی متفاوت از شناسه درخواست شما باشد.
لیست زمینه
وقتی جزئیات مکان را درخواست میکنید، باید دادههایی را برای بازگرداندن در شی GMSPlace
برای مکان بهعنوان یک فیلد ماسک مشخص کنید. برای تعریف فیلد ماسک آرایه ای از مقادیر را از GMSPlaceProperty
به شی GMSFetchPlaceRequest
ارسال کنید. پوشاندن میدان یک روش طراحی خوب برای اطمینان از عدم درخواست دادههای غیرضروری است که به جلوگیری از زمان پردازش غیرضروری و هزینههای صورتحساب کمک میکند.
یک یا چند مورد از فیلدهای زیر را مشخص کنید:
فیلدهای زیر SKU جزئیات مکان (فقط شناسه) را فعال می کنند:
GMSPlacePropertyPlaceID
،GMSPlacePropertyName
،GMSPlacePropertyPhotos
فیلدهای زیر SKU جزئیات مکان (فقط مکان) را فعال می کنند:
GMSPlacePropertyAddressComponents
،GMSPlacePropertyFormattedAddress
،GMSPlacePropertyCoordinate
،GMSPlacePropertyPlusCode
،GMSPlacePropertyTypes
،GMSPlacePropertyViewport
فیلدهای زیر SKU جزئیات مکان (پایه) را فعال می کنند:
GMSPlacePropertyBusinessStatus
،GMSPlacePropertyIconBackgroundColor
،GMSPlacePropertyIconImageURL
،GMSPlacePropertyUTCOffsetMinutes
،GMSPlacePropertyWheelchairAccessibleEntrance
فیلدهای زیر SKU جزئیات مکان (پیشرفته) را فعال می کنند:
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
فیلدهای زیر SKU جزئیات مکان (ترجیحا) را فعال می کنند:
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
lacePropertyServesBrunch ,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyTakeout
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
مثال زیر لیستی از دو مقدار فیلد را ارسال می کند تا مشخص کند که شی GMSPlace
که توسط یک درخواست بازگردانده شده است حاوی فیلدهای name
و placeID
باشد:
سویفت
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
هدف-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
مکانها Swift SDK برای iOS (پیشنمایش)
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
پارامترهای اختیاری
از شی GMSFetchPlaceRequest
برای تعیین پارامترهای اختیاری استفاده کنید.
منطقه کد
کد منطقه ای که برای قالب بندی پاسخ استفاده می شود، به عنوان مقدار کد CLDR دو کاراکتری مشخص شده است. این پارامتر همچنین می تواند یک اثر سوگیری در نتایج جستجو داشته باشد. هیچ مقدار پیش فرض وجود ندارد.
اگر نام کشور فیلد آدرس در پاسخ با کد منطقه مطابقت داشته باشد، کد کشور از آدرس حذف می شود.
اکثر کدهای CLDR با کدهای ISO 3166-1 یکسان هستند، با برخی استثناهای قابل توجه. برای مثال، ccTLD بریتانیا "uk" (.co.uk) است در حالی که کد ISO 3166-1 آن "gb" است (از لحاظ فنی برای نهاد "پادشاهی متحده بریتانیای کبیر و ایرلند شمالی"). این پارامتر می تواند بر نتایج بر اساس قانون قابل اجرا تأثیر بگذارد.
sessionToken
نشانههای جلسه رشتههایی هستند که توسط کاربر ایجاد میشوند که تماسهای تکمیل خودکار (جدید) را بهعنوان «جلسه» دنبال میکنند. تکمیل خودکار (جدید) از نشانههای جلسه برای گروهبندی پرس و جو و قرار دادن مراحل انتخاب جستجوی تکمیل خودکار کاربر در یک جلسه مجزا برای اهداف صورتحساب استفاده میکند. نشانههای جلسه به فراخوانهای جزئیات مکان (جدید) ارسال میشوند که پس از تماسهای تکمیل خودکار (جدید). برای اطلاعات بیشتر، نشانههای جلسه را ببینید.
اسناد را در برنامه خود نمایش دهید
هنگامی که برنامه شما اطلاعات به دست آمده از GMSPlacesClient
را نمایش می دهد، مانند عکس ها و نظرات، برنامه باید اسناد مورد نیاز را نیز نمایش دهد.
برای مثال، ویژگی reviews
شی GMSPlacesClient
حاوی آرایه ای از حداکثر پنج شی GMSPlaceReview
است. هر شیء GMSPlaceReview
میتواند حاوی اسناد و اعتبارات نویسنده باشد. اگر نظر را در برنامه خود نمایش دهید، باید هر گونه انتساب یا منبع نویسنده را نیز نمایش دهید.
برای اطلاعات بیشتر، به اسناد مربوط به اسناد مراجعه کنید.