Báo cáo tìm hiểu và xây dựng ứng dụng map trên android
1. 1
TRƯỜNG ĐẠI HỌC SƯ PHẠM TPHCM KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN CUỐI KỲ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG ĐỀ TÀI: ỨNG DỤNG TRA CỨU ĐỊA ĐIỂM TRÊN ANDROID GVHD: ThS. Phan Nguyệt Minh SVTH: Nhóm 04 Lê Anh Toàn K34.104.090 Trần Công Minh K34.104.051 Lê Quang Phước K34.104.063 TP.HCM-2011
2. 2
Mục Lục
1. Giới thiệu .................................................................................................................. 3
1.1. Mục tiêu ............................................................................................................. 3
1.2. Chức năng chính ................................................................................................. 3
2. Giới thiệu một số kỹ thuật sử dụng trong ứng dụng ................................................... 3
2.1. Hiển thị bản đồ và một số tùy chỉnh .................................................................... 3
2.2. Định vị vị trí hiện tại người dùng ........................................................................ 6
2.3. Tìm kiếm địa điểm gần nhất vị trí người dùng .................................................... 6
2.4. Chức năng chỉ đường từ vị trí hiện tại đến vị trí khác ......................................... 7
2.5. Tính khoảng cách và thời gian giữa điểm bắt đầu và kết thúc ............................. 9
2.6. Google Places Autocomplete API ..................................................................... 10
2.7. Geocoder .......................................................................................................... 11
3. Kiến trúc chương trình ............................................................................................ 11
Google Maps API Web Services .................................................................................... 11
4. Giao diện ................................................................................................................ 12
4.1. Màn hình chính................................................................................................. 12
4.2 Giao diện chức năng tra cứu theo địa điểm ....................................................... 12
4.3 Giao diện chức năng cài đặt .............................................................................. 13
4.4 Giao diện hiển thị kết quả tra cứu địa điểm ....................................................... 13
4.5 Giao diện hiển thị địa điểm trên bản đồ ............................................................ 14
4.6 Giao diện hiển thị chi tiết lộ trình từ điểm bắt đầu đến đích .............................. 14
5. Cài đặt và thử nghiệm ............................................................................................. 15
6. Kết luận và hướng mở rộng ..................................................................................... 15
7. Tài liệu tham khảo .................................................................................................. 15
3. 3
1. Giới thiệu
1.1. Mục tiêu
Mục tiêu của đề tài là xây dựng ứng dụng tra cứu địa điểm như nhà hàng, máy ATM… bên cạnh đó ứng dụng có thể xác định vị trí hiện tại của người dùng và cho phép tìm các địa điểm xung quanh người dùng. Ngoài ra, ứng dụng còn cho phép xem lộ trình đường đi từ vị trí hiện tại đến điểm đích một cách chi tiết và trực quan.
1.2. Chức năng chính
Hiển thị bản đồ, phóng to thu nhỏ bản đồ, cho phép thay đổi các chế độ hiển thị bản đồ như: chế độ đường phố (street view), chế độ vệ tinh (satellite) Hỗ trợ tìm các địa điểm thông dụng, cho phép người dùng có thể thêm địa điểm tìm kiếm Định vị vị trí hiện tại người dùng Hỗ trợ tìm kiếm địa điểm chính xác, gần nhất với vị trí người dùng Tích hợp chức năng chỉ đường từ vị trí hiện tại đến vị trí khác Hỗ trợ giao diện tiếng Việt và Anh.
2. Giới thiệu một số kỹ thuật sử dụng trong ứng dụng
2.1. Hiển thị bản đồ và một số tùy chỉnh
Cách đăng ký một Api Key và hiển thị bản đồ trong Android MapView là một điều khiển giúp chúng ta có thể hiển thị bản đồ một cách dễ dàng và đơn giản. Tuy nhiên để hiển thị được, ta cần đăng ký một Api Key của Google. Vì sử dụng cơ sở dữ liệu bản đồ của Google nên ta phải đăng ký một Api Key để có thể kết nối đến cơ sở dữ liệu của Google và sử dụng nó. Sau đây, ta sẽ tìm hiểu cách đăng ký một Api Key. Để đăng ký một Api Key, ta phải lấy được mã chứng nhận MD5 của ứng dụng:
Đầu tiên, ta sao chép tệp “debug.keystore” ở thư mục “C:Documents and Settingsusername.Android” vào ổ đĩa C.
Sau đó, dùng công cụ keytool.exe của java ( nằm ở thư mục bin của jre, chẳng hạn C:Program FilesJavajre6bin) để lấy mã MD5 trong tệp “debug.keystore”.
4. 4
Ta vào Start > Run, gõ cmd, sau đó chỉ dẫn đến thư mục bin chứa keytool.exe và gõ lệnh:
Keytool –list –alias androiddebugkey –keystore “C:debug.keystore” – storepass android -keypass android Ta sẽ thu được mã MD5:
Tiếp theo, ta truy cập vào địa chỉ http://code.google.com/android/maps-api- signup.html và dùng mã MD5 lấy được để đăng ký Api Key. Giao diện sau khi đăng ký thành công như sau:
5. 5
Để hiển thị bản đồ trong Android, ta chỉ cần làm 2 việc chính sau:
Hiệu chỉnh tệp AndroidManifest.xml bằng cách thêm vào thành phần <uses- library> để khai báo sử dụng thư viện “com.google.android.maps” và quyền truy cập Internet trong thành phần <uses-permission>.
Thêm thành phần MapView vào giao diện chương trình, để hiện thị bản đồ. Hình ảnh bản đồ được hiển thi thông qua MapView Một số tùy chỉnh với MapView Để thay đổi các chế độ hiển thị khác nhau trên MapView, ta có thể dùng các hàm:
setSatellite(): hiển thị chế độ vệ tinh
setStreetView(): hiển thị chế độ đường phố (hiện nay chỉ hỗ trợ một số nước)
setTraffic(): hiển thị chế độ giao thông
Với lớp MapController, ta có thể hướng đến một vị trí nào đó trên bản đồ bằng hàm animateTo(), hoặc thiết lập mức khung nhìn (zoom: tối đa là 21) thông qua hàm setZoom().
6. 6
2.2. Định vị vị trí hiện tại người dùng
Lớp LocationManger hỗ trợ định vị vị trí người dùng. Thông qua hàm requestLocationUpdates(), ta có thể thực hiện yêu cầu cập nhật vị trí người dùng. Hàm này có 4 tham số:
provider: GPS_PROVIDER, NETWORK_PROVIDER
minTime: khoảng thời gian tối thiểu giữa các lần cập nhật vị trí
minDistance: khoảng cách tối thiểu giữa các lần cập nhật vị trí
listener thừa kế từ lớp LocationListener và có 4 hàm cần nạp chồng:
onLocationChanged(): được gọi khi vị trí thay đổi
onProviderDisabled(): được gọi khi nhà cung cấp (provider) không được kích hoạt
onProviderEnabled(): được gọi khi nhà cung cấp (provider) đã kích hoạt
onStatusChanged(): được gọi khi trạng thái nhà cung cấp (provider) thay đồi
2.3. Tìm kiếm địa điểm gần nhất vị trí người dùng
Sử dụng kết quả truy vấn trên trang www.maps.google.com vào ứng dụng thông qua việc truyền các tham số vào đường dẫn http://maps.google.com/maps?parameters. Các tham số sau được dùng trong ứng dụng:
Tham số q (query) : nội dung tìm kiếm (atm, hotel, restaurant…)
Tham số sll ( search latitude longitude ): tọa độ của vị trí cần tìm kiếm
Tham số num ( number ): số lượng địa điểm trả về
Tham số output: định dạng trả về (kml, html, js…)
Ứng với kết quả trả về là kml (html), sau đó dữ liệu sẽ được phân tích lại để hiển thị thông tin cần thiết cho người dùng.
7. 7
Ví dụ: Thông qua url sau: http://maps.google.com/maps?q=atm&sll=21.029505,105.850566&num=20&output=kml Ta có kết quả trả về ở dạng kml:
2.4. Chức năng chỉ đường từ vị trí hiện tại đến vị trí khác
Sử dụng Google Direction API
• Cho phép chỉ ra hướng đi giữa các địa điểm
• Các địa điểm có thể ở dạng:
– Chuỗi: Nguyễn Thị Minh Khai, Trần Phú
– Tọa độ (vĩ độ và kinh độ): latitude, longitude
Một Direction API request có dạng:
Trong đó:
8. 8
• Output: json, xml
• Parameters:
– Bắt buộc: origin, destination, sensor.
– Tùy chọn: mode, units, alternatives …
Ví dụ: Ứng với url này, ta có kết quả trả về dạng xml bên dưới
Driving Walking Bicycling
Metric Imperial
9. 9
Sau đó, chúng sẽ được phân tích để lấy ra các thông tin cần thiết cho ứng dụng
2.5. Tính khoảng cách và thời gian giữa điểm bắt đầu và kết thúc
Distance Matrix API là dịch vụ cho phép tính khoảng cách và thời gian đi giữa điểm bắt đầu và điểm kết thúc. Một Distance Matrix API request có dạng: Output: json, xml
10. 10
Parameters: Bắt buộc: origins, destinations, sensor. Tùy chọn: mode, language, units, avoid…
2.6. Google Places Autocomplete API
Sử dụng Google Places Autocomplete API giúp hỗ trợ trả về địa điểm dựa vào dữ liệu người dùng nhập vào. Một Place Autocomplete request có dạng: Output: json, xml Parameters:
Bắt buộc: input, sensor, key
Tùy chọn: location, radius, language, types
Ví dụ:
Driving Walking Bicycling
Metric Imperial
11. 11
2.7. Geocoder
Lớp Geocoder cho phép chúng ta có thể chuyển từ một tọa độ dạng tên địa điểm thành dạng (kinh độ, vĩ độ) và ngược lại thông qua các hàm getFromLocation() và getFromLocationName().
Geocoding: chuyển tọa độ (kinh độ, vĩ độ) thành địa chỉ thông qua hàm getFromLocation().Ví dụ: latitude=10.766185, longitude=106.638726 => công viên Đầm Sen
Reverse geocoding: chuyển tên địa chỉ thành tọa độ (kinh độ, vĩ độ) thông qua hàm getFromLocationName().Ví dụ: công viên Đầm Sen => tọa độ latitude= 10.766185 , longitude=106.638726
3. Kiến trúc chương trình
Ứng dụng sử dụng một số web services của google và các lớp có sẳn trong các gói phát triển ứng dụng trên Android.
Google Maps API Web Services
Google Places Autocomplete API
Google Distance Matrix API
Google Directions API
12. 12
4. Giao diện
4.1. Màn hình chính
4.2 Giao diện chức năng tra cứu theo địa điểm
13. 13
4.3 Giao diện chức năng cài đặt
4.4 Giao diện hiển thị kết quả tra cứu địa điểm
14. 14
4.5 Giao diện hiển thị địa điểm trên bản đồ
4.6 Giao diện hiển thị chi tiết lộ trình từ điểm bắt đầu đến đích
15. 15
5. Cài đặt và thử nghiệm
• Version cài đặt: android 2.1
• Đã thử nghiệm trên:
– Trên trình giả lập Android Emulator
– Trên máy Xperia (Sony Ericsson)
6. Kết luận và hướng mở rộng
Kết luận
– Chương trình đáp ứng khá tốt những yêu cầu đặt ra, hỗ trợ 2 ngôn ngữ (tiếng Việt và Anh).
– Giao diện thân thiện với người dùng.
Hướng mở rộng
– Hỗ trợ thêm một số ngôn ngữ khác: tiếng Trung, tiếng Nhật…
– Hỗ trợ chỉ đường bằng giọng nói.
7. Tài liệu tham khảo
[1] Wei-Meng Lee (2011), Beginning Android Application Development, Wiley, Indianapolis. [2] Sayed Y. Hashimi, Satya Komatineni, Dave MacLean (2010), Pro Android 2, Apress, USA.
[3] http://developer.android.com
[4]http://code.google.com/apis/maps/documentation/webservices/
[5]http://mapki.com/wiki/Google_Map_Parameters