Places 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);
מידע נוסף על place fields. לקבלת מידע נוסף על אופן החיוב של בקשות לנתוני מקום, ראה שימוש וחיוב.
GMSPlace
הכיתה יכולה להכיל את נתוני המקום הבאים:
name
– שם המקום.editorialSummary
– תיאור פשוט של המקום.placeID
– המזהה הטקסטואלי של המקום. נקראו מידע נוסף על מזהי מקומות מופיע בהמשך הדף.coordinate
– המיקום הגיאוגרפי של המקום, שצוינו כקואורדינטות של קו אורך וקו רוחב.phoneNumber
– מספר הטלפון של המקום, במטבע בפורמט בינלאומי.formattedAddress
– הכתובת של האיש הזה שקריא לאנשים המיקום.בדרך כלל הכתובת הזאת מקבילה לכתובת הדואר. שימו לב: למשל בריטניה, לא מאפשרות הפצה של כתובות למשלוח דואר עקב הגבלות רישוי.
הכתובת המעוצבת מורכבת באופן לוגי מכתובת אחת או יותר רכיבים. לדוגמה, הכתובת "שדרות רוטשילד 11, תל אביב" מורכב מהרכיבים הבאים: "111" (מספר הרחוב), "8th Avenue" (השדרה 8) (המסלול), "תל אביב" (העיר) ו-"NY" (מדינה בארה"ב).
אין לנתח את הכתובת בפורמט פרוגרמטית. במקום זאת, צריך להשתמש את רכיבי הכתובת הנפרדים, שתגובת ה-API כוללת לשדה הכתובת בפורמט המתאים.
openingHours
– שעות הפתיחה של המקום (למשל שמיוצגת על ידיGMSOpeningHours
). שיחת טלפוןGMSOpeningHours.weekdayText
לקבלת רשימה של מחרוזות שהותאמו לשוק המקומי של שעות הפתיחה היומיות במהלך השבוע. חיוג למספרGMSOpeningHours.Periods
כדי להחזיר רשימה שלGMSPeriod
עם מידע מפורט יותר שמקביל לנתונים שסופקו על ידיweekdayText
. הערה: אם מקום תמיד פתוח, תקופת הזמן מיוצגת בתור יום ראשון בחצות, והערךcloseEvent
הוא null.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 } }
חיפוש מקום לפי תעודה מזהה
מזהה מקום הוא מזהה טקסטואלי שמזהה מקום באופן ייחודי. לחשבון
Places SDK ל-iOS, אפשר לאחזר את המזהה של מקום
GMSPlace
לאובייקט. אפשר לשמור את מזהה המקום ולהשתמש בו כדי לאחזר את
GMSPlace
את האובייקט מאוחר יותר.
כדי לקבל מקום לפי תעודה מזהה, צריך להתקשר
GMSPlacesClient
fetchPlaceFromPlaceID:
, מעבירים את הפרמטרים הבאים:
- מחרוזת שמכילה מזהה מקום.
- אחד או יותר מסוג '
GMSPlaceField
', שמציין את סוגי הנתונים שיוחזרו. - אסימון סשן אם נשלחת הקריאה להשלמת שאילתה של השלמה אוטומטית. אחרת, מעבירים nil.
GMSPlaceResultCallback
לטיפול בתוצאה.
ה-API מפעיל את שיטת הקריאה החוזרת שצוינה ומעביר
GMSPlace
לאובייקט. אם המקום לא נמצא, אובייקט המקום הוא אפס.
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:
, האפליקציה צריכה להציג גם ייחוסים.
אפשר לעיין במסמכים בנושא
שיוכים.
מידע נוסף על מזהי מקומות
מזהה המקום שנעשה בו שימוש ב-Places SDK ל-iOS זהה למזהה בשימוש Places API, Places SDK ל-Android ו-Google APIs אחרים.
כל מזהה מקום יכול להתייחס למקום אחד בלבד, אבל למקום אחד יכולים להיות יותר ממזהה מקום אחד.
יש נסיבות מסוימות שעשויות לגרום למקום לקבל מזהה חדש של מקום. לדוגמה, מצב כזה יכול לקרות אם עסק עובר למיקום חדש.
כשמבקשים מקום באמצעות ציון מזהה של מקום, אפשר להיות בטוחים תמיד תקבלו את אותו מקום בתשובה (אם המקום עדיין קיים). עם זאת, שים לב שהתשובה עשויה להכיל מזהה מקום שונה מזה שצוין בבקשה.
מידע נוסף זמין במאמר סקירה כללית על מזהה המקום.