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

בחירת פלטפורמה: 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 מפעיל את שיטת הקריאה החוזרת שצוינה, ומחזיר מערך של אובייקטים מסוג 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)