Tính n ng này đ c th c hi n t i trang b n đ , khi ng i dùng nh p ch n ch c n ng “Tôi”. Khi đó, m t bi u t ng (pushpin) s đ c v lên b n đ th hi n v trí ng i dùng. N u ng i dùng nh p ch n pushpin, ng d ng s hi n th m t thông báo (MessageBox ) cho bi t đa ch c a đi n tho i ng i dùng. Nh v y, ch c n ng đnh v cá nhân đ c kích ho t m i khi có yêu c u truy xu t t phía ng i dùng.
Gán ngu n d li u Nh p mã tr m 3 4 5 6 7 4 6 3.3.7 Ch c n ng tìm ki m tr m d ng. Tìm ki m tr m d ng là ch c n ng quan tr ng trong các ng d ng tìm đ ng đi b ng xe buýt hi n nay. Trong ng d ng c a đ tài, vi c tìm ki m tr m d ng đ c th c hi n thông qua hai c ch :
Tìm ki m tr m d ng d a theo mã tr m: cho phép tìm ki m chính xác tr m d ng do ng i dùng yêu c u. Tính n ng này đ c h tr ch đ autocomplete (hi n th mã tr m g i nh ) giúp ng i dùng d dàng h n trong vi c s d ng.
Tìm ki m tr m d ng t m t v trí v i bán kính ch đnh: giúp ng i dùng có th tìm ki m tr m d ng trong m t ph m vi đ c ch đnh b i tâm và bán kính. Trong nhi u tr ng h p, tính n ng này r t có ích cho ng i dùng trong vi c tìm ki m tr m d ng.
3.3.7.1. Tìm ki m tr m d ng d a theo mã tr m
Ch c n ng này đ c s d ng t i trang tìm tr m, và có th ho t đ ng ngay c khi ng d ng không có k t n i m ng, do ngu n d li u đ c l y t Local Database. Khi kích ho t ng d ng, ngu n d li u v tr m d ng s đ c gán cho m t AutoCompleteBox (n i đ ng i dùng nh p mã tr m c n tìm). Khi ng i dùng nh p m t t khóa nào đó vào AutoCompleteBox thì m t popup s hi n ra ch a danh sách các mã tr m g i ý đ ng i dùng có th l a ch n. Bên c nh đó, các thông tin có liên quan đ n mã tr m c ng đ c hi n th bên d i. Ch c n ng “hi n th lên b n đ ” s cho phép hi n th tr m d ng c n tra c u lên Google maps.
S đ s d ng ch c n ng nh sau: Hình 3.16: S đ phân tích ch c n ng tìm ki m tr m d ng theo mã tr m. ng d ng đ c kích ho t AutoCompleteBox Ng i dùng Ng i dùng Trang b n đ Ng i dùng
MessageBox thông tin tr m d ng Popup g i ý mã tr m Thông tin tr m d ng Hi n th lên b n đ Trang tìm tr m 1 2
Hình ch c n ng tìm ki m tr m d ng thông qua mã tr m
Hình 3.17: Giao di n ch c n ng tìm ki m tr m d ng theo mã tr m
3.3.7.2. Tìm ki m tr m d ng t m t v trí v i bán kính ch đnh.
Ch c n ng này đ c th c hi n t i trang b n đ , cho phép ng i dùng nh p vào m t v trí và m t bán kính, sau đó h th ng s ti n hành x lý đ tr v danh sách các tr m d ng tìm th y.
V trí trung tâm đ c xác đ nh b ng hai cách:
Nh p đa ch vào h p tìm ki m: ch c n ng này đ c h tr kèm v i ch c n ng “Tìm” đ tìm các đ a ch liên quan đ n t khóa c n nh p, giúp ng i s d ng ti t ki m đ c th i gian c ng nh h n ch các sai sót liên quan đ n vi c nh p đa ch .
ánh d u tr c ti p trên b n đ : cho phép ng i dùng linh đ ng h n trong vi c xác đnh v trí tìm ki m.
C hai cách xác đ nh v trí tìm ki m có s t ng quan h tr l n nhau. Khi ng i dùng nh p vào đ a ch trên h p tìm ki m thì đ a ch đó c ng s đ c đánh d u trên b n đ . Và ng c l i, khi ng i dùng đánh d u m t đi m trên b n đ thì đa ch c a đi m đó c ng s đ c hi n th trên h p tìm ki m.
ng d ng còn cho phép ng i dùng di chuy n v trí đã đ c đánh d u trên b n đ đ xác đnh l i v trí tìm ki m.
ng d ng cho phép nh p bán kính (t i đa là 2000 mét) theo hai cách:
Hình 3.18: S đ phân tích ch c n ng tìm ki m tr m d ng t m t đi m v i bán kính Reference S OK ZERO_RESULTS Di chuy n thanh bán kính.
C hai cách xác đnh bán kính trên có m i quan h v i nhau. Khi ng i dùng nh p giá tr trong textbox thì thanh bán kính c ng s hi n th t l t ng ng. Ng c l i khi di chuy n thanh bán kính thì giá tr c ng s hi n th t i textbox.
Sau khi đã xác đ nh đ c v trí và bán kính tìm ki m, ng d ng s truy c p d ch v Google Place Radar Search Service. D ch v này cho phép tìm ki m lên đ n 200 k t qu . Tuy nhiên, k t qu tr v t d ch v trên có h n ch là không có thành ph n ch a tên k t qu . Do đó, v i m i k t qu tìm th y, ng d ng s ph i truy c p đ n d ch v Google Place Details Service đ truy xu t thông tin tên c a k t qu tr v (trong tr ng h p này là tên c a tr m d ng tìm th y). ng th i, ng d ng c ng s v m t vòng tròn trên b n đ đ xác đnh ph m vi tìm ki m d a trên k t qu nghiên c u c s lý thuy t ch ng 2.
S đ phân tích ch c n ng tìm ki m tr m d ng nh sau: Xác đnh v trí ánh d u trên b n đ Nh p vào h p đa ch Xác đnh bán kính Nh p t i ô textbox Kéo thanh bán kính
Google Radar Search Service Server (Google)
Google Place Details Service
JSON
Thêm vào danh sách tr m d ng Hi n th lên b n đ C p nh t trang k t qu V trí V vòng tròn trên b n đ i = 0 i <= s ph n t tr v Không tìm th y tr m d ng Status ? JSON K t thúc i=i+1 Bán kính
Ng i dùng Nh p đa ch t i h p tìm ki m Ch c n ng tìm Server (Google) Không tìm th y v trí Ng i dùng S ZERO_RESULTS OK OK 1 2 3 4 5 6 7a 7b 8a 8b
Ghi chú: khi Status = OK thì s ph n t >=1
3.3.7.2.1. Ch n v trí tìm tr m d ng
Nh p đa ch t i h p tìm ki m.
ng d ng cho phép ng i dùng nh p v trí tìm ki m t i h p đa ch . Sau đó, s d ng ch c n ng “Tìm” đ tìm v trí c a đa ch v a nh p trên b n đ . Tr ng h p, có nhi u h n m t đa ch đ c tìm th y, ng d ng s hi n th m t popup cho ng i dùng ch n l a tr c khi hi n th trên b n đ . Tr ng h p, đa ch nh p vào là duy nh t, ng d ng s hi n th tr c ti p v trí lên b n đ . Ng c l i, n u đ a ch không t n t i, ng d ng s hi n thông báo không tìm th y v trí yêu c u.
Ch c n ng này c a ng d ng s d ng Google Place AutoComplete Service đ tìm các v trí g n gi ng v i đ a ch do ng i dùng nh p và Google Geocode Service đ tìm t a đ t đa ch .
S đ phân tích ch c n ng nh p đa ch t i h p tìm ki m nh sau:
Hình 3.19: S đ phân tích ch c n ng nh p đa ch t i h p tìm ki m
Google Place AutoComplete Service
Popup xác nh n v trí S ph n Status ? JSON
t >1
ánh d u v trí trên b n đ Ch n v trí
Google Geocode Service Server (Google) JSON
o Giao di n ng d ng khi th c hi n ch c n ng nh p đ a ch vào h p tìm ki m:
Hình 3.20: Xác đ nh v trí tìm tr m d ng
ánh d u tr c ti p v trí tìm tr m d ng trên b n đ
đánh d u m t đi m trên b n đ , ng i dùng s d ng thao tác nh n và gi (hold). Khi đó, v trí s đ c đánh d u trên b n đ đ ng th i trên h p tìm ki m c ng s hi n th tên c a đa ch t i đa đi m mà ng i dùng đánh d u. N u mu n thay đ i v trí, ng i dùng nh n và di chuy n v trí đó trên b n đ .
Ch c n ng này s d ng d ch v Google Reverse Geocode Service đ l y đa ch t t a đ . Khi ng i dùng kích ho t ch c n ng tìm tr m t i trang b n đ , khi đó m t khai báo s ki n đ c thêm vào nh sau:
googlemap.Hold += new EventHandler
<System.Windows.Input.GestureEventArgs>(googlemap_Hold);
Khi b ch n ch c n ng tìm tr m, s ki n hold c a b n đ s đ c thu h i.
googlemap.Hold -= googlemap_Hold;
Trong s ki n hold c a googlemap, ta s xây d ng các ph ng th c c n thi t đ hi n th c đ c tính n ng trên.
3.3.7.2.2. Xác đnh bán kính
Bán kính tìm ki m đ c xác đnh thông qua hai cách: nh p t i ô textbox ho c kéo tr t thanh bán kính. C hai cách đ u có m i quan h logic v i nhau. Sau khi xác đ nh bán kính n u đã có v trí tìm tr m thì ng d ng s v m t hình tròn đ xác đnh ph m vi tìm ki m trên b n đ .
3.3.7.2.3. Xem k t qu
K t qu tr v c a vi c tìm ki m tr m d ng s đ c th hi n hai d ng sau:
T i trang b n đ : các tr m d ng tìm th y s đ c đánh d u (pushpin) trên b n đ giúp ng i dùng d dàng quan sát h n.
T i trang k t qu : t t c tr m d ng tìm th y s đ c hi n th trong m t listbox đ ng th i ng d ng còn th hi n s tr m d ng tìm th y.
3.3.8 Tìm đ ng đi b ng xe buýt
Ch c n ng này đ c th c hi n t i trang b n đ , cho phép ng i dùng nh p vào đi m b t đ u và đi m k t thúc, sau đó h th ng s x lý đ tìm đ ng đi b ng xe buýt gi a hai đi m trên.
M c đnh, ng d ng s tr v t t c các l trình tìm th y ho c có th đ c t i u theo 4 tiêu chí sau:
Th i gian đi nhanh nh t. i b ít nh t. S tuy n đi ít nh t. Chi phí ít nh t. Vi c xác đnh đi m đ u ho c đi m k t thúc đ c th c hi n b ng hai cách: Nh p đa ch t i h p tìm ki m. ánh d u tr c ti p trên b n đ .
Bên c nh đó, ng d ng cho phép ng i dùng có th di chuy n các đi m b t đ u ho c đi m k t thúc trên b n đ đ xác đnh l i v trí ho c chuy n đ i qua l i gi a đi m b t đ u và k t thúc.
Sau khi đã cung c p đi m b t đ u và k t thúc, ng d ng s s d ng d ch v Google Direction Service đ tìm l trình di chuy n. K t qu tr v là m t t p tin JSON, ti p t c phân rã t p tin trên đ truy xu t các thông tin liên quan đ n vi c ch đ ng k t h p v i vi c s d ng ph ng th c gi i mã t a đ ch ng 2 đ gi i mã thành ph n points trong polyline ph c v cho vi c v l trình lên b n đ . Sau đó, trong danh sách các k t qu tr v , em ti p t c xây d ng các ph ng th c đ tìm l trình phù h p v i tiêu chí mà ng i dùng đã ch n.
Bên c nh đó, đ có th s d ng các thông tin ch đ ng đ c hi u qu c ng nh gi m vi c phân rã t p tin JSON, em đã ti n hành xây d ng m t class (Routes.cs) đ l u các thông tin ch đ ng. Nh v y, t p tin JSON s đ c phân rã 1 l n và các thông tin s đ c l u l i trong class Routes.cs. nh ng l n s d ng sau, thay vì ph i phân rã l i t p tin JSON, ng d ng s truy xu t thông tin thông qua class này.
Geocode OK ZERO_RESULTS S ReverseGeocode Geocode ReverseGeocode
S đ phân tích ch c n ng tìm đ ng đi b ng xe buýt nh sau:
i m b t đ u
i m k t thúc Nh p đa ch
ánh d u trên b n đ
Server (Google)
Google Direction Service
Trang k t qu Nh p đa ch ánh d u trên b n đ JSON Không tìm th y l trình i = 0 i<= s ph n t Status? Kh i t o 1 đ i t ng
leg thu c class Legs L u thông tin vào leg
Thêm leg vào danh sách các leg
i = i +1 Trang b n đ
Ghi chú: Routes.cs là tên c a class ch a class Legs
3.3.8.1. Xác đnh đi m b t đ u và đi m k t thúc 3.3.8.1.1. Nh p đa ch vào h p tìm ki m C ch c a tính n ng này t ng t tính n ng nh p đ a ch đ xác đnh v trí trung tâm tìm ki m tr m d ng trên h p tìm ki m. Hình 3.23 : Xác đ nh đi m b t đ u và k t thúc b ng cách nh p đa ch tr c ti p. 3.3.8.1.2. ánh d u tr c ti p trên b n đ . đánh d u m t đi m trên b n đ , ng i dùng s d ng thao tác nh n và gi (hold). Khi đó, m t popup s hi n ra đ ng i dùng xác đnh đó là đi m b t đ u hay đi m k t thúc. Ch c n ng này s d ng d ch v Google Reverse Geocode Service đ l y đa ch t t a đ . M i l n s d ng ch c n ng tìm đ ng thì event handle sau s đ c thêm vào đ kích ho t s ki n hold c a b n đ :
googlemap.Hold += new
EventHandler<System.Windows.Input.GestureEventArgs>(googlemap_Hold);
Khi b ch n ch c n ng tìm đ ng, s ki n hold c a b n đ s đ c thu h i
Tr ng h p ng i dùng mu n s d ng v trí c a mình trong vi c tìm đ ng, thì ch vi c nh n gi (hold) t i v trí đó và ch n là đi m b t đ u hay đi m k t thúc trong l trình.
Vi c đánh d u tr c ti p trên b n đ s làm phát sinh v n đ sau:
Các v trí đ c đánh d u có th n m gi a m t trung tâm th ng m i, b nh vi n, nhà hàng, công viên,… Do đó, khi ti n hành gi i mã thành ph n points đ v l trình trên b n đ thì l trình có kho ng “h ” v i đi m b t đ u và đi m k t thúc. Nguyên nhân, là do Google Direction Service th c hi n tìm đ ng gi a hai đi m trên con đ ng. gi i quy t v n đ trên, sau khi th c hi n tìm đ ng, ta ti n hành d ch chuy n đi m b t đ u và đi m k t thúc ra “v trí trên đ ng”. Theo đó, đi m b t đ u và đi m k t thúc l n l t là t a đ đ u tiên và cu i cùng c a thành ph n points trong polyline.
S ki n hold c a b n đ đ c s d ng chung cho c 2 ch c n ng: hold đ xác đ nh v trí tìm tr m d ng, hold đ xác đnh v trí đi m b t đ u và đi m k t thúc. Do đó, đ phân bi t khi hold trên b n đ đ th c hi n ch c n ng nào, ta ph i ti n hành thêm vào các bi n đóng vai trò là các c đ báo hi u.
Khi ng i dùng ch n ch c n ng “T đây”, ng d ng s hi u đó là đi m b t đ u, và n u ch n ch c n ng “ n đây”, ng d ng s hi u đó là đi m k t thúc.
3.3.8.2. Xây d ng các class l u thông tin l trình