המיקום הנוכחי

באמצעות Places SDK ל-iOS, אפשר לגלות את המיקום שבו המכשיר נמצא כרגע. כלומר, המקום במיקום הנוכחי של המכשיר. דוגמאות למקומות: עסקים מקומיים, נקודות עניין ומיקומים גיאוגרפיים.

  1. שליחת בקשה להרשאת מיקום
  2. מגבלות שימוש
  3. קבלת המיקום הנוכחי
  4. הצגת שיוך (Attribution) באפליקציה

שליחת בקשה להרשאת מיקום

אם האפליקציה שלכם משתמשת ב- GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, היא צריכה לבקש הרשאה לשימוש בשירותי המיקום. מוסיפים את המפתח NSLocationWhenInUseUsageDescription לקובץ Info.plist כדי להגדיר את המחרוזת שבה יצוין למשתמש למה אתם זקוקים לשירותי המיקום. לדוגמה:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Show your location on the map</string>

אם רוצים להתקשר אל findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: כשהאפליקציה פועלת ברקע, בלי להציג תיבת דו-שיח לאישור, צריך לבצע את הפעולות הבאות לפני ביצוע השיחה:

  1. מוסיפים את המפתח NSLocationAlwaysUsageDescription לקובץ Info.plist.
  2. צריך לקרוא ל-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). מידע נוסף על שיוך