báo cáo tìm hiểu và xây dựng ứng dụng map trên android
TRANSCRIPT
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
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
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
Settings\username\.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 Files\Java\jre6\bin) để lấy mã MD5 trong tệp “debug.keystore”.
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
Để 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
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
Ví dụ:
Thông qua url sau:
http://maps.google.com/maps?q=atm&sll=21.029505,105.850566&num=20&output=k
ml
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
• 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
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
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
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
Distance
Matrix API
Directions API
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
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
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
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