báo cáo tìm hiểu và xây dựng ứng dụng map trên android

15
1 TRƯỜNG ĐẠI HỌC SƯ PHẠM TPHCM KHOA CÔNG NGHTHÔNG TIN BÁO CÁO ĐỒ ÁN CUI KLP TRÌNH TRÊN THIT BDI ĐỘNG ĐỀ TÀI: NG DNG TRA CỨU ĐỊA ĐIỂM TRÊN ANDROID GVHD: ThS. Phan Nguyt Minh SVTH: Nhóm 04 Lê Anh Toàn K34.104.090 Trn Công Minh K34.104.051 Lê Quang Phước K34.104.063 TP.HCM-2011

Upload: hockohiwu

Post on 12-Jul-2015

72 views

Category:

Internet


13 download

TRANSCRIPT

Page 1: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 2: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 3: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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”.

Page 4: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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:

Page 5: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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().

Page 6: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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.

Page 7: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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 đó:

Page 8: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 9: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 10: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 11: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 12: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 13: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 14: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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

Page 15: Báo cáo tìm hiểu và xây dựng ứng dụng map trên android

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