[Video Summary] Ch. 8.10 Map Plotting with SwiftUI (the Snacktacular app)
Mô tả nhanh
Video này hướng dẫn cách tích hợp bản đồ vào ứng dụng iOS sử dụng SwiftUI, hiển thị các địa điểm (đã có tọa độ vĩ độ và kinh độ) trên bản đồ, đồng thời hiển thị vị trí hiện tại của người dùng.
Video
Mô tả chi tiết
Video này hướng dẫn cách tích hợp bản đồ vào ứng dụng iOS sử dụng SwiftUI, hiển thị các địa điểm (đã có tọa độ vĩ độ và kinh độ) trên bản đồ, đồng thời hiển thị vị trí hiện tại của người dùng.
Các bước thực hiện bao gồm:
- Import MapKit: Thêm thư viện MapKit để làm việc với bản đồ.
- Tạo Region: Sử dụng
MKCoordinateRegionđể xác định khu vực hiển thị trên bản đồ (tâm và tỷ lệ). - Tạo Annotations:
- Sử dụng một mảng các annotation (điểm đánh dấu) để hiển thị trên bản đồ.
- Bất kỳ model nào có thuộc tính ID và tọa độ (latitude/longitude) đều có thể làm annotation.
- Trong video này, một struct
Annotationmới được tạo để đảm bảo ID không bị nil. Struct này chứa ID (uuid), tên, địa chỉ và tọa độ.
- Hiển thị Map:
- Sử dụng đối tượng
Maptrong SwiftUI. - Duyệt qua mảng annotations để vẽ từng điểm đánh dấu bằng
MapMarker. - Sử dụng
showUserLocationđể hiển thị vị trí người dùng (chấm xanh).
- Sử dụng đối tượng
- Cập nhật bản đồ khi view xuất hiện (
onAppear):- Nếu có
spot(địa điểm đã lưu) thì bản đồ sẽ tập trung vào tọa độ củaspotđó, ngược lại, bản đồ sẽ tập trung vào vị trí hiện tại của thiết bị. - Khi không có spot (
spot.id == nil), cần sử dụngTaskđể đảm bảo tọa độ vị trí thiết bị được lấy trước khi cập nhật vị trí bản đồ.
- Nếu có
- Cập nhật bản đồ khi spot thay đổi (
onChange):- Khi một
spotđược chọn (ví dụ, từ kết quả tìm kiếm), sử dụng modifieronChangeđể cập nhật lại annotation và tâm bản đồ. - Struct
Spotcần conformEquatableđể sử dụngonChange.
- Khi một
Cụ thể các bước làm trong video:
- Import
MapKitvào fileSpotDetailView. - Khai báo
@State private var mapRegion = MKCoordinateRegion()để xác định vùng bản đồ. - Khai báo
let regionSize = 500.0để định kích thước vùng bản đồ.- Gán
mapRegionvàocoordinateRegioncủaMap.
- Gán
- Trong
onAppear:- Kiểm tra
spot.id != nil. Nếu đúng, tâm bản đồ được đặt tại tọa độ của spot. - Nếu
spot.id == nil:- Dùng
Taskđể lấy vị trí người dùng sau đó đặt tâm bản đồ vào đó.
- Dùng
- Kiểm tra
- Tạo struct
AnnotationconformIdentifiable. - Tạo
@State private var annotations: [Annotation] = []. - Trong
onAppear, gán mảngannotationsbằng dữ liệu từ spot hiện tại. - Trong
Map,annotationItemsgán bằngannotations, sử dụngMapMarkerđể display, và setcoordinatelàannotation.coordinate. - Thêm
showUserLocation(true)vào Map để hiển thị chấm xanh vị trí của người dùng. - Thêm modifier
onChangeđể theo dõi thay đổi của spot và cập nhật map. - Struct
Spotcần conformEquatableđể sử dụngonChange.
<Lời chúc>
Chúc bạn thành công trong việc tích hợp bản đồ vào ứng dụng iOS của mình!
