[Video Summary] Ch. 8.9 Adding PlaceLookup to the Snacktacular app
Mô tả nhanh
Video này hướng dẫn cách thêm chức năng tìm kiếm địa điểm (Place Lookup) vào ứng dụng Snacktacular, cho phép người dùng lấy tọa độ (latitude, longitude) của một địa điểm bất kỳ và hiển thị trên bản đồ.
Video
Mô tả chi tiết
Video này hướng dẫn cách thêm chức năng tìm kiếm địa điểm (Place Lookup) vào ứng dụng Snacktacular, cho phép người dùng lấy tọa độ (latitude, longitude) của một địa điểm bất kỳ và hiển thị trên bản đồ.
Các bước chính:
- Sao chép các file cần thiết: Sao chép các file
Place
,PlaceViewModel
,LocationManager
, vàPlaceLookupView
từ ứng dụng demo trước vào project Snacktacular. - Cấu hình
EnvironmentObject
: Khai báo và khởi tạoLocationManager
như một@StateObject
trongSnacktacularApp
và thêm nó vào view hierarchy như mộtenvironmentObject
để có thể truy cập từ các view khác. - Cập nhật cấu trúc dữ liệu
Spot
: Thay đổi cấu trúc củaSpot
để lưu trữlatitude
vàlongitude
dưới dạngDouble
thay vìPlaceMark
. - Cập nhật dictionary của
Spot
: Cập nhật dictionary để lưu trữ latitude và longitude vào Firestore. - Thêm button tìm kiếm địa điểm:
- Thêm một
toolbar
ở dưới cùng củaSpotDetailView
với một button có biểu tượng kính lúp. - Sử dụng
toolbarItemGroup
để căn chỉnh button về phía bên phải của toolbar. - Thêm
@State
để kiểm soát việc hiển thị sheet chứaPlaceLookupView
. - Thêm modifier
.sheet
để hiển thị PlaceLookupView khi button được nhấn.
- Thêm một
- Cập nhật
PlaceLookupView
:- Thay đổi
PlaceLookupView
để nhận mộtSpot
binding thay vì trả về mộtPlace
. - Cập nhật các thuộc tính của
spot
khi người dùng chọn một địa điểm từ kết quả tìm kiếm. - Cập nhật preview provider với một
spot
binding fake.
- Thay đổi
- Xử lý lỗi và đồng bộ dữ liệu:
- Thêm hai key
Privacy - Location Always and When in Use Usage Description
vàPrivacy - Location When in Use Usage Description
vào fileinfo.plist
để truy cập vị trí người dùng. - Giải quyết vấn đề dữ liệu không đồng bộ khi cấu trúc Spot thay đổi; video giải thích rõ vấn đề này và cách xử lý bằng cách xóa các document cũ không có trường
latitude
vàlongitude
.
- Thêm hai key
- Chặn sửa thông tin địa điểm: Trong
SpotDetailView
, không cho phép người dùng sửa các trườngname
vàaddress
.
Lưu ý:
- Cần đảm bảo dữ liệu trên Firestore đồng nhất với cấu trúc của struct trong ứng dụng.
- Việc thêm quyền truy cập vị trí là bắt buộc để ứng dụng có thể lấy được tọa độ.
- Không cho người dùng thay đổi thông tin địa điểm để đảm bảo tính toàn vẹn của dữ liệu.
Chúc bạn học tập hiệu quả và có nhiều dự án iOS/macOS thú vị!