کار با نقشه و دریافت موقعیت کاربر توسط Location Manager در iOS

نقشه امروز یکی از پرکاربردترین بخش های یک اپ است. تقریبا در هر اپ بنا بر سیاست های شرکت در بخشی از ان نقشه وجود دارد. این نقشه می تواند ادرس شخص و یا فروشگاه ها و یا مناطق تفریحی را نمایش دهد. به عنوان یک توسعه دهنده باید بتوانیم یک نقشه را پیاده سازی کنیم. تیم سورس خونه تصمیم گرفت در این مقاله نحوه پیاده سازی نقشه و همینطور دریافت اجازه از کاربر و نحوه ی نمایش ان را یاد دهد.

  • خب ابتدا یک پروژه جدید مانند تصویر زیر ایجاد می کنیم.

2کار با نقشه و دریافت موقعیت کاربر توسط Location Manager

  • بعد نام پروژه رو انتخاب می کنیم.

3کار با نقشه و دریافت موقعیت کاربر توسط Location Manager

  • چون ما می خواهیم از Location Manager استفاده کنیم پس نیاز است که Core Location رو به پروژه اضافه کنیم مانند تصویر زیر به Target می رویم و پایین رو علامت Plus بخش Linked Framework and Libraries رو می زنیم و Core Location رو سرچ و انتخاب می کنیم.

4کار با نقشه و دریافت موقعیت کاربر توسط Location Manager

  • ابتدا به ViewController می رویم و در بالا Core Location رو Import می کنیم بعد یک متغییر از نوع CLLocationManager تعریف می کنیم و در viewDidLoad به ترتیب ابتدا عمل Allocation رو متغییر انجام می دهیم و بعد مقدار Delegate رو می دهیم اما گزینه ی بعدی که desiredAccuracy نام دارد و میزان دقت را تعیین می کند ما مقدار را بهترین حالت قرار داده ایم در خط بعد هم درخواست اجازه برای موقعیت کاربر را کرده ایم و در ادامه شروع به بروز رسانی موقعیت کاربر می کنیم و در ادامه یک Extension را برای Delegate های CLLocationManager می نویسیم و یکی از ان ها که در زیر مشاهده می کنید برای این است در صورتی که موقعیت کاربر را گرفت توسط این تابع به ما می دهد. این تابع مقدار Coordinate  را بر می گرداند که شامل دو مقدار latitude و longitude است که این دو نقطه موقعیت کاربر را در یک نقطه رو کره زمین نشان میدهد.

  • حالا اگر برنامه رو اجرا کنیم. برنامه کرش می کند و دلیل ان این است که ما کلید های دریافت اجازه موقعیت مکانی را در plist وارد نکرده ایم. 
  1. NSLocationWhenInUseUsageDescription
  2. NSLocationAlwaysAndWhenInUseUsageDescription

که شامل دو کلید بالا می شود برای وارد کردم هم نیاز است مانند تصویر زیر عمل کنید.

که بعد از وارد کردن به شکل زیر در می اید.

  • خب تا به این جای کار ما گرفتن موقعیت مکانی کاربر رو انجام دادیم و الان زمانی است تا نقشه رو پیاده سازی کنیم برای این کار به StoryBoard می رویم و المان نقشه رو اضافه کنیم و به چهار طرف Constraint می دهیم.

  • حالا به ViewController می رویم و IBOutlet مپ رو قرار می دهیم و MapKit رو Import می کنیم.

  • وقتی برنامه را اجرا کنیم صفحه زیر رو مشاهده می کنید.

نکته : اگر به پایین گوشی دقت کنید. مپ کامل صفحه رو پوشش نداده است برای این کار باید Constraint Bottem را تغییر دهید.

  • بعد مانند تصویر زیر مقدار را از SafeArea به SuperView تغییر دهید.

  • خب حالا Delegate نقشه را قرار می دهیم.

  • الان زمان اینه که Delegate های MapKit رو اضافه کنیم برای اینکه بتونیم یک پین روی نقشه بندازیم و برای اینکار از viewFor annotation استفاده می کنیم تا پین را قرار دهیم.
  • حالا برای این که بتونیم توی موقعیت کاربر پین رو قرار بدیم باید توی Delegate که برای Location Manager هست قرار بدهیم تا به محض گرفتن موقعیت اون رو توی نقشه اضافه کنیم(خط های ۳۹ تا ۴۱).

  • عکس پین رو هم به پروژه اضافه کنید.

در نهایت اگر پروژه رو اجرا کنید با تصویر زیر مواجه می شوید.

مشاهده مقاله آموزش پارس کردن json در iOS. این مقاله نیز به پایان رسید. مثل هیمشه منتظر مشاهده دیدن نظرات شما هستم.

مهدی محجوبی
توسعه دهنده iOS
دیدگاه ها

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

صفحه اینستاگرام کانال تلگرام