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

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

באמצעות 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 באופן הבא:

Swift

    locationManager.requestAlwaysAuthorization()
    

Objective-C

    [self.locationManager requestAlwaysAuthorization];
    

מתבצע זיהוי של המיקום הנוכחי

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

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

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

ה-API מפעיל את שיטת הקריאה החוזרת (callback) שצוינה, ומחזיר מערך של אובייקטים של 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). מידע נוסף על שיוך (Attribution)