توفّر حزمة تطوير البرامج (SDK) للأماكن لنظام التشغيل iOS لتطبيقك معلومات غنية عن الأماكن، بما في ذلك اسم المكان وعنوانه والموقع الجغرافي المحدّد كإحداثيات خطوط العرض/الطول ونوع المكان (مثل نادٍ ليلي ومتجر حيوانات أليفة ومتحف) وغير ذلك. للوصول إلى هذه المعلومات لمكان معيّن، يمكنك استخدام رقم تعريف المكان، وهو معرّف ثابت يحدّد مكانًا بشكل فريد.
تفاصيل المكان
توفّر فئة GMSPlace معلومات عن مكان معيّن. يمكنك الحصول على عنصر
GMSPlace
بالطرق التالية:
- الاتصال بـ
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:اطّلِع على دليل الحصول على المكان الحالي. - استدعِ
GMSPlacesClient fetchPlaceFromPlaceID:، مع تمريرGMSPlaceFieldورقم تعريف المكان وطريقة رد الاتصال. بالنسبة إلى طلبات "تفاصيل المكان"، إذا لم تحدّد حقلاً واحدًا على الأقل في الطلب، أو إذا حذفت المَعلمةfieldsمن الطلب، سيتم عرض جميع الحقول الممكنة، وسيتم تحصيل الرسوم منك وفقًا لذلك. اطّلِع على دليل الحصول على مكان باستخدام المعرّف.
عند طلب مكان، يجب تحديد أنواع بيانات المكان التي تريد عرضها. لإجراء ذلك، عليك تمرير GMSPlaceField، مع تحديد أنواع البيانات التي تريد عرضها. وهذا أمر مهم، لأنّه سيؤثر في
تكلفة كل طلب.
بما أنّ نتائج بيانات الأماكن لا يمكن أن تكون فارغة، يتم عرض نتائج الأماكن التي تتضمّن بيانات فقط (على سبيل المثال، إذا لم يتضمّن المكان المطلوب أي صور، لن يظهر الحقل photos في النتيجة).
يمرّر المثال التالي قائمة تتضمّن قيمتَي حقل لتحديد البيانات التي يعرضها الطلب:
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
مزيد من المعلومات حول حقول الأماكن لمزيد من المعلومات حول كيفية فوترة طلبات بيانات الأماكن، يُرجى الاطّلاع على الاستخدام والفوترة.
يمكن أن تحتوي فئة
GMSPlace
على بيانات المكان التالية:
-
name: اسم المكان -
editorialSummary: يقدّم وصفًا لمكان معيّن. -
placeID: المعرّف النصي للمكان يمكنك الاطّلاع على مزيد من المعلومات عن أرقام تعريف الأماكن في بقية هذه الصفحة. -
coordinate: الموقع الجغرافي للمكان، محدّدًا بإحداثيات خطوط العرض والطول phoneNumber: رقم هاتف المكان بالتنسيق الدولي-
formattedAddress: العنوان الذي يمكن لشخص عادي قراءته لهذا الموقع الجغرافيغالبًا ما يكون هذا العنوان مكافئًا للعنوان البريدي. يُرجى العِلم أنّ بعض البلدان، مثل المملكة المتحدة، لا تسمح بتوزيع العناوين البريدية الصحيحة بسبب القيود المفروضة على الترخيص.
يتكوّن العنوان المنسَّق منطقيًا من مكوّن عنوان واحد أو أكثر. على سبيل المثال، يتألف العنوان "111 8th Avenue, New York, NY" من المكوّنات التالية: "111" (رقم الشارع) و"8th Avenue" (الطريق) و"New York" (المدينة) و "NY" (الولاية الأمريكية).
لا تحلّل العنوان المنسَّق آليًا. بدلاً من ذلك، يجب استخدام مكوّنات العنوان الفردية التي يتضمّنها ردّ من واجهة برمجة التطبيقات بالإضافة إلى حقل العنوان المنسَّق.
-
openingHours: ساعات العمل في المكان (كما يتم تمثيلها من خلالGMSOpeningHours). يمكنك استدعاءGMSOpeningHours.weekdayTextللحصول على قائمة بالسلاسل المترجَمة لساعات العمل اليومية خلال الأسبوع. يمكنك استدعاءGMSOpeningHours.Periodsلعرض قائمة بـGMSPeriodمع معلومات أكثر تفصيلاً مكافئة للبيانات التي يوفّرهاweekdayText. ملاحظة: إذا كان المكان مفتوحًا دائمًا، يتم تمثيل الفترة الزمنية على أنّها الأحد في منتصف الليل، وتكون قيمةcloseEventفارغة. -
currentOpeningHoursوsecondaryOpeningHours: حقلان يتضمّنان التغييرات المؤقتة والتغييرات في العطلات على الجدول الزمني لمكان معيّن
addressComponents: مصفوفة من عناصرGMSAddressComponentتمثّل مكوّنات عنوان مكان معيّن يتم توفير هذه المكوّنات بغرض استخراج معلومات منظَّمة حول عنوان مكان معيّن، مثل العثور على المدينة التي يقع فيها المكان. لا تستخدِم هذه المكوّنات لتنسيق العنوان، بل استخدِم السمةformattedAddressالتي توفّر عنوانًا منسّقًا ومترجمًا.يُرجى مراعاة النقاط التالية بشأن مصفوفة
addressComponents:- قد تحتوي مصفوفة مكوّنات العنوان على مكوّنات أكثر من
formattedAddress. - لا تتضمّن المصفوفة بالضرورة جميع الكيانات السياسية التي تحتوي على عنوان، باستثناء تلك المضمّنة في
formattedAddress. - لا نضمن بقاء تنسيق الردّ كما هو بين الطلبات. وبشكل خاص، يختلف عدد
addressComponentsاستنادًا إلى العنوان المطلوب، ويمكن أن يتغيّر بمرور الوقت للعنوان نفسه. يمكن أن يغيّر المكوّن موضعه في الصفيفة. يمكن أن يتغيّر نوع المكوّن. قد لا يتوفّر مكوّن معيّن في ردّ لاحق.
- قد تحتوي مصفوفة مكوّنات العنوان على مكوّنات أكثر من
userRatingsTotal: يمثّل عدد المراجعات التي يتألف منها تقييم المكان.
تحتوي الفئة
GMSPlace
على الدوال التالية:
-
يحتسب
isOpenما إذا كان المكان مفتوحًا في الوقت المحدّد، استنادًا إلىopeningHoursوUTCOffsetMinutes، والتاريخ والوقت الحاليين. - تحسب السمة
isOpenAtDateما إذا كان المكان مفتوحًا في تاريخ معيّن، استنادًا إلىopeningHoursوUTCOffsetMinutesوالتاريخ والوقت الحاليَين.
عند استخدام هذه الدوال للحصول على أوقات و/أو تواريخ العمل، يجب أن يحدّد طلب fetchPlaceFromPlaceID: أو findPlaceLikelihoodsFromUserLocationWithPlaceFields: الأصلي كلاً من الحقلَين GMSPlaceFieldOpeningHours وGMSPlaceFieldUTCOffsetMinutes. إذا لم يتوفّر أي من هذين الحقلَين، لن يحتوي عنصر GMSPlace الناتج على أوقات أو تواريخ العمل، وسيتم عرض GMSPlaceOpenStatusUnknown. للحصول على نتائج دقيقة، اطلب
الحقلَين GMSPlaceFieldBusinessStatus وGMSPlaceFieldUTCOffsetMinutes
في طلب المكان الأصلي. وإذا لم يتم طلب ذلك، يُفترض أنّ المؤسسة تعمل.
isOpen مع تفاصيل المكان، يُرجى الاطّلاع على فيديو كيفية الحصول على ساعات العمل .
الحصول على ساعات عمل استثنائية
يتم الحصول على ساعات العمل العادية من خلالopeningHours، بينما يتيح currentOpeningHours وsecondaryOpeningHours إجراء تغييرات على الجدول الزمني المؤقت وفي العطلات.
ويمكن فلترة ساعات العمل الاستثنائية لهذه الأيام الخاصة وعرضها إذا كانت متاحة.
Swift
func examineOpeningHours(place: GMSPlace) { // Check if the current opening hours contains a special day that has exceptional hours guard let currentOpeningHours = place.currentOpeningHours else { return } if let specialDays = currentOpeningHours.specialDays { guard !specialDays.isEmpty else { return } if let specialDay = specialDays.filter { $0.isExceptional }.first { // Indicate exceptional hours } } // Check if current opening hours contains a truncated time period let periods = currentOpeningHours.periods if !periods.isEmpty { for period in periods { let open = period.open let close = period.close if let open = open { let date = open.date if open.isTruncated { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available let secondaryOpeningHours = place.secondaryOpeningHours guard let hoursType = secondaryOpeningHours.first?.hoursType else { return } if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Objective-C
- (void)examineOpeningHours:(GMSPlace *) place { // Check if the current opening hours contains a special day that has exceptional hours GMSOpeningHours *currentOpeningHours = place.currentOpeningHours; if (currentOpeningHours != nil) { NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays; if ([specialDays count] != 0) { for (GMSPlaceSpecialDay *specialDay in specialDays) { NSDate *date = specialDay.date; if ([specialDay isExceptional]) { // Indicate exceptional hours } } } } // Check if current opening hours contains a truncated time period NSArray <GMSPeriod *> * periods = currentOpeningHours.periods; if ([periods count] != 0) { for (GMSPeriod * period in periods) { GMSTimeOfWeek *open = period.open; GMSTimeOfWeek *close = period.close; if (open) { if ([open isTruncated]) { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours; GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType; if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
الحصول على مكان حسب رقم التعريف
رقم تعريف المكان هو معرّف نصي يحدّد مكانًا بشكل فريد. في حزمة تطوير برامج الأماكن لأجهزة iOS، يمكنك استرداد معرّف مكان من عنصر GMSPlace. يمكنك تخزين رقم تعريف المكان واستخدامه لاسترداد عنصر
GMSPlace
مرة أخرى لاحقًا.
للحصول على مكان حسب رقم التعريف، يمكنك استدعاء
GMSPlacesClient
fetchPlaceFromPlaceID:، مع تمرير المَعلمات التالية:
- سلسلة تحتوي على رقم تعريف المكان
- تمثّل هذه المَعلمة مَعلمة
GMSPlaceFieldواحدة أو أكثر تحدّد أنواع البيانات المطلوب عرضها. - رمز مميز للجلسة إذا تم إجراء الطلب لإنهاء طلب بحث باستخدام ميزة "الإكمال التلقائي" بخلاف ذلك، مرِّر nil.
-
GMSPlaceResultCallbackلمعالجة النتيجة
تستدعي واجهة برمجة التطبيقات طريقة ردّ الاتصال المحدّدة، وتمرّر عنصر GMSPlace. إذا لم يتم العثور على المكان، يكون عنصر المكان فارغًا.
حزمة تطوير البرامج (SDK) لـ Places Swift لأجهزة iOS
// Initialize Places Swift Client. let placesClient = PlacesClient.shared // A hotel in Saigon with an attribution let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Fetch Place Request. let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.displayName] ) Task { switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): print("The selected place is: \(place.displayName): \(String(describing: place.description))") case .failure(let placesError): print("Place not found: \(placeID); \(placesError)") } }
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
عرض معلومات تحديد المصدر في تطبيقك
عندما يعرض تطبيقك معلومات تم الحصول عليها من
GMSPlacesClient
lookUpPlaceID:callback:، يجب أن يعرض التطبيق أيضًا معلومات تحديد المصدر.
يمكنك الاطّلاع على المستندات حول عمليات تحديد المصدر.
مزيد من المعلومات عن أرقام تعريف الأماكن
رقم تعريف المكان المستخدَم في حزمة تطوير البرامج بالاستناد إلى الموقع الجغرافي لنظام التشغيل iOS هو المعرّف نفسه المستخدَم في Places API وحزمة تطوير البرامج بالاستناد إلى الموقع الجغرافي لنظام التشغيل Android وواجهات Google APIs الأخرى.
يمكن أن يشير كل رقم تعريف مكان إلى مكان واحد فقط، ولكن يمكن أن يكون لمكان واحد أكثر من رقم تعريف مكان واحد.
هناك ظروف قد تؤدي إلى حصول مكان على رقم تعريف جديد. على سبيل المثال، قد يحدث ذلك إذا انتقلت مؤسسة إلى موقع جغرافي جديد.
عند طلب مكان من خلال تحديد رقم تعريف المكان، يمكنك التأكّد من أنّك ستتلقّى دائمًا المكان نفسه في الردّ (إذا كان المكان لا يزال موجودًا). ومع ذلك، يُرجى العِلم أنّ الردّ قد يحتوي على رقم تعريف مكان مختلف عن الرقم الوارد في طلبك.
لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على رقم تعريف المكان.