مکان کنونی (قدیمی)

بااستفاده از Places SDK for 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()
    

آبجکتیو-سی

    [self.locationManager requestAlwaysAuthorization];
    

دریافت مکان کنونی

برای پیدا کردن کسب‌وکار محلی یا مکان دیگری که دستگاه درحال‌حاضر در آنجا قرار دارد، با GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: تماس بگیرید. پارامترهای زیر را اضافه کنید:

  • یک یا چند GMSPlaceField که مشخص می‌کند کدام نوع داده‌ها برگردانده شود. اگر این پارامتر را حذف کنید، همه فیلدهای ممکن برگردانده می‌شوند و صورت‌حساب شما براساس آن صادر می‌شود. این مورد فقط برای درخواست‌های «جزئیات جا» اعمال می‌شود.
  • روش فراخوانی برای مدیریت نتایج.

فیلدها با نتایج «جستجوی جاها» مطابقت دارند و به سه دسته صورت‌حساب تقسیم می‌شوند: «پایه»، «مخاطب»، و «جو». فیلدهای پایه با نرخ پایه صورت‌حساب می‌شوند و هزینه اضافی ندارند. فیلدهای «تماس» و «جو» با نرخ بالاتری صورت‌حساب می‌شوند. برای اطلاعات بیشتر درباره نحوه صدور صورت‌حساب برای درخواست‌های داده‌های «مکان»، به استفاده و صدور صورت‌حساب مراجعه کنید.

میانای برنامه‌سازی کاربردی روش فراخوانی مشخص‌شده را فراخوانی می‌کند و آرایه‌ای از اشیاء 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))")
    }
  }
})

آبجکتیو-سی

// 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);
    }
  }
}];

نکاتی درباره مقادیر احتمال:

  • احتمال، احتمال نسبی بهترین مطابقت بودن مکان را در فهرست مکان‌های برگردانده‌شده برای یک درخواست ارائه می‌دهد. نمی‌توانید احتمال‌ها را در درخواست‌های مختلف مقایسه کنید.
  • مقدار احتمال بین ۰ و ۱٫۰ خواهد بود.
  • مجموع احتمالات در آرایه برگردانده‌شده از GMSPlaceLikelihood اشیاء همیشه کمتر یا مساوی ۱٫۰ است. توجه داشته باشید که مجموع لزوماً ۱٫۰ نیست.

برای مثال، برای نشان دادن احتمال ۵۵٪ برای اینکه مکان صحیح «مکان الف» است، و احتمال ۳۵٪ برای اینکه «مکان ب» است، آرایه احتمال دو عضو دارد: «مکان الف» با احتمال ۰٫۵۵ و «مکان ب» با احتمال ۰٫۳۵.

نمایش ارجاع‌ها در برنامه شما

وقتی برنامه‌تان اطلاعات به‌دست‌آمده از GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: را نمایش می‌دهد، برنامه باید ارجاع‌ها را نیز نمایش دهد. درباره ارجاع‌ها بیشتر بخوانید.