การแสดงแผนที่ใน SwiftUI
แสดงแผนที่และคำอธิบายตำแหน่งด้วย Map
การแสดงแผนที่ใน SwiftUI เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
มุมมองแผนที่ของ SwiftUI
SwiftUI มีมุมมอง Map แบบเนทีฟใน MapKit สำหรับแสดงแผนที่แบบโต้ตอบได้โดยไม่ต้องใช้ UIKit ให้ import MapKit แล้ววาง Map ไว้ในลำดับชั้นของมุมมอง ตั้งแต่ iOS 17 เป็นต้นมา มุมมองนี้ใช้ API แบบประกาศสมัยใหม่
import SwiftUI
import MapKit
struct BasicMap: View {
var body: some View {
Map()
}
}ขอบเขตพิกัด
ขอบเขตหนึ่งรายการอธิบายด้วย MKCoordinateRegion ซึ่งประกอบด้วยพิกัด center และช่วงขอบเขตที่มองเห็นได้ของละติจูดหรือลองจิจูด ช่วงขอบเขตที่เล็กกว่าจะซูมเข้าใกล้มากขึ้น
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 และสี tint เพื่อสื่อถึงหมวดหมู่ ทำให้หมุดแต่ละประเภทแตกต่างกันอย่างเห็นได้ชัดบนแผนที่
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” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแสดงแผนที่ใน SwiftUI”
แสดงแผนที่และคำอธิบายตำแหน่งด้วย Map คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การแสดงแผนที่ใน SwiftUI” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การขออนุญาตเข้าถึงตำแหน่ง
- การรับตำแหน่งของผู้ใช้
- การแสดงแผนที่ใน SwiftUI
- การแปลงพิกัดเป็นที่อยู่และภูมิภาค