HTML5 & CSS3 – Geolocation (Định vị người dùng)

HTML5 & CSS3 – Geolocation (Định vị người dùng)

Link Demo

HTML5 Geolocation API được sử dụng để định vị vị trí địa lý người dùng.
Việc xác định vị trí người dùng là thỏa hiệp giữa 2 bên, do đó nếu người dùng không chấp thuận cho biết vị trí của mình thì ta không thể biết được.

HTML5 – Cách dùng Geolocation

Dùng hàm getCurrentPosition() để lấy vị trí người dùng.

Ví dụ: Định vị đơn giản trả về các vĩ độ và kinh độ của vị trí của người sử dụng:

<script> 
var x=document.getElementById("demo"); 
function getLocation() 
  { 
  if (navigator.geolocation) 
    { 
    navigator.geolocation.getCurrentPosition(showPosition); 
    } 
  else{x.innerHTML="Geolocation is not supported by this browser.";} 
  } 
function showPosition(position) 
  { 
  x.innerHTML="Latitude: " + position.coords.latitude +  
  "<br>Longitude: " + position.coords.longitude;  
  } 
</script>  

Giải thích ví dụ :

• Kiểm tra xem có hỗ trợ định vị hay không
• Nếu có hỗ trợ, chạy hàm getCurrentPosition() . Nếu không, hiển thị thông báo
• Nếu hàm getCurrentPosition() thực thi thành công, trả về tọa độ cho hàm showPosition()
• Hàm showPosition() hiển thị ra kinh độ và vĩ độ
Ví dụ trên là một đoạn xử lý rất cơ bản, không có bắt lỗi.

Xử lý lỗi hoặc khi người dùng từ chối tiết lộ thông tin vị trí

Tham số thứ hai của phương thức getCurrentPosition() được dùng để xử lý lỗi. Nó quy định hàm nào sẽ chạy nếu có lỗi.

Ví dụ

<script> 
var x=document.getElementById("demo"); 
function getLocation() 
  { 
  if (navigator.geolocation) 
    { 
    navigator.geolocation.getCurrentPosition(showPosition,showError); 
    } 
  else{x.innerHTML="Geolocation is not supported by this browser.";} 
  } 
function showPosition(position) 
  { 
  x.innerHTML="Latitude: " + position.coords.latitude +  
  "<br>Longitude: " + position.coords.longitude;     
  } 
function showError(error) 
  { 
  switch(error.code)  
    { 
    case error.PERMISSION_DENIED: 
      x.innerHTML="User denied the request for Geolocation." 
      break; 
    case error.POSITION_UNAVAILABLE: 
      x.innerHTML="Location information is unavailable." 
      break; 
    case error.TIMEOUT: 
      x.innerHTML="The request to get user location timed out." 
      break; 
    case error.UNKNOWN_ERROR: 
      x.innerHTML="An unknown error occurred." 
      break; 
    } 
  } 
</script>  

Mã lỗi:

  • Permission denied – Người dùng không chấp thuận chia sẻ vị trí
  • Position unavailable – Không lấy được tọa độ
  • Timeout – Hết thời gian thực thi

Hiển thị kết quả trên bản đồ

Để hiển thị kết quả ra bản đồ, bạn cần truy cập vào dịch vụ bản đồ như dịch vụ Google Maps để sử dụng kinh độ và vĩ độ.

Ví dụ

function showPosition(position) 
{ 
var latlon=position.coords.latitude+","+position.coords.longitude; 

var img_url="http://maps.googleapis.com/maps/api/staticmap?center=" 
+latlon+"&zoom=14&size=400x300&sensor=false"; 

document.getElementById("mapholder").innerHTML="<img src='"+img_url+"'>"; 
}  

Trong ví dụ trên chúng ta sử dụng kinh độ, vĩ độ trả về để hiển thị ra vị trí trên bản đồ.

Phương thức getCurrentPosition() – Kết quả trả về

Ta có thể lấy kết quả trả về bằng các cách trong bảng dưới đây

coords.latitude: Vĩ độ số thập phân

coords.longitude: Kinh độ số thập phân

coords.accuracy: Độ chính xác của vị trí

coords.altitude: Độ cao so với mực nước biển

coords.altitudeAccuracy: Độ chính xác của độ cao

coords.heading: Tọa độ theo kim đồng hồ phía Bắc

coords.speed: Tốc độ m/s

timestamp: Thời gian lúc trả về kết quả

Một số phương thức khác đáng quan tâm

watchPosition(): Theo dõi vị trí, trả về vị trí người dùng và cập nhật khi người dùng di chuyển (như GPS trong xe hơi).

clearWatch(): Dừng phương thức watchPosition().

Ví dụ sau dùng phương thức watchPosition() 

Bạn cần một thiết bị kiểm tra cho kết quả tọa độ chính xác (như iPhone):

<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.watchPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script> 

Theo khoapham.vn

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
MarTech Talks #4: CONTENT - TRAFFIC - CONVERSION tại Tp.HCM

MarTech Talks #4: CONTENT - TRAFFIC - CONVERSION tại Tp.HCM

Ngày 8.9.2019, đã diễn ra sự kiện MarTech Talks #04 tại MPLEX Studio & Theatre, 62 Trần Quang Khải, Phường Tân Định, Quận 1, TP.HCM của Asia Mar Tech Group (Đơn vị chủ quản của chuỗi MarTechTalks)

blogviet

Những mánh khóe gian lận của một số Blogger Việt

Cách đây cũng gần một tháng, blogviet được một người bạn, một blogger có tiếng mà hẳn nhiều bạn đọc đã quen tên @Hùng Marketing cho biết rằng, một số blogger Việt đang dùng những mánh khóe gian lận để kiếm tiền từ các mạng affiliate

Hướng dẫn chèn CSS Style vào trong Drupal 7 Views

Hướng dẫn chèn CSS Style vào trong Drupal 7 Views

In this tutorial, we're going to show you how to apply CSS to your views so you can add both color and width.

Công ty diệt chuột T&C

 

Diet con trung