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

בחירת פלטפורמה: Android iOS

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

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

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

אם האפליקציה משתמשת ב- 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 באופן הבא:

Swift

    locationManager.requestAlwaysAuthorization()
    

Objective-C

    [self.locationManager requestAlwaysAuthorization];
    

מקבל את המיקום הנוכחי

כדי למצוא את העסק המקומי או מקום אחר שבו המכשיר נמצא כרגע, יש להתקשר למספר GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. עליך לכלול את הפרמטרים הבאים:

  • GMSPlaceField או יותר, ציון סוגי הנתונים שיש להחזיר. אם משמיטים את הפרמטר הזה, מוחזרים כל השדות האפשריים, והחיוב מתבצע בהתאם. הדבר חל רק על בקשות של פרטי מקום.
  • שיטה לקריאה חוזרת (callback) לטיפול בתוצאות.

השדות תואמים לתוצאות החיפוש של המקומות והם מחולקים ל-3 קטגוריות חיוב: Basic, Contact ו-אווירה. שדות בסיסיים מחויבים בתעריף בסיסי, ולא כרוכים בתשלום נוסף. השדות 'איש קשר' ו'אווירה' מחויבים בשיעור גבוה יותר. למידע נוסף על אופן החיוב של בקשות לנתוני מקומות, עיינו במאמר שימוש וחיוב.

ה-API מפעיל את שיטת הקריאה החוזרת שצוינה ומחזיר מערך של אובייקטים מסוג GMSPlaceLikelihood.

כל אובייקט GMSPlaceLikelihood מייצג מקום. התוצאה של כל מקום כוללת אינדיקציה לגבי הסבירות שהמקום הוא הנכון. ערך גבוה יותר פירושו שיש סבירות גבוהה יותר שהמקום הוא ההתאמה הטובה ביותר. יכול להיות שהמאגר ריק, אם אין מקום ידוע שתואם למיקום המכשיר.

דוגמת הקוד הבאה מאחזרת את רשימת המקומות שבהם סביר להניח שהמכשיר נמצא, ומתעד את השם והסבירות של כל מקום.

Swift

// 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))")
    }
  }
})

Objective-C

// 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).