Tổng quan đề tài
Trong thời đại số, nhu cầu sử dụng bản đồ và định vị ngày càng cao, các ứng dụng bản đồ hiện tại đã khá hoàn thiện, tuy nhiên vẫn thiếu nhiều chức năng khiến trải nghiệm người dùng không được liền mạch, khó tiếp cận. Với một framework có khả năng dùng để phát triển ứng dụng đa nền tảng mạnh mẽ như Flutter, nhóm mong muốn tạo được một ứng dụng có thể giúp người dùng tìm đường dễ dàng, tiết kiệm thời gian và công sức. Ứng dụng cũng có một số tính năng độc đáo giúp cá nhân hóa trải nghiệm, tăng cường khả năng tương tác và mở rộng ứng dụng cho nhiều mục đích sử dụng khác nhau.
- Chức năng chính:
o Chỉ đường: Tìm đường đi từ điểm A đến điểm B bằng nhiều phương tiện giao thông.
o Chia sẻ vị trí: Chia sẻ vị trí hiện tại của người dùng với người khác.
o Lưu trữ hành trình: Lưu lại các hành trình đã di chuyển để xem lại hoặc chia sẻ. - Công nghệ sử dụng:
o Flutter: Framework phát triển ứng dụng đa nền tảng.
o Google Maps API: Cung cấp các chức năng bản đồ như hiển thị bản đồ, tìm kiếm địa điểm, v.v. - Nền tảng phát triển:
o Android
o iOS
Mục tiêu đề tài
- Xây dựng ứng dụng bản đồ: Đáp ứng nhu cầu tìm đường, định vị và chia sẻ vị trí của người dùng.
- Nâng cao trải nghiệm người dùng: Giao diện đơn giản, dễ sử dụng, chức năng thông minh và hữu ích.
- Khả năng mở rộng: Có thể phát triển thêm các tính năng mới trong tương lai.
Nội dung đề tài

a. Use-case xem bản đồ
- Mô tả: Người dùng có thể xem và thực hiện các thao tác trên bản đồ
- Đối tượng: Người dùng cuối
- Hành động:
o Thay đổi chủ đề
o Di chuyển và thu phóng
o Nhấn vào một địa điểm để xem thông tin của địa điểm đó
b. Use-case tìm kiếm địa điểm
- Mục tiêu: Người dùng có thể tìm kiếm địa điểm cụ thể hoặc theo danh mục (ví dụ: nhà hàng, quán cà phê, điểm tham quan)
- Đối tượng: Người dùng cuối
- Hành động:
o Nhập tên địa điểm hoặc danh mục vào thanh tìm kiếm
o Nhấn enter để tìm kiếm chính xác địa điểm hoặc nhấn vào trên danh sách gợi ý để chọn địa điểm
o Xem thông tin chi tiết về địa điểm như tọa độ, địa chỉ, tên địa điểm và hình ảnh

Kiến trúc ứng dụng 3 lớp (hay còn gọi là mô hình 3 tầng, 3-tier architecture) là một kiến trúc phần mềm phổ biến trong phát triển phần mềm, giúp tách biệt và tổ chức rõ ràng các thành phần của hệ thống. Trong đồ án này, các thành phần của hệ thống được chia ra như sau:
- Lớp giao diện người dùng (Presentation Layer):
o Được xây dựng bằng Flutter, cung cấp giao diện người dùng đồ họa.
o Hiển thị bản đồ và các thông tin liên quan từ Google Maps.
o Cho phép người dùng tương tác với bản đồ như zoom, di chuyển, tìm kiếm địa điểm.
o Hiển thị kết quả tìm kiếm, thông tin về địa điểm, và các tính năng khác của ứng dụng. - Lớp logic xử lý (Business Logic Layer):
o Xử lý các yêu cầu từ giao diện người dùng.
o Tính toán và xử lý dữ liệu liên quan đến bản đồ (tìm đường đi, giải mã chuỗi dữ liệu đường đi mã hóa).
o Quản lý trạng thái của ứng dụng.
o Xử lý logic liên quan đến các tính năng đặc thù của ứng dụng (ví dụ: lưu địa điểm yêu thích, tạo lộ trình). - Lớp truy cập dữ liệu (Data Access Layer):
o Tương tác với Google Maps API để lấy dữ liệu bản đồ, thông tin địa điểm, và các dịch vụ khác.
o Quản lý việc gửi yêu cầu và nhận phản hồi từ Google Maps API.
o Xử lý và định dạng dữ liệu nhận được từ API để phù hợp với nhu cầu của
ứng dụng.
Kết luận
a. Các tính năng đã hoàn thành
- Tìm kiếm địa điểm, chia sẻ địa điểm
- Hiển thị vị trí và thông tin bạn bè
- Chỉ đường theo số nhà, chỉnh sửa đường đi bằng việc thêm các điểm dừng
b. Hạn chế và tính năng chưa thực hiện
- Tính năng chia sẻ hành trình
- Gửi tin nhắn cho bạn bè
- Chưa Train mô hình RL và tích hợp vào ứng dụng
- Chưa đúng hạn timeline


