Upload
nguyen-hoai-linh
View
85
Download
0
Embed Size (px)
Citation preview
Lời nói đầu :
Ngày 5/11/2007, hệ điều hành trên điện thoại di động : Android chính thức ra mắt.
Khởi đầu dự án trực thuộc một công ty nhỏ ở California – Mỹ, từ năm 2005 đã được
Google mua lại và tập trung đầu tư với rất nhiều hi vọng. Tại đây,nhóm phát triển đã
tập trung nghiên cứu dựa trên nền tảng hạt nhân Linux. Từ khi ra mắt, hệ điều hành
Android đã mở ra một trang mới cho chặng đường phát triển các thiết bị cầm tay. Các
Smart-phone chạy hệ điều hành Android đang khẳng định vị thế của mình trên thị
trường tiêu dung và giới công nghệ. Không những thế, Android cũng đã lấn sân sang
các thiết bị đầu phát HD,các HD player,ti vi…Nó nhanh chóng vượt mặt Iphone OS kì
cựu để khẳng định vị trí số 1 trong các hệ điều hành di động. Với sức hút mạnh mẽ đó,
các ứng dụng cho hệ điều hành Android đã phát triển theo không ngừng. Với hầu hết
các ứng dụng được xây dựng dựa trên ngôn ngữ Java. Việc phát triển ứng dụng
Android không quá mới mẻ trên thế giới, nhưng ở Việt Nam đang bắt đầu nở rộ. Các
thiết bị Android đang ngày càng phổ biến ở Việt Nam và cũng có thể nói đây là lĩnh
vực khá mới mẻ ở nước mình. Với những lý do đó, nhóm quyết định chọn đề tài liên
quan đến ứng dụng Android. Tuy nhiên,để tìm hiểu hết các lý thuyết và ứng dụng cho
Android gần như không thể khi nó ngày càng phát triển và tiến hóa. Do đó, nhóm đã
chọn một mảng nhỏ để phát triển ứng dụng cho Android. Đó là tìm hiểu thư viện Map
API của Google để viết ứng dụng bản đồ cho điện thoại di động chạy hệ điều hành
Android. Về lĩnh vực này, bản đồ miễn phí do Google xây dựng cho Android có thể
nói là ứng dụng tốt nhất hiện nay. Thế nên mục đích chính của đồ án là : ngoài việc tìm
hiểu thư viện Google Map API, đồ án nhằm tăng kỹ năng thực hành ứng dụng – khai
thác thư viện với ngôn ngữ Java để nhóm hiểu hơn về quá trình xây dựng ứng dụng cho
điện thoại Android.
Chương 1 Tổng quan
1.1 Android là gì ?
Android là một nền tảng phần mềm mở. Rất nhiều người hiểu đơn giản
Android chỉ là một hệ điều hành dành cho các điện thoại di động thông minh
(SmartPhone). Tuy nhiên nhắc đến Android là nói đến một nền tảng bao gồm cả
phần mềm lẫn phần cứng. Đó là một nền tảng gồm : phần cứng , hệ điều hành và
nền tảng phát triển phần mềm ( Android SDK và Java ). Một nền tảng được
Google phát triển dựa trên nhân Linux.
1.2 Lập trình ứng dụng trên Android :
Các nhà phát triển viết ứng dụng Android dựa trên Java.Vậy nên để lập trình
Android tốt, lập trình viên cần có kiến thức cơ bản về Java (Java Core). Thông
thường ngôn ngữ lập trình trên di động hay được sử dụng là Java 2 Micro
Edition (J2ME). Nhưng với những thiết bị chạy hệ điều hành Android, với cấu
hình mạnh nên lập trình Android cũng rất khác so với J2ME. Không yêu cầu
khắt khe về việc tối ưu code để cải thiện tốc độ xử lý, nền tảng Android cũng có
những gói hỗ trợ lập trình khác so với J2ME. Một số gói hỗ trợ phổ biến cho lập
trình Android như : java.util, java.io, java.net… Một ứng dụng Android hoàn
thiện bao gồm 6 thành phần :
- Activity : là nền của một ứng dụng, khi khởi động một ứng dụng Android
nào đó thì bao giờ cũng có một main Activity được gọi, hiện thị màn hình
giao diện của ứng dụng cho phép người dùng tướng tác.
- Service : thành phần chạy ẩn trong Android,service sử dụng để cập nhật dữ
liệu,đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người
dùng thấy.
- Content Provider : kho dữ liệu chia sẻ,được sử dụng để chia sẻ dữ liệu giữa
các ứng dụng.
- Intent : nền tảng để truyền tải các thông báo,được sử dụng để gửi các thông
báo đi nhằm khởi tạo một Activity hay một Service để thực hiện công việc
bạn mong muốn.
- Broadcast Receiver : thành phần thu nhận các Intent bên ngoài gửi tới.
- Notification : đưa ra các cảnh báo mà không làm cho các Activity ngừng
hoạt động.
Trong đó lưu ý các thành phần : Activity,Service,Content Provider,
Broadcast Receiver là những thành phần chính cấu thành nên ứng dụng Android
và buộc phải khai báo trong Android manifest. Các tiến trình xử lý (process)
trong Android được quản lý theo cơ chế ưu tiên,các tiến trình xử lý có mức ưu
tiên (priority) thấp sẽ bị giải phóng mà không bị cảnh báo nhằm đảm bảo tài
nguyên.
- Foreground process : là process của ứng dụng hiện thời đang được người
dùng tương tác.
- Visible process : là process của ứng dụng mà Activity đang hiện thị đối với
người dùng.
- Service process : là dịch vụ đang chạy
- Background process : là process của ứng dụng mà Activity của nó không
hiện thị với người dùng.
- Empty process : process không có bất cứ một thành phần nào Activity.
Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động ngừng quá
trình xử lý mà đầu tiên là Empty process. Activity là thành phần đóng vai trò
chính và quan trọng nhất để cấu thành một ứng dụng Android. Hệ điều hành
Android quản lý Activity theo dạng stack : khi một Activity mới được khởi
tạo,nó sẽ xếp đầu stack và trở thành Running Activity,các Activity trước đó sẽ
bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng. Activity
gồm 4 state :
- Activity (Running) : Activity đang hiện thị trên màn hình (foreground).
- Paused : Activity vẫn hiện thị (visible) nhưng không thể tương tác (lost
focus).
- Stop : Activity bị thay thế hoàn toàn bởi một Activity mới sẽ tiến đến trạng
thái stop.
- Killed : khi hệ thống bị thiếu bộ nhớ,nó sẽ tự động giải phóng bộ nhớ bằng
cách đóng các tiến trình theo thứ tự ưu tiên. Các Activity ở trạng thái Paused
hoặc Stop cũng có thể bị đóng và khi nó hiện thị lại thì phải khởi động lại
hoàn toàn và phục hồi lại trạng thái trước đó.
Hình 1 Biểu đồ mô tả Activity state.
1.3 Bản đồ :
Bản đồ là bản vẽ đơn giản miêu tả một không gian, địa điểm và hiện thị
những thông số liên quan trực tiếp đến vị trí đó có liên quan đến khu vực xung
quanh. Thêm một định nghĩa nữa về bản đồ địa lý là sự biểu thị thu nhỏ qui ước
của bề mặt trái đất lên mặt phẳng, xây dựng trên cơ sở toán học với sự trợ giúp và
sử dụng các ký hiệu qui ước để phản ánh sự phân bố, trạng thái và mối quan hệ
tương quan của các hiện tượng thiên nhiên và xã hội được lựa chọn và khái quát
hoá để phù hợp với mục đích sử dụng của bản đồ và đặc trưng cho khu vực
nghiên cứu.
Chức năng chính của bản đồ : tìm vị trí,một số thông số địa lý hành chính
quan trọng liên quan đến địa điểm.
1.4 Bản đồ số :
Một số khái niệm về bản đồ số : “ Bản đồ số là tập hợp có tổ chức các dữ
liệu bản đồ trên các thiết bị có khả năng đọc bằng máy tính điện tử và được thể
hiện dưới dạng hình ảnh bản đồ” . Hay “Bản đồ số là mô hình số của bản đồ địa
hình,bản đồ chuyên đề được thể hiện dưới dạng tọa độ mặt phẳng x,y,độ cao và
các số liệu thuộc tính đã mã hóa. Bản đồ số được thành lập trong phép chiếu,hệ
thống ký hiệu quy định đối với các bản đồ cùng kiểu đã biết,có tính đến tổng quát
hóa và các yêu cầu về độ chính xác”.
Bản đồ số có tính tương tác cao,hoạt động trên nhiều thiết bị,mang tính trực
quan, chủ động và tiện dụng hơn nhiều so với bản đồ thường. Nhất là khi công
nghệ di động phát triển mạnh mẽ như ngày nay, trong một số lĩnh vực thì bản đồ
số đang là sự lựa chọn số một cho người dung.
1.5 Định vị GPS :
Chỉ cách đây vài năm GPS còn là một khái niệm khá mới với người dùng
Việt Nam, thiết bị GPS khi đó thường được thấy ở các thiết bị dẫn đường đắt tiền
cho xe hơi, hoặc trong các mục đích quân sự. Tuy nhiên đến bây giờ GPS đã trở
thành một khái niệm thông dụng với người dùng Việt Nam, và được ứng dụng
rộng rãi vào rất nhiều mặt trong đời sống. Một trong những nguyên nhân quan
trọng để GPS trở nên phổ cập đến người dùng chính là việc các nhà sản xuất di
động tích hợp GPS vào các dòng máy điện thoại của mình cùng với việc các ứng
dụng định vị và bản đồ ngày càng phát triển. Tuy GPS đã trở thành một khái niệm
sâu rộng đối với người dùng Việt Nam, nhưng GPS thực chất là gì và tại sao GPS
giúp ta có thể xác định được vị trí của mình không phải người sử dụng nào cũng
biết. GPS là chữ viết tắt của từ Global Positioning System : hệ thống định vị toàn
cầu. GPS được thiết kế và bảo quản bởi Bộ Quốc Phòng Hoa Ky, và được chính
phủ Hoa Ky cho phép mọi người sử dụng nó miễn phí. Hệ thống GPS bao gồm 24
vệ tinh (thực tế chỉ có 21 vệ tinh hoạt động), vệ tinh ban đầu được phóng vào năm
1978 và toàn bộ 24 vệ tinh đưuọc phóng lên quỹ đạo vào năm 1994, Các vệ tinh
hoạt động dựa vào năng lượng mặt trời, mỗi vệ tinh nặng 1,5 tấn và dài 5m. GPS
ban đầu chỉ dành cho các mục đích quân sự, nhưng từ năm 1980 chính phủ Mỹ
cho phép sử dụng dân sự. GPS hoạt động trong mọi điều kiện thời tiết, mọi nơi
trên Trái Đất, 24 giờ một ngày. Không mất phí thuê bao hoặc mất tiền trả cho
việc thiết lập sử dụng GPS. Các thiết bị GPS xác định vị trí với độ chính xác rất
cao. Nếu như một số ứng dụng bản đồ xác định bằng các dịch vụ qua mạng
Internet thì độ chênh lệch có thể vượt vài trăm mét, nhưng nếu thiết bị có hệ
thống định vị GPS như khá nhiều dòng điện thoại thông minh ngày nay thì độ
chính xác gần như tuyệt đối, nó chỉ chênh lệch khoảng tối đa vài chục mét. Và
với sự phổ biến của thiết bị GPS đính kèm trên điện thoại như ngày nay ( và ở
Việt Nam ), các ứng dụng bản đồ ứng dụng công nghệ định vị GPS ngày càng
được sự dụng rộng rãi.
1.6 Sơ lược Google Map :
Google map là một phần mềm chạy trên các thiết bị hỗ trợ Java. Đó là bản
đồ số một trên thế giới hiện nay. Google map có đầy đủ các tính năng như một
bản đồ địa lý thông dụng : hiện thị địa điểm, vị trí, đường đi và những thông số
liên quan đến địa danh. Điều đặc biệt, Google map có thể định vị với thiết bị GPS
hoặc thiết bị chỉ hỗ trợ Java 2.0 đơn thuần. Nhờ đó nó ngày càng được phổ biến
và là một ứng dụng không thể thiếu đối với những người sử dụng thiết bị di động.
Ngoài những tính năng thông thường, Google map cho phép người dùng tương
tác một cách rất trực quan, dễ dàng. Bạn có thể phóng to thu nhỏ bản đồ trên điện
thoại, bạn chỉ cần gõ tên địa chỉ cần tìm lập tức phần mềm sẽ đánh dấu và chỉ rõ
vị trí trên bản đồ, bạn đánh dấu điểm đầu và điểm cuối và Google map sẽ làm
nhiệm vụ tìm đường đi và vẽ lên bản đồ để bạn theo dõi và nó còn cung cấp cho
bạn chiều dài của đoạn đường, bạn muốn tìm những địa điểm quan trọng và phổ
cập như cột rút tiền ATM, cây xăng, ngân hàng, bệnh viện… chỉ cần bạn gõ tên
vào và Google map sẽ liệt kê cho bạn những địa điểm gần khu vực bạn đứng,
ngoài ra Google map còn cho bạn lựa chọn những kiểu bản đồ để bạn dễ sử dụng
( kiểu ảnh vệ tinh, kiểu đơn giản…). Và với đội ngũ phát triển, Google map ngày
càng hoàn thiện, bổ sung thêm nhiều chức năng để phù hợp với từng vùng miền
địa lý. Có thể nói đây là bản đồ số chuẩn mực nhất, và điều đặc biệt để nó luôn
luôn được tín nhiệm là : chất lượng nhưng sử dụng miễn phí.
Hình 2 Kiểu hiện thị Satellite view
Hình 3 Kiểu hiện thị Traffic view
Hình 4 Kiểu hiện thị Street view
1.7 Xây dựng bài toán :
Lựa chọn đề tài tìm hiểu thư viện hỗ trợ xây dựng bản đồ trên Android của
Google hay còn gọi là Google Map API và thiết kế ứng dụng minh họa, mục tiêu
của đồ án là tìm hiểu về một thư viện hỗ trợ của Google làm ví dụ để mọi người
có thể hiểu được sự hỗ trợ của các API để giúp cho quá trình lập trình ứng dụng
trên Android. Ngoài ra, trong quá trình nghiên cứu đồ án, yêu cầu thêm các kiến
thức chung về lập trình Android, các kỹ năng tìm và dịch tài liệu từ nhiều nguồn
trong và ngoài nước. Về ứng dụng minh họa, dựa trên chuẩn Google map, nhóm
xây dựng một bản đồ chạy trên thiết bị Android 2.2, có bổ sung thêm một số chức
năng phụ và cố gắng thiết kế giao diện trực quan, dễ tương tác nhất. Hoàn thành
toàn bộ đồ án, yêu cầu lớn nhất là giúp người lập trình hiểu được các bước cơ bản
và có thể tự phát triển lên nâng cao để xây dựng ứng dụng cho Android, giúp lập
trình viên nắm bắt được toàn bộ các bước thực tế và phối hợp nhóm tốt để hoàn
thành một ứng dụng Android.
Chương 2 : Google Map API
2.1 Sử dụng :
Để bắt đầu với công việc xây dựng bản đồ trên Android từ thư viện của
Google, ta cần đăng ký dịch vụ này với nhà cung cấp. Công đoạn này hoàn toàn
miễn phí. Đầu tiên chúng ta cần phải lấy mã MD5 trên máy tính cá nhân của mình
bằng cách sau :
- Chúng ta cần xác định vị trí file Debug.keystore :
Đối với hệ điều hành Win7 ta tìm theo đường dẫn C:\Users\
<user>\.android\debug.keystore
Đối với WinXP đường dẫn là C:\Documents and Settings\
<user>\.android\debug.keystore
Đối với OS X và Linux đường dẫn là ~/.android/debug.keystore
Nếu sử dụng Eclipse để lập trình, chúng ta có thể nhờ chương
trình này hỗ trợ để tìm đường dẫn, ta chọn thẻ Tab theo thứ tự :
Windows > Prefs > Android > Build và kết quả sẽ được như hình
minh họa ở dưới.
Hình 4 Tìm đường dẫn đến Debug.keystore bằng Eclipse
- Sau khi lấy được đường dẫn đến Dubug.keystore, ta mở cmd và chạy
dòng lệnh : keytool –list –alias androiddebugkey –keystore <đường
dẫn file Debug.keystore> –storepass android –keypass android
Hình 5 Kết quả tìm mã MD5
Sau khi lấy được mã MD5 trên máy tính cá nhân, chúng ta vào trang đăng
ký của Google để đăng ký sử dụng dịch vụ. Truy cập theo đường dẫn :
http://code.google.com/intl/vi-VN/android/maps-api-signup.html
Hình 6 Giao diện trang đăng kí API key
Sau khi nhập mã MD5 và nhấn button Generate API Key,Google sẽ cung
cấp cho chúng ta key sử dụng và một đoạn mã để chúng ta sử dụng nó trong
Android để load dữ liệu bản đồ từ Google về. Lưu ý, với key do bạn đăng ký chỉ
có giá trị trên máy tính bạn đang sử dụng. Nếu di chuyển Object của bạn sang
máy khác,chúng ta cần đăng ký lại theo máy mới và thay key cũ.
Hình 7 Đăng ký Key API thành công
2.2 Một số Class quan trọng trong thư viện Map API :
2.2.1 Class MapActivity :
Tóm tắt cấu trúc : MapActivity()
Khai báo thư viện (Import) : com.google.android.maps.MapActivity
Đây là Class cơ sở với những câu lệnh để quản lý những yêu cầu cần
thiết của bất cứ một hoạt động nào liên quan đến việc hiển thị MapView.
Chức năng của Class này là : quản lý vòng đời hoạt động, cài đặt và ngắt
kết nối những dịch vụ đằng sau một MapView. Một phân lớp nên tạo
riêng MapView của mình trong onCreate(android.os.Bundle), hay với cấu
trúc MapView (sau đó thêm nó vào một Layout View với
ViewGroup.addView(View) ), hoặc để cấu trúc (và Layout) vào trong
inflation từ Layout XML. MapActivity không phải là một gói chuẩn
trong thư viện Android, thế nên để sử dụng nó ta cần thêm phần tử XML
vào file AndroidManifest.xml :
<uses-library android:name="com.google.android.maps" />
Chỉ một MapActivity được hỗ trợ cho mỗi quá trình. Nếu nhiều
MapActivitty chạy đồng thời cùng lúc, nó sẽ gây nên tình trạng xung đột
và có những can thiệp không mong muốn ảnh hưởng tới quá trình xử lý
ứng dụng.
Tóm tắt các phương thức (Method) :
Protected Boolean isLocationDisplayed() : với mục đích đếm kiểm
tra, máy chủ cần phải biết hoặc không rằng bạn đang hiển thị ở đâu
trên màn hình cảm ứng dựa theo tính toán vị trí hiện tại của thiết bị.
Trả về True nếu thông tin vị trí người dùng được hiển thị, nếu
không sẽ trả về False.
Protected Boolean isRouteDisplayed() : với mục đích đếm kiểm tra,
máy chủ cần phải biết hoặc không rằng bạn đang hiển thị loại thông
tin tuyến đường gì, chẳng hạn như các hướng dẫn lái xe. Trả về
True nếu thông tin tuyến đường được hiển thị, nếu không sẽ trả về
False.
Protected void onCreate(android.os.Bundle icicle) : ở đây chúng ta
khởi tạo các bộ phận tĩnh, tạo ra các đối tượng bản đồ và dịch vụ
trao đổi, nhưng không bắt đầu bất ky một tiểu trình nào. Các lớp
con nên tạo ra đối tượng MapView của nó sau khi được gọi thông
qua phương thức super.onCreate() .
Protected void onDestroy() : ngừng tất cả các tiểu trình và giải
phóng tất cả tài nguyên.
Protected void onNewIntent(android.content.Intent newIntent) :
được gọi cho các hoạt động thiết lập launchMode thành “singleTop”
trong gói phần mềm, hoặc nếu một khách hàng đã sử dụng cờ
FLAG_ACTIVITY_SINGLE_TOP khi gọi startActivity(Intent) .
FLAG_ACTIVITY_SINGLE_TOP có ý nghĩa : nếu nó được thiết
lập, hoạt động sẽ không được đưa ra nếu nó đã được chạy ở vị trí
trên cùng của ngăn xếp (stack) trong quá trình hoạt động của stack.
Protected void onPause() : tạm ngưng các tiểu trình chẳng hạn như
dịch vụ trao đổi, bởi vì ta không muốn nó được chạy mãi mãi trên
giao diện ứng dụng.
Protected void onResume() : ở đây chúng ta nói bản đồ với
“predraw” rằng cái phía trước quá trình tải đang bắt và giải mã, để
vẽ ra đầu tiên sẽ xuất hiện thêm “atomic”. Bắt đầu các tiểu trình của
chúng ta : dịch vụ trao đổi và bắt đầu trở lại MapView, cái sẽ đăng
kí cho những cập nhập.
2.2.2 MapView :
Tóm tắt cấu trúc :
MapView(android.content.Context context,
android.util.AttributeSet attrs)
MapView(android.content.Context context,
android.util.AttributeSet attrs, int defStyle)
MapView(android.content.Context context, java.lang.String
apiKey)
Khai báo thư viện (Import) : com.google.android.maps.MapView
Một View là cái hiển thị một bản đồ (với dữ liệu thu được từ dịch vụ
Google Maps). Khi tập trung, nó sẽ chụp các phím bấm và thao tác cảm
ứng để xoay và phóng to thu nhỏ bản đồ. Nó cũng có thể được điều khiển
lập trình (getController() ) và có thể vẽ một số lượng của Overlays ở vị
trí trên cùng của bản đồ (getOverlays() ). Bản đồ có thể được hiển thị
theo một số cách : setSatellite(boolean), setTraffic(boolean),
setStreetView(Boolean). Nó có thể tùy chọn hiển thị kiểu một bảng kẻ ô
khi không có chế độ cảm ứng, để hỗ trợ trong việc chọn xem bản đồ ở
chế độ thu-phóng hoặc kéo vị trí : setReticleDrawMode
(com.google.android.maps.MapView.ReticleDrawMode) . Nó sẽ vẽ một
biểu tượng Google ở phía dưới góc trái màn hình. Cơ chế thu-phóng yêu
thích là phóng to : setBuiltlnZoomControl(Boolean), như khi người dùng
kéo thả hay thu phóng bản đồ thì phần điều khiển thu phóng sẽ tự động
hiển thị bên dưới của MapView. MapView cũng là một ViewGroup, với
LayoutParameters cho phép bạn đính kèm các điểm hay một điểm cụ thể,
hoặc một cặp kinh độ - vĩ độ cụ thể. Một MapView có thể chỉ được xây
dựng bởi một MapActivity. Đó là vì nó phụ thuộc vào các tiểu trình truy
cập vào mạng và file hệ thống trên giao diện, những tiểu trình phải được
hướng dẫn bởi sự quản lý vòng đời trên MapActivity. Những kiểu sắp
xếp cạnh nhau được lưu trữ trên tập tin hệ thống trong thư mục ứng dụng.
Vùng nhớ đệm (cache) được quản lý tự động nên chúng ta không cần làm
bất ky điều gì với nó, có thể xóa nó bất cứ lúc nào. Để hiển thị dữ liệu
Google Maps trong một MapView, ta cần đến Key mà ta nhắc đến ở mục
2.1 . Ta cần tham chiếu nó từ một thuộc tính đặc biệt : android:apiKey,
nó nằm trong thành phần MapView trong XML layout, nếu ta đang tạo
một đối tượng MapView trực tiếp từ Code thì nên thông qua Maps API
Key trong cấu trúc MapView.
Tóm tắt các phương thức :
Boolean canCoverCenter() : kiểm tra xem chúng ta đã có một bảng
kẻ ô bản đồ để phủ trung tâm của bản đồ. Trả về True nếu có một
bảng kẻ ô, trả về False nếu không có.
Protected Boolean
checkLayoutParams(android.view.ViewGroup.LayoutParams p) :
tham số p xác minh đối tượng LayoutParams, chỉ kiểm tra nếu p
đúng là tham số của MapView.LayoutParams. Trả về True nếu p
đúng là tham số, trả về False nếu không phải.
Void computeScroll() : chụp sự thay đổi của các sự kiện đối với bàn
phím hoặc màn hình cảm ứng để thay đổi bản đồ.
Void displayZoomControls(Boolean takeFocus) : làm cho thanh
điều khiển thu phóng hiển thị và tùy chọn các yêu cầu tập trung trên
đó để chúng có thể được truy cập thông qua các phím. Nếu tham số
takeFocus True,hiển thị thanh điều khiển và ngược lại.
Protected MapView.LayoutPrams generateDefaultLayoutParams() :
trả về một sự thiết lập các thông số bố trí với chiều rộng của
ViewGroup.LayoutParams.WRAP_CONTENT, chiều cao của
ViewGroup.LayoutParams.WRAP_CONTENT và với cặp tọa độ
(0,0) .
Public android.view.ViewGroup.LayoutPrams
generateLayoutParams(android.util.AttributeSet attrs)
Protected android.view.ViewGroup.LayoutParams
generateLayoutParams(android.view.ViewGroup.LayoutParams p)
MapController getController() : trả về MapController cho bản đồ
này, cái mà bạn có thể sử dụng để điều khiển bản đồ.
Int getLatitudeSpan() : khoảng vĩ độ hiện tại từ mép trên đến mép
dưới cùng của bản đồ tính bằng giá trị thập phân nhân với E*6 .
Int getLongitudeSpan() : khoảng kinh độ hiện tại từ mép trái đến
mép phải của bản đồ tính bằng giá trị thập phân nhân với E*6 .
GeoPoint getMapCenter() : trả về vị trí trung tâm của bản đồ, như là
một GeoPoint(vĩ độ và kinh độ) .
Int getMaxZoomLevel() : trả về mức độ phóng to tối đa của bản đồ.
Java.util.List<Overlay> getOverlays() : truy cập danh sách Overlay.
Bất ky Overlay nào trong danh sách sẽ được rút ra (theo thứ tự tăng
dần) và sẽ nhận được các sự kiện (trong thứ tự giảm dần cho đến khi
nó trả về True). Nếu ta chỉnh sửa danh sách, có thể ta sẽ muốn gọi
phương thức View.postlnvalidate() để sự thay đổi sẽ được hiển thị
cho người dùng.
Public Projection getProjection() : nhận được một hình chiếu của
quá trình chuyển đổi giữa các tọa độ điểm ảnh trên màn hình và tọa
độ vĩ độ/ kinh độ. Trả về hình chiếu của bản đồ trong trạng thái hiện
tại. Ta không nên giữ đối tượng này nhiều hơn một lần vẽ bởi kể từ
khi chiếu đến sau một khoảng thời gian nó có thể thay đổi theo vị trí
của thiết bị.
Int getZoomLevel() : trả về mức độ phóng hiện tại của bản đồ. Ở
mức 1, đường xích đạo của Trái Đất là 256 pixels, mỗi mức độ
phóng kế tiếp được phóng đại theo hệ số 2.
Public Boolean isSatellite() : kiểm tra có phải là bản đồ đang hiện
thị ở chế độ Satellite.
Public Boolean isTraffic() : kiểm tra có phải là bản đồ đang hiện thị
ở chế độ Traffic.
Public Boolean isStreetView() : kiểm tra có phải là bản đồ đang
hiện thị ở chế độ StreetView.
Protected void onDatechedFromWindow() : được gọi khi đang được
tách ra, làm sạch các điều khiển thu phóng.
Protectes void onDraw(android.graphics.Canvas canvas) : phương
pháp vẽ chính, để vẽ nền bản đồ, tất cả các lớp phủ Overlays, mặt
kẻ ô (nếu muốn) và biểu tượng Google.
Void onFocusChanged(Boolean hasFocus, int direction,
android.graphics.Rect unused) : được gọi bởi hệ thống khung nhìn
khi tiêu điểm tập trung của khung nhìn này thay đổi. Bắt sự kiện
thay đổi tiêu điểm để ngăn chặn sự ghép nhẵn.
Boolean onKeyDown(int keyCode, amdroid.view.KeyEvent event) :
chuyển tác các khóa đến những lớp phủ đầu tiên, và nếu chúng
không xử lý,hãy cố sử dụng chúng để xoay. Tương tự với Bolean
onKeyUp
Protected void onLayout(Boolean changed,int left,int top,int
ringt,int bottom)
Protected void onMeasure(int widthMeasureSpec, int
heightMesureSpec)
Void onRestoreInstanceState(android.os.Bundle state) : khôi phục
trạng thái của MapView thành một gói (Bundle). Hiện tại,nó khôi
phục lại trung tâm,mức độ thu phóng, và trạng thái của sự tương tác
thu phóng.
Void onSaveInstanceState(android.os.Bundle state) : lưu trạng thái
của MapView thành một gói. Hiện tại, điều này vẫn còn là trung
tâm,mức độ thu phóng và trạng thái của sự tương tác thu phóng vẫn
giữ nguyên.
Protected void onSizeChanged(int w,int h,int oldw,int oldh) : điều
này thay đổi các kích thước của đối tượng bản đồ và đặt lại vị trí
bảng kẻ ô. Nếu ghi đè lên phương thức này, đảm bảo rằng gọi thông
qua phương thức super.onSizeChanged().
Boolean onTouchEvent(android.view.MotionEvent ev) : thông qua
các sự kiện trên màn hình cảm ứng, cung cấp chúng cho một máy
dò cử chỉ và gửi các cử chỉ được phát hiện.
Boolean onTrackballEvent(android.view.MotionEvent event) :
thông qua các sự kiện cảm ứng các lớp phủ đầu tiên, và nếu chứng
không hoạt động, hãy cố sử dụng chúng để xoay và nhấp.
Void onWindowFocusChanged(Boolean hasFocus) : gọi khi cửa sổ
chứa khung nhìn này mất tiêu điểm. Bộ nhớ đệm các tiêu điểm đã
thay đổi các sự kiện để ngăn chặn ghép nhẵn.
Void preload() : tải trước những phần xếp cạnh nhau tại trung tâm
bản đồ. Điều này sẽ bắt đầu tìm nạp các phần cạnh nhau.
Void setBuiltInZoomControls(Boolean on) : đặt xem có đúng hay
không để cho phép các trình điều khiển thu phóng. Nếu được phép,
MapView sẽ hiển thị điều khiển thu phóng tự động.
Void setReticleDrawMode(MapView.ReticleDrawMode mode) :
nêu cụ thể việc bảng kẻ ô nên được rút ra khi thiết bị không hỗ trợ
chế độ cảm ứng.
Void setSatellite(Boolean on) : thiết lập chế độ bản đồ Satellite.
Void setTraffic(Boolean on) và Void setStreetView(Boolean on)
tương tự là để thiết lập các chế độ bản đồ.
2.2.3 MapController :
Khai báo thư viện (Import) : com.google.android.maps.MapController
Đây là một lớp tiện ích quản lý việc điều khiển bản đồ chẳng hạn như :
phóng to thu nhỏ, kéo vị trí bản đồ.
Tóm tắt các phương thức :
Void animateTo(GeoPoint point) : bắt đầu hoạt cảnh bản đồ đối với
những điểm được xác định.
Void animateTo(GeoPoint point, android.os.Message message) : bắt
đầu hoạt cảnh bản đồ đối với những điểm được xác định. Nếu và chỉ
khi hình ảnh động đưa đến sự kết thúc tự nhiên của nó, gửi thông
điệp xác định (nếu không Null). Thông điệp sẽ không được gửi đi
nếu hình ảnh động bị hủy bỏ.
Void animateTo(GeoPoint point, java.lang.Runnable runnable) : bắt
đầu hoạt cảnh bản đồ đối với những điểm được xác định. Tham số
point : là nơi hoạt cảnh bản đồ hướng đến, tham số runnable : nếu
và chỉ khi hình ảnh động đưa ra sự kết thúc tự nhiên của nó, tham số
này sẽ được gọi để chạy trên giao diện tiểu trình, nó sẽ không được
gọi nếu hình ảnh động bị hủy bỏ.
Boolean onKey(android.view.View v, int keyCode,
android.view.KeyEvent event) : xử lý các khóa sự kiện và chuyển
đổi chúng thành những thành phần đồ họa thích hợp của bản đồ.
Được xác định trong View.OnKeyListener .
Void scrollBy(int x, int y) : di chuyển một lượng nhất định các điểm
ảnh, sẽ không có hình ảnh động. Trong đó x là số đo các điểm ảnh
dịch chuyển chiều ngang, y là số đo các điểm ảnh dịch chuyển chiều
dọc.
Void setCenter(GeoPoint point) : thiết lập bản đồ ở phần trung tâm
được xác định,không có hình ảnh động.
Void setZoom(int zoomLevel) : thiết lập mức độ thu phóng của bản
đồ,các mức độ từ 1 đến 21,chức năng chính các của nó là chỉ thiết
lập mức độ thu phóng trực tiếp cho một nấc thu-phóng ( sử dụng
zoomIn() hoặc zoomOut() ).
Void stopAnimation(Boolean jumpToFinish) : ngừng bất ky một
hoạt cảnh nào có thể trong quá trình xử lý, và cập nhật điều kiện
trung tâm bản đồ để bất cứ khoảng trống nào của các phần hoạt
cảnh được hoàn thành. Nếu True chúng sẽ rút gọn hoạt cảnh thành
điểm cuối, nếu False thì sẽ cắt bỏ vị trí đang đứng.
Void stopPainning() : thiết lập lại trạng thái di chuyển để làm cho
bản đồ cố định. Điều này có thể cần thiết nếu nhận được sự kiện
Key-Down, nhưng sẽ không nhận được sự kiện Key-Up tương ứng.
Boolean zoomIn() : phóng to theo một mức phóng đã thiết lập
trước.
Boolean zoomOut() : thu nhỏ theo một mức phóng đã thiết lập
trước.
Boolean zoomInFixing(int xPixel, int yPixel) : tương tự như
zoomIn(), nhưng với các tham số xPixel và yPixel là tọa độ của
điểm được giữ cố định trên màn hình mặc cho thao tác phóng vẫn
được tiến hành.
Boolean zoomOutFixing(int xPixel, int yPixel) : tương tự như
zoomOut(), nhưng với các tham số xPixel và yPixel là tọa độ của
điểm được giữ cố định trên màn hình mặc cho thao tác phóng vẫn
được tiến hành.
Void zoomToSpan(int latSpanE6, int lonSpanE6) : hiểu đơn giản thì
chức năng của nó cũng là thu phóng bản đồ nhưng nó chỉ thu phóng
một vùng được chọn trên bản đồ, chúng ta chọn vùng thu phóng
theo 2 tham số vĩ độ và kinh độ.
2.2.4 GeoPoint :
Tóm tắt cấu trúc : GeoPoint(int latitudeE6, int longitudeE6)
Khai báo thư viện (Import) : com.google.android.maps.GeoPoint
Là một lớp bất biến đại diện cho một cặp vĩ độ - kinh độ, được lưu trữ
như những phần nguyên của một phần triệu đơn vị độ.
Tóm tắt các phương thức :
Boolean equals(java.lang.Object object)
Int getLatitudeE6() : trả về vĩ độ của GeoPoint.
Int getLongitudeE6() : trả về kinh độ của GeoPoint.
Int hashCode()
Java.lang.String toString()
2.2.5 Overlay :
Tóm tắt cấu trúc : Overlay()
Khai báo thư viện : com.google.android.maps.Overlay
Overlay hiểu đơn giản là lớp phủ, là lớp cơ sở đại diện cho lớp phủ để có
thể được hiển thị trên cùng của một bản đồ. Trên cùng ta hiểu cơ bản là
lớp ta nhìn thấy trên màn hình thiết bị. Để thêm một lớp phủ, phân lớp
con của lớp này, ta tạo một phiên bản, và thêm nó vào danh sách thu
được từ MapView.getOverlays() . Để cho phép thiết bị cảm ứng chụp
một điểm, phân lớp con nên thực thi giao diện Overlay.Snappable .
Tóm tắt các phương thức :
Static interface Overlay.Snappable : định nghĩa giao diện cho các
lớp phủ, cái chứa những mục tin được chụp lại (ví dụ như khi người
dùng gọi thực thi hành động thu-phóng, điều này có thể được gọi là
đang cho phép người dùng chụp phóng to hay thu nhỏ một điểm).
Boolean onSnapToItem(int x, int y, android.graphics.Point
snapPoint, MapView mapView) : kiểm tra xem nếu xác định x và y
gần đủ để các mục tin chụp lại các hành động hiện tại. Các tham số
x và y là tọa độ trên màn hình, snapPoint là vùng được lấp đầy gần
nhất với x và y và có thể bị ảnh hưởng nếu không chụp, mapView là
MapView được yêu cầu để người dùng thao tác.
Protected static float SHADOW_X_SKEW : X_SKEW là giá trị để
tạo một vùng bóng đánh dấu quanh điểm.
Protected static float SHADOW_Y_SKEW : Y_SKEW là giá trị để
tạo một vùng bóng đánh dấu quanh điểm.
Void draw(android.graphics.Canvas canvas, MapView mapView,
Boolean shadow) : vẽ lớp phủ lên bản đồ. Nếu shadow = True, vẽ
những lớp bóng (những lớp mà shadow bật True), nếu shadow =
False thì áp dụng trường hợp mặc định (cũng có thể hiểu là không
vẽ gì).
Boolean draw(android.graphics.Canvas canvas, MapView
mapView, Boolean shadow, long when) : nếu cần vẽ lại ngay lập
tức thì bật giá trị True, và nếu False thì không làm gì.
Protected static void drawAt(android.graphics. Canvas canvas,
android.graphics.drawable.Drawable drawable, int x, int y, Boolean
shadow) : là phương pháp thuận tiện để vẽ bóng của vùng được
chọn, nếu True là được vẽ và ngược lại.
Boolean onKeyDown(int keyCode, android.view.KeyEvent event,
MapView mapView) : xử lý sự kiện khóa xuống.
Boolean onKeyUp(int keyCode, android.view.KeyEvent event,
MapView mapView) : xử lý sự kiện khóa lên.
Boolean onTap(GeoPoint p, MapView mapView) : xử lý một sự
kiện nhấp, điều này có thể là mỗi một sự kiện cảm ứng trên màn
hình cảm ứng nhấp ở bất cứ đâu trên bản đồ, hoặc một cái nhấp
chọn với phím Trackball trên trung tâm bản đồ. Với tham số p là
điểm được nhấp.
Boolean onTouchEvent(android.view.MotionEvent e, MapView
mapView) : xử lý một sự kiện chạm vào màn hình cảm ứng.
Boolean onTrackballEvent(android.view.MotionEvent event,
MapView mapView) : xử lý sự kiện sử dụng bi xoay Trackball của
thiết bị.
2.2.6 OverlayItem :
Tóm tắt cấu trúc : OverlayItem(GeoPoint point, java.lang.String title,
java.lang.String snippet)
Khai báo thư viện : com.google.android.maps.OverlayItem
Là thành phần cơ bản của bất ky ItemizedOverlay nào.
Tóm tắt phạm vi liên quan :
Static int ITEM_STATE_FOCUSED_MASK : chỉ trạng thái cơ bản
của tập hợp điểm (Bitset), ở đây là trạng thái tập trung của mục tin
lớp phủ.
Static int ITEM_STATE_PRESSED_MASK : chỉ trạng thái cơ bản
của tập hợp điểm (Bitset), ở đây là trạng thái của thao tác nhấn – đè.
Static int ITEM_STATE_SELECTED_MASK : chỉ trạng thái cơ
bản của tập hợp điểm (Bitset), ở đây là trạng thái được chọn của
mục tin lớp phủ.
Protected android.graphics.drawable.Drawable mMarker : đánh dấu
lớp phủ được dùng để chỉ ra mục tin này.
Protected GeoPoint mPoint : vị trí của mục tin này.
Protected java.lang.String mSnippet : trích ra đoạn văn bản của mục
tin này.
Protected java.lang.String mTitle : tiêu đề văn bản của mục tin.
Tóm tắt các phương thức :
android.graphics.drawable.Drawable getMarker(int stateBitset) : trả
về sự đánh dấu,cái sẽ được dùng khi vẽ mục tin này trên bản đồ.
Một giá trị Null nghĩa là các điểm đánh dấu mặc định sẽ được vẽ.
Các điểm đánh dấu khác có thể được trả lại cho với những trạng thái
khác nhau. Những điểm đánh dấu khác có thể có giới hạn khác
nhau. Hành vi mặc định để gọi
setState(android.graphics.drawable.Drawable, int) trên điểm đánh
dấu mục tin của lớp phủ. Tham số stateBitset là trạng thái hiện tại,
trả về sự đánh dấu của trạng thái hiện tại hoặc trả về Null nếu đánh
dấu mặc định cho lớp phủ được sử dụng.
GeoPoint getPoint() : trả về GeoPoint của lớp phủ.
Java.lang.String getSnippet() :trả về đoạn trích văn bản của lớp phủ.
Java.lang.String getTitle() : trả về tiêu đề văn bản của lớp phủ này.
Java.lang.String routableAddress() : trả về vị trí của mục tin trên
một định dạng bản đồ định tuyến. Theo mặc định trả về một chuỗi
dạng String với vĩ độ và kinh độ (phân cách bằng dấu phẩy), đơn vị
độ chưa nhân với E*6.
Void setMarker(android.graphics.drawable.Drawable marker) : thiết
lập điểm đánh dấu được dùng để vẽ mục tin này lên bản đồ, nếu
chỉnh sửa giá trị đánh dấu bằng không thì sẽ vẽ theo đánh dấu mặc
định (có thể hiểu là nếu Null thì bỏ qua). Điểm đánh dấu có thể
được vẽ bằng cách sử dụng bất ky thuộc tính nào sau đây : Null,
R.attr.state_pressed, R.attr.state_selected, R.attr.state_focused.
Static void setState(android.graphics.drawable.Drawable drawable,
int stateBitset) : thiết lập trạng thái của một vùng cấp phép vẽ để
phù hợp với tập hợp trạng thái được xác định. Điều này thực hiện
bằng cách chuyển đổi trạng thái của các Bitset thành một trạng thái
của các thuộc tính R.attr.state_pressed, R.attr.state_selected và
R.attr.state_focused, và sau đó gọi phương thức
Drawable.setState(int[]) .
2.2.7 ItemizedOverlay :
Tóm tắt cấu trúc : ItemizedOverlay(android.graphics.drawable.Drawable
defaultMarker) .
Khai báo thư viện : com.google.android.maps.ItemizedOverlay<Item>
Đây là lớp cơ sở cho một lớp Overlay, cái bao gồm một danh sách các
OverlayItem. Lớp này xử lý phân loại bắc-nam để vẽ, để tạo các vùng
giới hạn,vẽ một đánh dấu cho mỗi điểm, và duy trì một mục tin tập trung.
Tóm tắt các phương thức :
Protected static android.graphics.drawable.Drawable boundCenter
(android.graphics.drawable.Drawable ballon) : điều chỉnh một giới
hạn của vùng cấp phép vẽ để (0,0) là trung tâm của vùng cấp phép
vẽ. Trả về cùng một vùng cấp phép vẽ được thông qua.
Protected static android.graphics.drawable.Drawable
boundCenterBottom(android.graphics.drawable.Drawable ballon) :
điều chỉnh giới hạn của vùng cấp phép vẽ để (0,0) là điểm ảnh trung
tâm của dòng dưới cùng của vùng cấp phép vẽ.
Protected abstract Item createItem(int i) : phương pháp mà theo đó
lớp con tạo ra các mục tin thực tế. Cái này chỉ được gọi từ phương
thức populate(), chúng là bộ nhớ đệm để sử dụng sau này.
Void draw(android.graphics.Canvas canvas, MapView mapView,
Boolean shadow) : vẽ 1 đánh dấu của mỗi mục tin, populate() phải
được gọi đầu tiên. Đánh dấu sẽ được vẽ 2 lần cho mỗi mục tin trên
lớp phủ, lần đầu trong giai đoạn bóng (sai lệch và tối), lần sau trong
giai đoạn không bóng. Phía dưới trung tâm của đánh dấu sẽ được
liên kết với tọa độ địa lý của mục tin. Chế độ tự vẽ có thể bị thay
đổi vởi việc ghi đè của phương thức getIndexToDraw(int). Một mục
tin có thể cung cấp một đánh dấu thay thể thông qua phương pháp
OverlayItem.getMarker(int) của nó. Nếu phương thức này trả về
một giá trị rỗng thì đánh dấu mặc định được sử dụng.
GeoPoint getCenter() : theo mặc định trả về mục tin đầu tiên được
xếp trong danh sách, phương thức populate() phải được gọi đầu tiên.
Item getFocus()
Protected int getIndexToDraw(int drawingOrder) : trả về vị trí của
mục tin với chỉ số xác định, theo mặc định các mục tin sẽ được sắp
xếp theo thứ hạng của vĩ độ. Các lớp con có thể ghi đè lên phương
thức này để thay đổi thứ tự vẽ.
Item getItem(int position) : trả về mục tin của chỉ số xác định
(position) .
Int getLastFocusedIndex() : trả về thứ hạng của mục tin có nhiều
điểm gần nhau nhất được tập trung về một điểm, hoặc trả về -1 nếu
chúng không bao giờ có một tiêu điểm.
Int getLatSpanE6() : trả về khoảng vĩ độ của lớp phủ, được tính toán
trong khoảng populate() như là sự khác nhau giữa điểm cực bắc và
cực nam.
Int getLonSpanE6() : trả về khoảng kinh độ của lớp phủ, được tính
toán trong khoảng populate() như là sự khác nhau giữa điểm cực tây
và cực đông. Các lớp phủ, cái mở ra điểm kinh độ gián đoạn tại -
180 độ sẽ báo cáo những vùng rất lớn.
Protected Boolean hitTest(Item item,
android.graphics.drawable.Drawable marker, int hitX, int hitY) :
xem xét nếu một điểm nhấn xác định còn trong phạm vi của đánh
dấu một mục tin, ghi đè để sửa đổi cách thức một mục tin đã được
kiểm tra. Điểm nhấn liên quan đến vùng đánh dấu. Việc thực hiện
mặc định chỉ kiểm tra để xem nếu điểm nhấn nằm trong giới hạn
vùng cảm ứng của đánh dấu. Trả về True nếu điểm nhấn nằm trong
giới hạn đánh dấu.
Item nextFocus(Boolean forwards) : trả về mục tin tiếp theo để
được tập trung vào hướng chỉ định, hoặc giá trị rỗng nếu nó lằm
cuối dòng, nếu chúng không bao giờ được tập trung trước đó thì trả
về mục tin đầu tiên.
Boolean onKeyUp(int keyCode, android.view.KeyEvent event,
MapView mapView) : xử lý sự kiện nhả khóa, trả về True nếu sự
kiện nhấp được xử lý.
Boolean onSnapToItem(int x, int y, android.graphics.Point
snapPoint, MapView mapView) : kiểm tra xem nếu giá trị x và y đủ
gần để một mục tin là kết quả của việc chụp lại hành động hiện tại
thành mục tin.
Boolean onTap(GeoPoint p, MapView mapView) : xử lý một sự
kiện nhấp. Một sự kiện nhấp chỉ được xử lý nếu nó định hướng trên
một mục tin và bạn ghi đè onTap(int) để trả về True.
Boolean onTap(int index) : ghi đè phương thức này để xử lý một
nhấp trên một mục tin.
Boolean onTouchEvent(android.view.MotionEvent event,
MapView mapView) : xử lý một sự kiện chạm.
Boolean onTrackballEvent(android.view.MotionEvent event,
MapView mapView) : xử lý một sự kiện thao tác bằng Trackball.
Protected void populate() : tiện ích của phương pháp để thực hiện
tất cả các xử lý trên một ItemizedOverlay mới. Lớp con cung cấp
các mục tin thông qua phương thức createItem(int), lớp con nên
được gọi ngay vì nó có dữ liệu, trước khi lớp khác được gọi.
Void setDrawFocusedItem(Boolean drawFocusedItem) : thiết lập có
hay không để vẽ mục tin tiêu điểm.
Void setFocus(Item item) : nếu mục tin xác định được tìm thấy
trong lớp phủ, ép nó thành tiêu điểm hiện tại.
Protected void setLastFocusedIndex(int lastFocusedIndex) : thiết
lập chỉ số của mục tin mà gần đây nhất (hoặc hiện tại) được tập
trung, hoặc chỉ số -1 nếu chưa từng được. Điều này được ghi nhớ để
phương thức nextFocus(Boolean) có thể tiếp tục quá trình duyệt
tuần tự của một lớp phủ ngay cả khi người dùng thao tác bản đồ
trong giây lát. Thông thường các lớp con sẽ không cần phải thiết lập
biến này, vì nó sẽ được tự động cập nhật khi tiêu điểm được thay
đổi.
Void
setOnFocusChangeListener(ItemizedOverlay.OnFocusChangeListe
ner l)
Abstract int size() : số lượng các mục tin trong lớp phủ,được gọi
một lần trong quá trình populate(), và lưu lại trong tất cả thời gian.
2.2.8 ItemizedOverlay.OnFocusChangeListener :
Giao diện cho những người nghe quan tâm trong khi mục tin tập trung
thay đổi.
Tóm tắt phương thức :
Void onFocusChanged(ItemizedOverlay overlay, OverlayItem
newFocus) : phương thức này sẽ được gọi trong phương pháp vẽ,
vậy nên không làm bất cứ điều gì ngoại trừ gửi một thông điệp.
Tham số overlay là lớp phủ Overlay đang được gọi, newFocus là
mục tin tiêu điểm mới hoặc là giá trị rỗng nếu không có bất cứ cái
gì.
2.2.9 MapView.LayoutParams :
Tóm tắt cấu trúc :
MapView.LayoutParams(android.content.Context c,
android.util.AttributeSet attrs) : tạo 1 thiết lập mới cho các thông số
bố trí.
MapView.LayoutParams(int width, int height, GeoPoint point, int
alignment) : tạo 1 thiết lập mới cho các thông số bố trí với chiều
rộng,cao và vị trí cụ thể.
MapView.LayoutParams(int width, int height, GeoPoint point, int x,
int y, int alignment) : tạo 1 thiết lập mới cho các thông số bố trí với
chiều rộng,cao và vị trí cụ thể.
MapView.LayoutParams(android.view.ViewGroup.LayoutParams
source).
Khai báo thư viện : com.google.android.maps.MapView.LayoutParams
Thông tin bố trí liên quan đến MapView. Khung nhìn con có thể được đặt
ra hoặc được xác định vị trí dựa vào MapView (MODE_VIEW), hoặc
xác định vị trí dựa vào bản đồ, cái được hiển thị bởi MapView
(MODE_MAP) .
Tóm tắt thành phần liên quan :
Int alignment : sự sắp xếp của mối liên hệ con đến vị trí.
Static int BOTTOM : cạnh dưới bề ngang của alignment.
Static int BOTTOM_CENTER : trung điểm cạnh dưới bề ngang của
alignment.
Static int CENTER : đường căn giữa cả 2 chiều của alignment.
Static int CENTER_HOROZONTAL : xét theo bề ngang của
alignment (đường bề ngang trung tâm).
Static int CENTER_VERTICAL : xét theo chiều dọc của alignment
(đường chiều dọc trung tâm).
Static int LEFT : xét theo bề ngang của alignment là đường bên trái.
Int mode : hình thức bố trí.
Static int MODE_MAP : giao diện chế độ bản đồ tương đối.
Static int MODE_VIEW : giao diện chế độ xem bản đồ tương đối.
GeoPoint point : vị trí của mục con trên bản đồ.
Static int RIGHT : xét theo bề ngang của alignment là đường bên
phải.
Static int TOP : xét theo chiều dọc của alignment là đường trên
cùng.
Static int TOP_LEFT
Int x : vĩ độ trên màn hình của mục con tương đối để xem.
Int y : kinh độ trên màn hình của mục con tương đối để xem.
Tóm tắt phương thức :
Java.lang.String debug(java.lang.String output)
2.2.10 MapView.ReticleDrawMode :
Khai báo thư viện : com.google.android.maps.ReticleDrawMode
Tóm tắt hằng số enum :
DRAW_RETICLE_NEVER : không bao giờ vẽ bảng kẻ ô.
DRAW_RETICLE_OVER : vẽ bảng kẻ ô đè lên tất cả các lớp phủ.
DRAW_RETICLE_UNDER : vẻ bảng kẻ ô trước các lớp phủ.
Tóm tắt phương thức :
Static MapView.ReticleDrawMode valueOf(java.lang.String name):
trả về hằng số enum của kiểu này với tên quy định. Chuỗi phải phù
hợp chính xác với một định danh được dùng để khai báo một hằng
số enum trong kiểu này. Trả về tên của hằng số enum theo quy định.
Static MapView.ReticleDrawMode[] value () : trả về một mảng
chứa các hằng số kiểu enum này, theo thứ tự công khai. Phương
thức này có thể được dùng để lặp qua các hằng số như sau :
For(MapView.ReticleDrawMode c :
MapView.ReticleDrawMode.value() ) {
System.out.println(c) ;
}
2.2.11 MyLocationOverlay :
Tóm tắt cấu trúc :
MyLocationOverlay(android.content.Context context, MapView
mapView) .
Khai báo thư viện : com.google.android.maps.MyLocationOverlay
Một lớp phủ để vẽ vị trí hiện tại của người dùng trên bản đồ. Lớp con có
thể ghi đè lên phương thức dispatchTap() để xử lý những nhấp trên vị trí
hiện tại.
Tóm tắt các phương thức :
Void disableCompass() : tắt thông tin cập nhật từ cảm biến la bàn.
Void disableMyLocatin() : vô hiệu hóa các thông tin cập nhật vị trí.
Protected Boolean dispatchTap() : xử lý một nhấp trên điểm “vị trí
người dùng”
Boolean draw(android.graphics.Canvas canvas, MapView
mapView, Boolean shadow, long when) : phương thức vẽ, trả về
True nếu cần vẽ lại ngay lập tức, hoặc ngược lại. Mặc định trả về
False.
Protected void drawCompass(android.graphics.Canvas canvas, float
bearing) : vẽ diện tích thêm vào.
Protected void drawMyLocation(android.graphics.Canvas canvas,
MapView mapView, android.location.Location lastFix,
GeoPoint myLocation, long when) : vẽ chấm thể hiện vị trí của
người dùng. Theo mặc định vẽ một điểm di động màu xanh, có thể
bao quanh bởi một quầng sáng mờ để đại diện cho chính xác. Ngoài
ra nếu vị trí người dùng di chuyển gần các cạnh của màn hình,
chúng gửi đến một MapController để xử lý và cuộn đến vùng mới
gần đấy.
Boolean enableCompass() : cho phép cập nhật thông tin từ la bàn
cảm ứng.
Boolean enableMyLocation() : cho phép cập nhật thông tin vị trí
người dùng. Đăng ký thông tin cập nhật từ
LocationManager.GPS_PROVIDER và
LocationManager.NETWORK_PROVIDER.
Android.location.Location getLastFix() : trả về một vị trí tương ứng
với vị trí người sử dụng được cập nhật gần nhất.
GeoPoint getMyLocation() : trả về một GeoPoint tương ứng với vị
trí người sử dụng được cập nhật gần nhất.
Float getOrientation() : trả về phạm vi đường tròn của lần cập nhật
gần nhất.
Boolean isCompassEnable() : kiểm tra có hay không biểu tượng
phạm vi được hiển thị.
Boolean isMyLocationEnable() : kiểm tra có hay không “sự nhận
thức” được kích hoạt thông qua GPS hay mạng Internet.
Void onAccuracyChanged(int sensor, int accuracy)
Void onLocationChanged (android.location.Location location) :
lắng nghe để thiết lập vị trí cập nhật từ LocationManagerService.
Void onProviderDisable(java.lang.String provider)
Void onProviderEnable(java.lang.String provider)
Void onSensorChanged(int sensor, float[] values) : được gọi bởi
SensorManager khi giá trị phạm vi la bàn thay đổi.
Void onSnapToItem(int x,int y, android.graphics.Point snapPoint,
MapView mapView) : kiểm tra xem nếu giá trị x và y gửi về đủ gần
để một mục tin là kết quả việc chụp lại hành động hiện tại thành
mục tin.
Void onStatusChanged(java.lang.String provider, int status,
android.os.Bundle extras)
Boolean onTap(GeoPoint p, MapView map) : kiểm tra đúng hay
không vị trí nhấp đủ gần với vị trí hiện tại.
Boolean runOnFirstFix(java.lang.Runnable runnable) : hàng đợi
một phạm vi chạy được thực hiện ngay sau khi có một vị trí đã sửa
lại.
2.2.12 Projection :
Một dịch vụ phép chiếu bản đồ chuyển đổi giữa hệ thống tọa độ x/y trên
màn hình thiết bị và vĩ độ/kinh độ trên bề mặt trái đất. Nhận được một
phép chiếu bản đồ từ MapView.getProjection().
Tóm tắt các phương thức :
GeoPoint fromPixels(int x, int y) : tạo một GeoPoint mới từ tọa độ
điểm ảnh tương đối so với góc trên cùng bên trái của MapView.
Float metersToEquatorPixels(float meters) : chuyển đổi khoảng
cách tính bằng mét (dọc theo đường xích đạo) thành một trong
những điểm ảnh (chiều ngang màn hình) tại mức phóng hiện tại.
Android.graphics.Point toPixels(GeoPoint in,
android.graphics.Point out) : chuyển đổi GeoPoint nhận được thành
tọa độ ảnh trên màn hình đối so với góc trên cùng bên trái của
MapView.
2.2.13 TrackballGestureDetector :
Khai báo thư viện : com.google.android.maps.TrackballGestureDetector.
Phân tích một loạt các sự kiện di động (MotionEvent) và phát hiện những
cử chỉ. Ngay bây giờ chỉ có một cử chỉ được phát hiện : cuộn, nhấp và
nhấp đúp.
Tóm tắt các phương thức :
Void analyze(android.view.MotionEvent ev) : phân tích một sự kiện
di động.
Float getCurrentDownX() : trả về vị trí x của sự kiện nhấp hiện tại.
Float getCurrentDownY() : trả về vị trí y của sự kiện nhấp hiện tại.
Float getFirstDownX() : trả về vị trí x của sự kiện nhấp đúp hiện tại.
Float getFirstDownY() : trả về vị trí y của sự kiện nhấp đúp hiện tại.
Boolean isDoubleTap() : kiểm tra đúng hay không sự kiện di động
hiện tại là một sự kiện nhấp đúp.
Boolean isScroll() : kiểm tra đúng hay không sự kiện di động hiện
tại là một sự kiện cuốn.
Boolean isTap() : kiểm tra đúng hay không sự kiện di động hiện tại
là một sự kiện nhấp.
Void registerLongPressCallback(java.lang.Runnable runnable) :
đăng kí vùng chạy để được gọi khi sự kiện giữ phím (longPress)
được phát hiện.
Float scrollX() : trả về vị trí x của sự kiện cuộn hiện tại.
Float scrollY() : trả về vị trí y của sự kiện cuộn hiện tại.