الموقع الجغرافي والخرائط في Swift لنظامي iOS/macOS: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

الموقع الجغرافي والخرائط في Swift (iOS/macOS): Core Location وMapKit



غالبًا ما يتطلب تطوير تطبيقات الهواتف المحمولة وأجهزة الكمبيوتر المكتبية ضمن نظام Apple البيئي دمج وظائف الموقع الجغرافي وعرض الخرائط. في Swift، يتم استخدام إطارين قويين لهذه الأغراض: Core Location (لتحديد الموقع) وMapKit (للعمل مع الخرائط). في هذه المقالة، سنشرح بالتفصيل إمكانياتهما، ونقدم أمثلة عملية على الكود، ونخبرك بكيفية استخدام هذه الأدوات بفعالية في مشاريعك.



1. Core Location: الحصول على الإحداثيات والعمل مع البيانات الجغرافية



Core Location هو إطار يوفر الوصول إلى الوسائل البرمجية والمادية لتحديد موقع الجهاز. وهو يدعم GPS وWi-Fi وأبراج الخلايا وiBeacon. الإمكانيات الرئيسية:



  • تحديد الإحداثيات الحالية (خط العرض، خط الطول)
  • مراقبة التغييرات الكبيرة في الموقع
  • المناطق الجغرافية — الدخول/الخروج من منطقة محددة
  • تحديد اتجاه وسرعة الحركة
  • الترميز الجغرافي العكسي (العنوان من الإحداثيات)


1.1. إعداد أذونات الوصول



للعمل مع الموقع الجغرافي، يجب طلب الإذن من المستخدم. في Info.plist، أضف المفاتيح التالية:



  • NSLocationWhenInUseUsageDescription — للاستخدام فقط عندما يكون التطبيق نشطًا
  • NSLocationAlwaysAndWhenInUseUsageDescription — للمراقبة في الخلفية


1.2. مثال: الحصول على الموقع الحالي



لننشئ مدير موقع بسيط:



import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate { let manager = CLLocationManager() var currentLocation: CLLocation? override init() { super.init() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() } func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { guard let location = locations.last else { return } currentLocation = location print("خط العرض: \\(location.coordinate.latitude)") print("خط الطول: \\(location.coordinate.longitude)") manager.stopUpdatingLocation() } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("خطأ: \\(error.localizedDescription)") }}


2. MapKit: عرض الخرائط والعمل مع التعليقات التوضيحية



يتيح MapKit تضمين خرائط Apple Maps في التطبيقات. يدعم:



  • عرض الخرائط القياسية، والقمر الصناعي، والهجينة
  • إضافة التعليقات التوضيحية (دبابيس، علامات مخصصة)
  • بناء المسارات (بالسيارة، مشيًا، وسائل النقل العام)
  • تتبع موقع المستخدم على الخريطة


2.1. الإعداد الأساسي لـ MKMapView



أضف MKMapView في storyboard أو أنشئه برمجيًا:



import MapKit

class MapViewController: UIViewController { @IBOutlet weak var mapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() mapView.mapType = .standard mapView.showsUserLocation = true mapView.delegate = self }}


2.2. إضافة التعليقات التوضيحية



لننشئ تعليقًا توضيحيًا مخصصًا:



class CustomAnnotation: NSObject, MKAnnotation {    var coordinate: CLLocationCoordinate2D    var title: String?    var subtitle: String?        init(coordinate: CLLocationCoordinate2D, title: String, subtitle: String) {        self.coordinate = coordinate        self.title = title        self.subtitle = subtitle    }}

// إضافة إلى الخريطةlet annotation = CustomAnnotation

توصيات