CH NG 2 : CS LÝ THUY T
2.6 Google maps API Webservices
2.6.1 Cú pháp s d ng
Trên n n Windows phone, vi c s d ng Google maps API đ c th c hi n thông qua các c ng Web services nh m truy v n d li u c a Google. Các d ch v này đ c thi t k đ s d ng k t h p v i m t b n đ .
Các d ch v Web services s d ng các yêu c u HTTP đ n đ ng d n (URL) c th , qua các thông s URL nh đ i s cho các d ch v . K t qu tr v là m t t p tin theo cú pháp XML ho c JSON.
Cú pháp đ s d ng Google maps API Web services có d ng:
http://maps.googleapis.com/maps/api/service/output?parameters
Trong đó:
Service: đ i di n cho tên c a m t d ch v c th (ch ng h n: geocode, direction,…) Output: đ i di n cho lo i t p tin tr v c a k t qu truy v n (có th là t p tin theo
đnh d ng XML ho c JSON).
Parameters: đ i di n cho các thông s (b t bu c và tùy ch n) kèm theo t ng service c th .
Bên c nh đó, ng d ng c ng có th s d ng Google maps API Web services thông qua giao th c HTTPS theo cú pháp:
https://maps.googleapis.com/maps/api/service/output?parameters
HTTPS đ c khuy n khích cho các ng d ng bao g m các d li u ng i dùng nh y c m, ch ng h n nh v trí c a ng i dùng đ c g i đi nh là m t tham s trong yêu c u.
2.6.2 X lý k t qu tr v
Sau khi g i yêu c u thơng qua Web service, thì h th ng server c a Google s tr v t p tin k t qu theo đnh d ng XML ho c JSON.
XML và JSON đ u là các t p tin dùng đ trao đ i d li u. Vi c s d ng XML ho c JSON đ nh n k t qu tr v là tùy thu c vào tình hu ng s d ng. V i cùng m t d li u thì t p tin JSON có dung l ng nh h n, th i gian truy n t i nhanh h n, d phân tích h n so v i XML. Các đ c tính trên c a JSON phù h p v i vi c nh n ph n h i và phân tích k t qu tr v t m t ng d ng trên n n đi n tho i.
2.6.2.1. Cú pháp c a t p tin JSON
T p tin JSON là m t v n b n thu n (khơng có đnh d ng: màu s c, c ch ,…) theo mơ hình phân c p (c u trúc cây) bao g m m t t p h p các ph n t con theo cú pháp JavaScript:
Ví d : “first name” : “Tài”
D li u phân cách v i nhau b ng d u ph y.
Ví d : { “first name” : “Tài” , “last name” : “Lê H u” } M i đ i t ng n m trong c p ngo c nh n ‘{}’.
Các đ i t ng “con” n m trong d u ngo c vuông ‘[]’ c a đ i t ng “cha”. Ví d :
{ “sinhvien”: [{“first name” : “Tài” , “last name” : “Lê H u” } ,
{ “first name” : “Huy” , “last name” : “Hu nh Ng c” } ]
}
2.6.2.2. Phân tích t p tin JSON
Cú pháp s d ng các thành ph n c a t p tin JSON nh sau:
<Tên t p tin JSON>[“Tên thành ph n cha”][“Tên thành ph n con”]…
Ví d : trong t p tin JSON (t m g i là JSON_Result) tr v sau khi th c hi n truy v n Google Geocoding (tìm đa ch t t a đ ). có th l y đ c k t qu đa ch , ta th c hi n sau l nh sau:
JSON_Result["results"].ElementAt(0)["formatted_address"]
Do k t qu tr v có th ch a nhi u result, nên ElementAt(0): l y ph n t result đ u tiên.
T p tin JSON tr v t Google maps API Web services bao g m hai thành ph n: Status : cho bi t tình tr ng c a yêu c u.
Results (trong Google Geocoding, Reverse Geocoding), routes (trong Google Direction), predictions (trong Google Autocomplete): ch a các k t qu tr v sau khi yêu c u.
Các "status" có th ch a các giá tr sau:
"OK": ch ra r ng khơng có l i x y ra, có k t qu tr v .
"ZERO_RESULTS": khơng có l i x y ra, nh ng khơng có k t qu tr v . "OVER_QUERY_LIMIT": ch ra r ng đang v t h n m c s l n yêu c u. "REQUEST_DENIED" ch ra r ng yêu c u đã b t ch i, có th là vì thi u
m t thông s sensor.
"INVALID_REQUEST": th ng ch ra r ng các truy v n (address ho c lat/lng) sai, ho c thi u.
“UNKNOWN_ERROR”: ch ra r ng yêu c u không th th c hi n đ c do l i máy ch . Yêu c u có th thành cơng n u c g ng th l i các l n sau.
2.6.3 Google Direction API Service 2.6.3.1. Gi i thi u 2.6.3.1. Gi i thi u
Google Direction API là m t d ch v tính tốn h ng di chuy n gi a các đa đi m, s d ng m t yêu c u HTTP. D ch v này h tr cho nhi u lo i hình v n t i, ch ng h n nh : đi l i b ng ph ng ti n công c ng (xe buýt), lái xe (xe h i, xe taxi), lái xe đ p và đi b .
có th s d ng d ch v này, đòi h i c n ph i ch ra đi m b t đ u, và đi m k t thúc c a l trình, có th là m t chu i (ch ng h n “37 Ngô T t T , H Chí Minh, Vi t Nam”) ho c m t t a đ đa lý (v đ , kinh đ ).
2.6.3.2. Gi i h n s d ng
N u ng d ng s d ng tài kho n mi n phí đ truy v n d li u c a Google, thì s có gi i h n sau:
2.500 yêu c u truy v n Google Direction m i ngày.
Ch đ c phép s d ng t i đa 8 đi m chuy n h ng (waypoints) trong m i yêu c u.
Tr ng h p, Google maps API dành cho ng i s d ng có tr phí s có gi i h n s d ng Google Direction cao h n:
100000 yêu c u h ng d n l trình m i ngày.
Cho phép 23 đi m chuy n h ng trong m i l n yêu c u.
Tuy nhiên, m i l n yêu c u s d ng Google Direcion s đ c tính là 4 yêu c u, các đi m chuy n h ng (waypoints) không đ c dùng cho h ng d n tìm đ ng đi b ng xe buýt.
2.6.3.3. Cú pháp
Khi m t yêu c u Direction API đ c g i đi có d ng nh sau:
http://maps.googleapis.com/maps/api/directions/output?parameters
Bên c nh đó, đ s d ng Direction API trên HTTPS, ta s d ng cú pháp:
https://maps.googleapis.com/maps/api/directions/output?parameters
Trong đó: output có th là JSON ho c XML.
2.6.3.4. Các tham s
Ng i s d ng có th truy n nhi u tham s trong yêu c u, các tham s cách nhau b i kí t “&”. Danh sách các tham s và giá tr đ c li t kê nh sau:
Các tham s b t bu c ph i có trong yêu c u:
Origin ( i m xu t phát): a ch d ng chu i ho c giá tr c a v đ / kinh đ mà t đó có th tính tốn h ng di chuy n. Khi đa ch là m t chu i, các d ch v
Directions s mã hóa chu i và chuy n đ i nó thành m t v đ / kinh đ đ tính tốn h ng di chuy n.
Destination ( i m k t thúc): a ch d ng chu i ho c giá tr c a v đ / kinh đ mà t đó có th tính tốn h ng di chuy n. Khi đa ch là m t chu i, các d ch v Directions s mã hóa chu i và chuy n đ i nó thành m t v đ / kinh t a đ đ tính tốn h ng di chuy n
Sensor: Cho bi t li u có hay khơng u c u tìm h ng di chuy n đ n t m t thi t b c m ng v trí. Giá tr này ph i là true hay false.
Các tham s tùy ch n:
Mode (m t đnh là driving ): Ch đnh ph ng th c v n t i đ c s d ng đ tính tốn h ng di chuy n (có th là: driving, walking, bicycling hay transit). N u thi t l p ch đ "transit", thì c n ph i xác đnh thêm tham s ho c là departure_time (th i gian xu t phát) hay là arrival_time (th i gian đ n).
Waypoints: Ch đ nh các c t m c. Waypoints đ c s d ng đ thay đ i l trình b ng cách ch đnh các v trí c th mà l trình b t bu c ph i đi qua. M t waypoint đ c xác đnh ho c là m t t a đ g m v đ / kinh đ ho c m t đa ch đã đ c mã hóa. Waypoints ch h tr cho lái xe (driving), đi b (walking) hay lái xe đ p (bicycling), không h tr cho lo i hình đi l i b ng xe buýt (transit).
Avoid: Tính n ng ch đnh các tuy n đ ng nên tránh. Hi n nay, thông s này h tr hai đ i s sau: tolls tránh các tuy n đ ng có thu phí/c u và highways tránh các tuy n đ ng cao t c.
Region: Các mã vùng, mi n qu c gia g m hai kí t .
Units: Xác đ nh các đ n v h th ng đ s d ng khi hi n th k t qu .
Departure_time: Xác đ nh th i gian mong mu n kh i hành theo giây tính t n a đêm ngày 01/01/1970 (theo chu n gi qu c t UTC) cho đ n th i đi m yêu c u. Arrival_time: xác đnh th i gian mong mu n đ n m t đa đi m nào đó theo giây
tính t n a đêm ngày đêm ngày 01/01/1970 (theo chu n gi qu c t UTC).
Tr ng h p ng i dùng yêu c u truy v n m t transit direction, thì ph i khai báo m t trong hai thông s tùy ch n là departure_time ho c arrival_time.
2.6.3.5. Phân tích k t qu tr v
K t qu tr v t t p tin JSON g m 2 thành ph n:
Status: cho bi t tình tr ng k t qu sau khi th c thi yêu c u.
Routes: danh sách các l trình đi t đi m xu t phát đ n đi m k t thúc. M i “route” đ i di n cho m t l trình tìm th y bao g m 2 thành ph n chính:
Legs []: ch a m t danh sách các leg (m i leg đ i di n cho t ng con đ ng trong l trình). Tr ng h p, yêu c u truy v n là transit direction thì Legs [] ch ch a m t ph n t leg đ i di n cho con đ ng đi t đi m b t đ u đ n đi m k t thúc.
Overview_polyline: ch a thành ph n points (đ i di n cho m t dãy các t a đ đã đ c mã hóa c a l trình đi t đi m b t đ u đ n đi m k t thúc).
M i “leg” bao g m các thành ph n sau:
Steps []: ch a danh sách các step (m i step đ i di n cho t ng đo n đ ng trong con đ ng leg).
Distance: kho ng cách c a leg. Distance g m 2 thành ph n: value (giá tr c a kho ng cách tính b ng mét) và text (kho ng cách kèm theo đ n v mà ng i dùng có th hi u đ c).
Duration: th i gian đi cho m i leg. Duration g m 2 thành ph n: giá tr c a th i gian tính theo giây) và text (th i gian kèm theo đ n v mà ng i dùng có th hi u đ c).
Departure_time: th i gian kh i hành c a leg (ch có trong yêu c u transit direction).
Arrival_time: th i gian k t thúc c a leg (ch có trong yêu c u transit direction). Start_address: đ a ch đi m b t đ u c a leg
End_address: đa ch đi m k t thúc c a leg.
Start_location: đa ch đi m b t đ u c a leg theo t a đ (lat/lng). End_location: đ a ch đi m k t thúc c a leg theo t a đ (lat.lng).
M i “step” ch a các thành ph n chính sau: Html_instructions: ch d n đ ng đi cho step.
Start_location: đa ch đi m b t đ u c a leg theo t a đ (lat/lng). End_location: đ a ch đi m k t thúc c a leg theo t a đ (lat.lng).
Distance: kho ng cách c a m i step (g m 2 thành ph n: value và text). Duration: th i gian đi cho m i step (g m 2 thành ph n: value và text).
Travel_mode: đ i di n cho hình th c v n t i, n u ng i dùng th c hi n m t transit direction thì travel mode nh n 2 giá tr là “WALKING” ho c “TRANSIT”. N u travel_mode là “WALKING” thì m i step s bao g m m t danh sách các sub steps. N u travel_mode là “TRANSIT” thì m i step ch a m t transit_details v i các thành ph n sau:
o Departure_stop và arrival_stop: cho bi t thông tin v tr m d ng xu t phát và k t thúc trong đo n đ ng step. Thông tin v tr m d ng bao g m hai thành ph n: name (đa ch c a tr m d ng) và location (v trí (v đ , kinh đ ) c a tr m d ng).
o Arrival_time và departure_time: cho bi t th i gian kh i hành và k t thúc c a tuy n xe trên đo n đ ng step. Thông tin v th i gian bao g m 2 thành ph n: value và text.
o Line: ch a thông tin v tuy n xe, trong đó thành ph n name cho bi t tên tuy n xe c n đi.
2.6.4 Google Geocoding API Service 2.6.4.1. Gi i thi u 2.6.4.1. Gi i thi u
Geocoding là quá trình chuy n đ i đa ch v t a đ đ a lý (v đ , kinh đ ).
2.6.4.2. Gi i h n s d ng
Dùng cho tài kho n mi n phí là 2500 yêu c u m i ngày. Dùng cho tài kho n có tr phí là 100000 u c u m i ngày.
2.6.4.3. Cú pháp
M t yêu c u Geocoding API có d ng nh sau:
http://maps.googleapis.com/maps/api/geocode/output?parameters
Và, đ s d ng trên HTTPS là:
https://maps.googleapis.com/maps/api/geocode/output?parameters
Trong đó: output có th là JSON ho c XML
2.6.4.4. Các tham s
Ng i s d ng có th truy n nhi u tham s trong yêu c u, các tham s cách nhau b i kí t “&”. Danh sách các tham s và giá tr đ c li t kê nh sau:
Các tham s b t bu c ph i có trong yêu c u:
Address: đ a ch d ng chu i.
Sensor: Cho bi t li u có hay khơng u c u tìm t a đ đ n t m t thi t b c m ng v trí. Giá tr này ph i là true hay false.
Các tham s tùy ch n:
Language: ngôn ng k t qu tr v , đ c kí hi u b i hai kí t . Region: Các mã vùng, mi n qu c gia g m hai kí t .
Components: Các b l c thành ph n, cách nhau b ng m t d u ( | ). M i b l c thành ph n g m m t component:value
2.6.4.5. Phân tích k t qu tr v
T p tin JSON tr v g m 2 thành ph n là status và results. Trong đó, thành ph n “results” bao g m:
Type []: danh sách các lo i đa ch
Formatted_address: tên đa ch đ c ch đnh đ tìm t a đ đa lý.
Geometry: ch a thành ph n location (lat/lng) cho bi t thông tin v t a đ đa lý tìm đ c t đa ch .
2.6.5 Google Reverse Geocoding API Service 2.6.5.1. Gi i thi u 2.6.5.1. Gi i thi u
Reverse Geocoding là API chuy n đ i t a đ đa lý (v đ , kinh đ ) v đa ch .
2.6.5.2. Gi i h n s d ng
Dùng cho tài kho n mi n phí là 2500 yêu c u m i ngày. Dùng cho tài kho n có tr phí là 100000 u c u m i ngày.
2.6.5.3. Cú pháp
M t yêu c u Reverse Geocoding có d ng nh sau:
http://maps.googleapis.com/maps/api/geocode/output?parameters
Và, đ s d ng trên HTTPS là:
https://maps.googleapis.com/maps/api/geocode/output?parameters
Trong đó: output có th là JSON ho c XML
2.6.5.4. Các tham s
Ng i s d ng có th truy n nhi u tham s trong yêu c u, các tham s cách nhau b i kí t “&”. Danh sách các tham s và giá tr đ c li t kê nh sau:
Các tham s b t bu c ph i có trong yêu c u:
latlng: t a đ đa lý (v đ , kinh đ ).
Sensor: Cho bi t li u có hay khơng u c u tìm đa ch đ n t m t thi t b c m ng v trí. Giá tr này ph i là true hay false.
Các tham s tùy ch n:
Language: ngôn ng k t qu tr v , đ c kí hi u b i hai kí t .
Result_type: Cho bi t lo i k t qu đa ch tr v , ch ng h n country, postal_code ho c street_address (m c đnh).
2.6.5.5. Phân tích k t qu tr v :
T p tin JSON tr v g m 2 thành ph n là status và results. Trong đó, thành ph n “results” bao g m:
Type []: danh sách các lo i đa ch .
Formatted_address: tên đa ch tìm đ c t t a đ đa lý.
Geometry: ch a thành ph n location (lat/lng) cho bi t thông tin v t a đ đa lý c n tìm đa ch .
2.6.6 Google Place Autocomplete API Service 2.6.6.1. Gi i thi u 2.6.6.1. Gi i thi u
Google Places Autocomplete là d ch v tìm các t g i ý so v i m t t khóa nào đó, thu c b Google Place API. s d ng d ch v Google Place API thì c n ph i có m t Place API key, quá trình đ ng ký và nh n key đ c mi n phí b i Google.
Hình 2.10: Minh h a ch c n ng autocomplete
Các b c đ ti n hành đ ng ký và nh n key nh sau:
Truy c p trang https://code.google.com/apis/console và đ ng nh p b ng tài kho n Gmail. M c đnh l n đ u tiên truy c p thành công vào trang web trên, m t d án m c đ nh API Project đ c t o ra, ng i dùng có th s d ng d án này hay t o m i tùy theo nhu c u. menu bên trái, click ch n Services Status Place API On API access.