המיקום הנוכחי (דור קודם)

באמצעות Places 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 לפני שמפעילים את ה-method.

מבקשים הרשאה מ-CLLocationManager באופן הבא:

Swift

    locationManager.requestAlwaysAuthorization()
    

Objective-C

    [self.locationManager requestAlwaysAuthorization];
    

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

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

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

השדות תואמים לתוצאות של חיפוש מקומות, והם מחולקים לשלוש קטגוריות חיוב: Basic,‏ Contact ו-Atmosphere. שדות בסיסיים מחויבים בתעריף הבסיס, ללא חיובים נוספים. השדות "פרטים ליצירת קשר" ו"אווירה" מחויבים בתעריף גבוה יותר. למידע נוסף על החיוב של בקשות נתונים של Place, קראו את המאמר שימוש וחיוב.

ה-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). מידע נוסף על שיוך (Attribution)