Một trong những ứng dụng phổ biến trên web là ứng dụng bản đồ, mà thường được sử dụng để cung cấp thông tin về địa điểm, theo dõi hàng hóa hoặc tìm kiếm địa điểm. Trong bài viết này, chúng tôi sẽ giới thiệu kiến thức về việc làm thế nào để làm việc với bản đồ.
Lat và Lon là gì?
- Lat viết tắt của Latitude là vĩ độ, là một tạo độ xác định vị trí bắc nam của một điểm trên bề mặt trái đất.
- Lon viết tắt của Longitude là kinh độ, là một toạ độ xác định vị trí đông tây của một điểm trên bên mặt trái đất.
Từ kinh độ và vĩ độ ta xác định dễ dàng được vị trí của các đối tượng, từ đó tìm được tên đường phố, toà nhà, …
Lấy thông tin Lat & Lon của người dùng bằng Javascript
Khi người dùng sử dụng thiết bị có GPS và đã cho phép ứng dụng truy cập thông tin vị trí (location), chúng ta có thể xác định vị trí của họ với độ chính xác cao.
<!DOCTYPE html> <html lang="en"> <body> <p>Click the button to get your coordinates.</p> <button onclick="getUserLocation()">Try It</button> <p id="demo"></p> <script> var x = document.getElementById("demo"); function getUserLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { alert("Geolocation is not supported by this browser.") } } function showPosition(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; alert('Your Latitude:' + lat + ' and Longitude:' + lon); } </script> </body> </html>
Tính toán khoảng cách giữa 2 điểm
Bằng PHP
/** * @param $lat1 * @param $lon1 * @param $lat2 * @param $lon2 * @param string $unit * @return float */ function getDistanceBetweenPoints($lat1, $lon1, $lat2, $lon2, string $unit = 'm'): float { $theta = $lon1 - $lon2; $distance = (sin(deg2rad($lat1)) * sin(deg2rad($lat2))) + (cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta))); $distance = acos($distance); $distance = rad2deg($distance); $distance = $distance * 60 * 1.1515; switch($unit) { case 'm': break; case 'km' : $distance = $distance * 1.609344; } return (round($distance,2)); }
Bằng Python
from numpy import sin, cos, arccos, pi, round def get_distance_between_points(lat1, lon1, lat2, lon2, unit='miles'): """ Get Distance Between Points - vinasupport.com :param lat1: :param lon1: :param lat2: :param lon2: :param unit: :return: """ def rad2deg(radians): degrees = radians * 180 / pi return degrees def deg2rad(degrees): radians = degrees * pi / 180 return radians theta = lon1 - lon2 distance = 60 * 1.1515 * rad2deg( arccos( (sin(deg2rad(lat1)) * sin(deg2rad(lat2))) + (cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * cos(deg2rad(theta))) ) ) unit_to_distance = { 'm': round(distance, 2), 'km': round(distance * 1.609344, 2) } return unit_to_distance.get(unit, 0)