Giới thiệu Geolocation

HTML5 Geolocation API cho bạn chia sẻ vị trí của bạn với các Website ưa thích. Một Javascript có thể nắm bắt được vĩ độ và kinh độ của bạn và có thể được gửi trở lại Webserver và thực hiện nhận biết vị trí như tìm kiếm các doanh nghiệp địa phương hoặc vị trí của bạn trên bản đồ.

Ngày nay hầu hết các trình duyệt và thiết bị Mobile hỗ trợ Geolocation API. Geolocation API làm việc với một thuộc tính mới của đối tượng điều hướng toàn cầu, ví dụ: đối tượng Geolocation mà có thể được tạo như sau:

var geolocation = navigator.geolocation;

Đối tượng Geolocation là một đối tượng dịch vụ cho phép các Widget để đạt được thông tin về vị trí địa lý của thiết bị.

Phương thức Geolocation

Đối tượng Geolocation cung cấp các phương thức sau:

Phương thứcMiêu tả
[getCurrentPosition()]( "Phương thức getCurrentPosition trong HTML5")Phương thức này thu nhận vị trí địa lý hiện tại của người dùng.
[watchPosition()]( "Phương thức watchPosition trong HTML5")Phương thức này thu nhận các cập nhật định kỳ về vị trí địa lý của thiết bị.
[clearWatch()]( "Phương thức clearWatch trong HTML5")Phương thức này hủy một việc gọi watchPosition đang diễn ra.

Ví dụ

Sau đây là code mẫu để sử dụng trong bất kỳ phương thức trên:

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler);
}

Tại đây, showLocation và errorHandler là các phương thức gọi lại (callback) mà sẽ được sử dụng để nhận vị trí thực sự như đã giải thích trong phần tiếp theo và để xử lý các lỗi nếu có.

Các thuộc tính vị trí

Các phương thức getCurrentPosition() và getPositionUsingMethodName() xác định phương thức callback mà thu nhận thông tin vị trí. Những phương thức này được gọi không đồng bộ với một đối tượng Position mà lưu thông tin vị trí đầy đủ.

Đối tượng Position xác định vị trí địa lý hiện tại của thiết bị. Vị trí này được biểu diễn như là một tập hợp các tọa độ địa lý cùng với thông tin về heading và tốc độ.

Bảng sau miêu tả các thuộc tính của đối tượng Position. Với các thuộc tính tùy ý, nếu hệ thống không thể cung cấp một giá trị, thì giá trị của thuộc tính được thiết lập là null.

Thuộc tínhKiểuMiêu tả
coordsobjects

Xác định vị trí địa lý của thiết bị. Vị trí này được biểu diễn như là một tập hợp các tọa độ địa lý cùng với thông tin về heading và tốc độ.

coords.latitudeNumber

Xác định sự ước lượng vĩ độ. Dãy giá trị là [-90.00, +90.00].

coords.longitudeNumber

Xác định sự ước lượng kinh độ. Dãy giá trị là [-180.00, +180.00].

coords.altitudeNumber

[Tùy ý] Xác định ước lượng cao độ bằng đơn vị mét trên mặt bầu dục WGS 84.

coords.accuracyNumber

[Tùy ý] Xác định độ chính xác của ước lượng vĩ độ bằng đơn vị mét.

coords.altitudeAccuracyNumber

[Tùy ý] Xác định độ chính xác của ước lượng cao độ bằng đơn vị mét.

coords.headingNumber

[Tùy ý] Xác định hướng hiện tại của thiết bị theo chiều kim đồng hồ liên quan tới giá trị đúng là North

coords.speedNumber

[Tùy ý] Xác định tốc độ mặt đất của thiết bị bằng đơn vị m/s

timestampdate

Xác định thời gian khi thông tin vị trí được thu nhận và đối tượng Position được tạo.

Ví dụ

Sau đây là code mẫu mà sử dụng đối tượng Position. Ở đây, phương thức showLocation là một phương thức callback:

function showLocation( position ) {
  var latitude = position.coords.latitude;
  var longitude = position.coords.longitude;
  ...
}

Xử lý lỗi

Geolocation là phức tạp, và nó là cần thiết để phát hiện lỗi và xử lý các lỗi đó:

Các phương thức getCurrentPosition() và watchPosition() sử dụng một phương thức callback xử lý lỗi cho đối tượng PositionError. Đối tượng này có các thuộc tính sau:

Thuộc tínhKiểuMiêu tả
codeNumberChứa một code giá trị số cho lỗi
messageStringChứa một miêu tả con người có thể đọc về lỗi.

Bảng sau miêu tả các code lỗi có thể có được trả về trong đối tượng PositionError:

CodeHằng sốMiêu tả
0UNKNOWN\_ERRORPhương thức thất bại trong việc thu nhận vị trí của đối tượng do một lỗi nào đó
1PERMISSION\_DENIEDPhương thức thất bại trong việc thu nhận vị trí của thiết bị bởi vì ứng dụng không cho phép sử dụng Location Service.
2POSITION\_UNAVAILABLEVị trí của thiết bị không thể xác định được.
3TIMEOUTPhương thức không thể thu nhận thông tin vị trí trong khoảng thời gian tối đa đã cho.

Ví dụ

Dưới đây là code mẫu sử dụng đối tượng PositionError. Ở đây phương thức errorHandler là một phương thức callback:

function errorHandler( err ) {
  if (err.code == 1) {
    // access is denied
  }
  ...
}

Các tùy chọn Position

Sau đây là cú pháp thực tế của phương thức getCurrentPosition():

getCurrentPosition(callback, ErrorCallback, options)

Ở đây, tham số thứ 3 là đối tượng PositionOptions xác định một tập hợp các tùy chọn để thu nhận vị trí địa lý của thiết bị:

Sau đây là các tùy chọn có thể được xác định như là tham số thứ ba:

Thuộc tínhKiểuMiêu tả
enableHighAccuracyBooleanXác định có hay không Widget muốn nhận ước lượng có thể về vị trí chính xác nhất. Theo mặc định nó là False.
timeoutNumberThuộc tính này là số phần nghìn giây (mili giây) ứng dụng web của bạn sẵn lòng đợi cho một vị trí.
maximumAgeNumberXác định thời gian hết hạn bằng đơn vị mili giây cho thông tin vị trí được thu nhận.

Ví dụ

Sau đây là một code mẫu chỉ cách sử dụng các phương thức trên:

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler,
                                 {maximumAge: 75000});
}

Bình luận