[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àPlaceLookupViewtừ ứng dụng demo trước vào project Snacktacular. - Cấu hình
EnvironmentObject: Khai báo và khởi tạoLocationManagernhư một@StateObjecttrongSnacktacularAppvà 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ữlatitudevàlongitudedưới dạngDoublethay 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ủaSpotDetailViewvớ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ộtSpotbinding thay vì trả về mộtPlace. - Cập nhật các thuộc tính của
spotkhi 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
spotbinding 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 DescriptionvàPrivacy - Location When in Use Usage Descriptionvà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
latitudevà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ườngnamevà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ị!