بااستفاده از Places SDK ویژه iOS، میتوانید مکانی را که دستگاه درحالحاضر در آن قرار دارد پیدا کنید. یعنی مکانی که درحالحاضر بهعنوان مکان دستگاه گزارش شده است. نمونههای مکانها شامل کسبوکارهای محلی، نقاط موردعلاقه، و مکانهای جغرافیایی میشود.
درحال درخواست مجوز مکان
اگر برنامه شما از
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: استفاده میکند،
برنامه شما باید برای استفاده از خدمات مکان اجازه درخواست کند. کلید
NSLocationWhenInUseUsageDescription را به فایل Info.plist
اضافه کنید تا رشتهای را تعریف کنید که به کاربر اطلاع میدهد چرا به خدمات مکان
نیاز دارید. برای مثال:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
اگر میخواهید
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: وقتی
برنامه در پسزمینه است تماس بگیرد، بدون اینکه
کادر گفتگوی تأیید را راهاندازی کند، قبلاز برقراری تماس مراحل زیر را انجام دهید:
- کلید
NSLocationAlwaysUsageDescriptionرا به فایلInfo.plistاضافه کنید. - قبلاز فراخواندن روش،
requestAlwaysAuthorizationرا در هر نمونهای ازCLLocationManagerفراخوانید.
مجوز را بهصورت زیر از CLLocationManager درخواست کنید:
Swift
locationManager.requestAlwaysAuthorization()
آبجکتیو-سی
[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))") } } })
آبجکتیو-سی
// 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: را نمایش میدهد، برنامه
باید ارجاعها را نیز نمایش دهد. درباره
ارجاعها بیشتر بخوانید.