Thứ Bảy, 1 tháng 1, 2011

HTML5 - Geolocations

Geolocation là một trong những tính năng mới khá thú vị mà được hỗ trợ trong phiên bản HTML5.
Khi nhắc tới geolocation thì chúng ta sẽ nghĩ đến các khái niệm như tọa độ (kinh độ và vĩ độ), vậy thì nó được tính hợp với html5 như thế nào ?.

Hiện tại thì HTML5 geolocation được hỗ trợ tốt trên các nền điện thoại thông minh, với sự hỗ trợ của các thiết bị GPS (
Global Positioning System) được tích hợp sẵn trên điện thoại.

Mình xin đi vào chi tiết cách sử dụng tính năng này:
do đây là tính năng mới và còn phụ thuộc vào trình duyệt, để sử dụng được chúng, ta sẽ sử dụng object navigator của browser mà bạn đang dùng, cụ thể như sau:
window.navigator.geolocation.getCurrentPosition(showMyPosition,errorCallback);
  • getCurrentPosition : phương thức giúp chúng ta lấy được vị trí hiện tại của user
  • showMyPosition : một callback function (phương thức này được gọi sau khi phương thức getCurrentPosition trả về thành công)
  • errorCallback : một callback function (phương thức được gọi nếu xảy ra lỗi trong quá trình lấy vị trí của user)
bản thân object geolocation hỗ trợ các phương thức sau:
void getCurrentPostition (successCallback,errorCallback) : chỉ lấy vị trí hiện tại của user
long watchPosition (successCallback,errorCallback) : lấy vị trí hiện tại của user và đồng thời tracking(theo dỏi) theo vị trí của user nếu có sự thay đổi vị trí
void clearWatch(long watchId) : chấm dứt chức năng tracking vị trí của user
successCallback (position) : phương thức này nhận 1 tham số position - chính là vị trí hiện tại của user
errorCallback (errorCode) : errorCode - chi tiết thông tin lỗi

chi tiết về các property của từng object các bạn có thể tham khảo trực tiếp trên http://www.w3.org/TR/html5/

Vậy thì các trình duyệt sẽ dựa vào dữ liệu nào từ phía user để lấy thông tin về vị trí của user và các trình duyệt sẽ lấy chúng từ đâu ?
  • các trình duyệt sẽ sử dụng các hỗ trợ từ thiết bị phần cứng GPS trên điện thoại của bạn để trả về chính xác vị trí hiện tại
  • vậy nếu bạn không có GPS hardware thì sao ? khi đó trình duyệt sẽ sử dụng dựa vào thông tin của các cell phone (trạm phát sóng) gần đó để tính toán vị trí của bạn.
  • vậy nếu bạn dùng trên PC thì các browser sẽ sử dụng thông tin nhà cung cấp dịch vụ mạng mà bạn đang sử dụng hay sẽ dựa vào các cột sống wifi gần đó , nhưng kết quả trả về sẽ không đảm bảo độ chính xác cao (chỉ mang tính tham khảo).
Theo mình biết thì hiện nay các trình duyệt như Google Chrome và Firefox đều có hỗ trợ tính năng này. Đối với Chrome và Firefox đều sử dụng dịch vụ google để lấy thông tin vị trí của user.