HTML5 Geolocation API cho phép trang web truy cập vị trí địa lý của người dùng (sau khi họ cho phép). JavaScript lấy vĩ độ (latitude) và kinh độ (longitude), gửi lên server để tìm địa điểm gần đó, hiển thị trên bản đồ, v.v.
API làm việc qua đối tượng navigator.geolocation.
Các phương thức chính:
| Phương thức | Mô tả |
|---|---|
getCurrentPosition(success, error, options) | Lấy vị trí hiện tại (1 lần). |
watchPosition(success, error, options) | Theo dõi vị trí liên tục (khi di chuyển). |
clearPosition(watchId) | Dừng theo dõi. |
Ví dụ: Lấy vị trí hiện tại
<!DOCTYPE html>
<html>
<head>
<script>
function hienThiViTri(position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
alert("Vĩ độ: " + lat + " | Kinh độ: " + lon);
// Có thể dùng lat/lon để gọi Google Maps API, OpenStreetMap...
}
function xuLyLoi(err) {
switch(err.code) {
case err.PERMISSION_DENIED:
alert("Lỗi: Người dùng từ chối cho phép truy cập vị trí!");
break;
case err.POSITION_UNAVAILABLE:
alert("Lỗi: Không xác định được vị trí!");
break;
case err.TIMEOUT:
alert("Lỗi: Hết thời gian chờ!");
break;
}
}
function layViTri() {
if (navigator.geolocation) {
var options = {
enableHighAccuracy: true, // GPS chính xác
timeout: 10000, // 10 giây
maximumAge: 0 // Không dùng cache
};
navigator.geolocation.getCurrentPosition(hienThiViTri, xuLyLoi, options);
} else {
alert("Trình duyệt không hỗ trợ Geolocation!");
}
}
</script>
</head>
<body>
<button onclick="layViTri()">Lấy vị trí của tôi</button>
</body>
</html>
Lưu ý quan trọng:
- Chỉ hoạt động trên HTTPS (hoặc localhost).
- Người dùng phải cho phép (permission prompt).
- Độ chính xác phụ thuộc thiết bị: GPS (điện thoại) ~10m, WiFi/IP (desktop) ~km.
- Luôn xử lý lỗi (permission denied, timeout, unavailable).