באמצעות Places SDK ל-iOS, אפשר לגלות את המיקום שבו המכשיר נמצא כרגע. כלומר, המקום במיקום הנוכחי של המכשיר. דוגמאות למקומות: עסקים מקומיים, נקודות עניין ומיקומים גיאוגרפיים.
שליחת בקשה להרשאת מיקום
אם האפליקציה שלכם משתמשת ב-
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, היא צריכה לבקש הרשאה לשימוש בשירותי המיקום. מוסיפים את המפתח NSLocationWhenInUseUsageDescription
לקובץ Info.plist
כדי להגדיר את המחרוזת שבה יצוין למשתמש למה אתם זקוקים לשירותי המיקום. לדוגמה:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
אם רוצים להתקשר אל
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
כשהאפליקציה פועלת ברקע, בלי להציג תיבת דו-שיח לאישור, צריך לבצע את הפעולות הבאות לפני ביצוע השיחה:
- מוסיפים את המפתח
NSLocationAlwaysUsageDescription
לקובץInfo.plist
. - צריך לקרוא ל-
requestAlwaysAuthorization
בכל מופע שלCLLocationManager
לפני שמפעילים את השיטה.
שולחים בקשת הרשאה ל-CLLocationManager
באופן הבא:
locationManager.requestAlwaysAuthorization()
[self.locationManager requestAlwaysAuthorization];
אחזור המיקום הנוכחי
כדי למצוא את העסק המקומי או מקום אחר שבו המכשיר נמצא כרגע, צריך להתקשר למספר GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
. צריך לכלול את הפרמטרים הבאים:
GMSPlaceField
אחד או יותר, שמציינים אילו סוגי נתונים יוחזרו. אם משמיטים את הפרמטר הזה, כל השדות האפשריים יוחזרו והחיוב יהיה בהתאם. ההנחיה הזו חלה רק על בקשות לפרטים של מקומות.- שיטת קריאה חוזרת לטיפול בתוצאות.
השדות תואמים לתוצאות של חיפוש מקומות, והם מחולקים לשלוש קטגוריות חיוב: בסיסי, יצירת קשר ואווירה. שדות בסיסיים מחויבים לפי התעריף הבסיסי, ללא חיובים נוספים. החיוב על השדות 'אנשי קשר' ו'אטמוספירה' גבוה יותר. למידע נוסף על החיוב על בקשות לנתוני מקומות, ראו שימוש וחיוב.
ה-API מפעיל את שיטת הקריאה החוזרת שצוינה, ומחזיר מערך של אובייקטים מסוג GMSPlaceLikelihood
.
כל אובייקט GMSPlaceLikelihood
מייצג מקום. לכל מקום, התוצאה כוללת אינדיקציה לגבי הסבירות שהמקום הוא הנכון. ככל שהערך גבוה יותר, כך הסבירות שהמקום הוא ההתאמה הטובה ביותר גבוהה יותר. המאגר עשוי להיות ריק אם אין מקום ידוע שתואם למיקום המכשיר.
בדוגמת הקוד הבאה מתבצעת אחזור של רשימת המקומות שבהם סביר להניח שהמכשיר נמצא, והשם והסבירות של כל מקום מתועדים ביומן.
// Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: { (placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let placeLikelihoodList = placeLikelihoodList { for likelihood in placeLikelihoodList { let place = likelihood.place print("Current Place name \(String(describing: place.name)) at likelihood \(likelihood.likelihood)") print("Current PlaceID \(String(describing: place.placeID))") } } })
// Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:fields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (likelihoods != nil) { for (GMSPlaceLikelihood *likelihood in likelihoods) { GMSPlace *place = likelihood.place; NSLog(@"Current place name: %@", place.name); NSLog(@"Place ID: %@", place.placeID); } } }];
הערות לגבי ערכי הסבירות:
- הערך של הסבירות מייצג את ההסתברות היחסית של המקום להיות ההתאמה הטובה ביותר ברשימת המקומות שמוחזרים עבור בקשה אחת. אי אפשר להשוות בין רמות הסבירות של בקשות שונות.
- הערך של הסבירות יהיה בין 0 ל-1.0.
- סכום הסבירויות במערך המוחזר של אובייקטים מסוג
GMSPlaceLikelihood
הוא תמיד קטן מ-1.0 או שווה לו. לתשומת ליבכם: הסכום לא חייב להיות 1.0.
לדוגמה, כדי לייצג הסתברות של 55% שהמקום הנכון הוא מקום א', והסתברות של 35% שהוא מקום ב', מערך ההסתברויות יכלול שני רכיבים: מקום א' עם הסתברות של 0.55 ומקום ב' עם הסתברות של 0.35.
הצגת שיוך באפליקציה
כשהאפליקציה מציגה מידע שהתקבל מ-GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, היא חייבת גם להציג שיוך (Attribution). מידע נוסף על שיוך