عرض الخرائط في SwiftUI
اعرض الخرائط والتعليقات التوضيحية باستخدام Map.
عرض الخرائط في SwiftUI درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
عرض الخريطة في SwiftUI
يوفّر SwiftUI عرضًا أصليًا باسم Map، ضمن MapKit، لعرض خرائط تفاعلية من دون UIKit. استورد MapKit وضع Map داخل تسلسل عروضك. ومنذ iOS 17، يستخدم هذا العرض واجهة API حديثة تصريحية.
import SwiftUI
import MapKit
struct BasicMap: View {
var body: some View {
Map()
}
}مناطق الإحداثيات
تُوصف المنطقة باستخدام MKCoordinateRegion — وهي إحداثي مركز وامتداد يحدد مقدار خطي العرض والطول الظاهرين. وكلما صغر الامتداد، اقترب التكبير.
let region = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: 41.008, longitude: 28.978),
span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)
)التحكم في الكاميرا باستخدام الموضع
يستقبل Map الحديث ربطًا إلى MapCameraPosition. يمكنك البدء بمنطقة أو مستطيل أو ضبط الإطار تلقائيًا لاحتواء المحتوى. استخدم .region(...) لتعيين منطقة محددة.
struct CityMap: View {
@State private var position: MapCameraPosition = .region(
MKCoordinateRegion(
center: .init(latitude: 41.008, longitude: 28.978),
span: .init(latitudeDelta: 0.1, longitudeDelta: 0.1)
)
)
var body: some View {
Map(position: $position)
}
}إضافة علامة
يضع Marker دبوسًا قياسيًا على شكل فقاعة عند إحداثي معين، مع عنوان. ضع العلامات داخل الإغلاق اللاحق لـ Map، أي منشئ محتوى الخريطة.
Map {
Marker("Hagia Sophia",
coordinate: .init(latitude: 41.0086, longitude: 28.9802))
}تخصيص العلامات
تقبل العلامات قيمة systemImage ولونًا للتعبير عن الفئات. ويجعلها ذلك مميزة بصريًا على الخريطة.
Map {
Marker("Cafe", systemImage: "cup.and.saucer.fill",
coordinate: cafeCoord)
.tint(.brown)
}التعليقات التوضيحية باستخدام عروض مخصّصة
عندما لا يكون الدبوس كافيًا، يتيح لك Annotation عرض أي عرض من SwiftUI عند إحداثي معين. قدّم عنوانًا وإغلاق محتوى.
Map {
Annotation("Office", coordinate: officeCoord) {
Image(systemName: "building.2.fill")
.padding(6)
.background(.blue, in: Circle())
.foregroundStyle(.white)
}
}عرض دبابيس متعددة من البيانات
كرّر على نموذجك باستخدام ForEach داخل منشئ محتوى الخريطة لعرض علامات متعددة. يوفّر كل عنصر إحداثيًا.
struct Place: Identifiable {
let id = UUID()
let name: String
let coordinate: CLLocationCoordinate2D
}
Map {
ForEach(places) { place in
Marker(place.name, coordinate: place.coordinate)
}
}عرض موقع المستخدم
أضف UserAnnotation() إلى محتوى الخريطة لإظهار النقطة الزرقاء المألوفة. ويتطلب ذلك منح تفويض الموقع. ويمكنك دمجه مع علاماتك الخاصة.
Map {
UserAnnotation()
ForEach(places) { p in
Marker(p.name, coordinate: p.coordinate)
}
}عناصر التحكم بالخريطة
أرفق عناصر تحكم قياسية باستخدام المعدِّل .mapControls: بوصلة وزرًا لموقع المستخدم وعرضًا للمقياس. وتظهر هذه العناصر تلقائيًا وتراعي نمط الخريطة.
Map { UserAnnotation() }
.mapControls {
MapUserLocationButton()
MapCompass()
MapScaleView()
}نمط الخريطة
استخدم المعدِّل .mapStyle للتبديل بين العروض القياسية وعروض الصور، أي صور الأقمار الصناعية، والعروض الهجينة. ويمكنك أيضًا تبديل التضاريس الواقعية ونقاط الاهتمام.
Map()
.mapStyle(.hybrid(elevation: .realistic))الاستجابة لتغييرات الكاميرا
يُبلغ المعدِّل .onMapCameraChange عند تغيّر المنطقة الظاهرة، مثلًا بعد تحريك المستخدم للخريطة. استخدمه لجلب البيانات الخاصة بالمنطقة الظاهرة حديثًا.
Map(position: $position)
.onMapCameraChange { context in
let center = context.region.center
print("Now centered at:", center.latitude, center.longitude)
}اختبار سريع: خرائط SwiftUI
اختبر معرفتك باستخدام MapKit في SwiftUI.
مراجعة: عرض الخرائط في SwiftUI
يمكنك الآن إنشاء خرائط تفاعلية:
- استخدم
Mapالحديث مع ربطMapCameraPosition. - أضف علامات
Markerأو اعرض تعليقات توضيحية مخصّصة باستخدامAnnotation، مع التكرار على البيانات بواسطةForEach. - اعرض النقطة الزرقاء باستخدام
UserAnnotation()، وأضف.mapControls. - نسّق الخريطة واستجب لتغييرات الكاميرا باستخدام
.onMapCameraChange.
الأسئلة الشائعة
هل درس «عرض الخرائط في SwiftUI» مجاني؟
نعم — نص درس «عرض الخرائط في SwiftUI» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «عرض الخرائط في SwiftUI»؟
اعرض الخرائط والتعليقات التوضيحية باستخدام Map. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «عرض الخرائط في SwiftUI»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- طلب إذن الموقع
- الحصول على موقع المستخدم
- عرض الخرائط في SwiftUI
- الترميز الجغرافي والمناطق