【问题标题】:Calculate distance between two points in Leaflet计算Leaflet中两点之间的距离
【发布时间】:2017-08-27 07:17:15
【问题描述】:

如何计算 Leaflet-ionic2 中两个标记之间的距离?

想不通,我希望有一个算法可以在我选择标记后立即显示我的位置与标记之间的距离。

谢谢..

【问题讨论】:

    标签: geolocation ionic2 leaflet


    【解决方案1】:

    您可以使用此功能查找 2 个位置之间的距离。

    function getDistance(origin, destination) {
        // return distance in meters
        var lon1 = toRadian(origin[1]),
            lat1 = toRadian(origin[0]),
            lon2 = toRadian(destination[1]),
            lat2 = toRadian(destination[0]);
    
        var deltaLat = lat2 - lat1;
        var deltaLon = lon2 - lon1;
    
        var a = Math.pow(Math.sin(deltaLat/2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(deltaLon/2), 2);
        var c = 2 * Math.asin(Math.sqrt(a));
        var EARTH_RADIUS = 6371;
        return c * EARTH_RADIUS * 1000;
    }
    function toRadian(degree) {
        return degree*Math.PI/180;
    }
    var distance = getDistance([lat1, lng1], [lat2, lng2])
    

    我们在我们的库 time-aware-polyline 中使用这个函数来编码带有时间戳的 lat lng 信息。

    【讨论】:

    【解决方案2】:

    Leaflet manual 提到了 distanceTo 函数,它以米为单位计算距离。

    抄袭自Google Groups的例子:

    function createMarker()
    {
         var markerFrom = L.circleMarker([28.6100,77.2300], { color: "#F00", radius: 10 });
         var markerTo =  L.circleMarker([18.9750,72.8258], { color: "#4AFF00", radius: 10 });
         var from = markerFrom.getLatLng();
         var to = markerTo.getLatLng();
         markerFrom.bindPopup('Delhi ' + (from).toString());
         markerTo.bindPopup('Mumbai ' + (to).toString());
         map.addLayer(markerTo);
         map.addLayer(markerFrom);
         getDistance(from, to);
    }
    
    function getDistance(from, to)
    {
        var container = document.getElementById('distance');
        container.innerHTML = ("New Delhi to Mumbai - " + (from.distanceTo(to)).toFixed(0)/1000) + ' km';
    }
    

    【讨论】:

    • 此行驶距离或最短距离是基于 Haversine 或 Vincenty 等算法吗?
    • @coder101 怎么可能是行驶距离?你应该读过手册。 “返回距离(以米为单位)到使用余弦球定律计算的给定 LatLng。”
    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 2011-04-23
    • 2014-11-14
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多