Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

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)


Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *