计算传单中两点之间的距离

Tai*_*ieb 9 geolocation leaflet ionic2

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

不知道,我希望有一个Algorithme可以在我选择一个标记时立即执行,它会向我显示我的位置和标记之间的距离。

谢谢..

Gau*_*jee 11

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

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])
Run Code Online (Sandbox Code Playgroud)

我们在我们的库时间感知折线中使用此函数,以使用时间戳对纬度信息进行编码。

  • 应该是[lat1,lng1],[lat2,lng2]而不是[lat1,lng2],[lat2,lng2] (3认同)

agg*_*877 6

单张手册提到distanceTo功能,其计算以米为单位的距离。

Google网上论坛窃的示例:

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';
}
Run Code Online (Sandbox Code Playgroud)

  • @coder101 行驶距离怎么可能?您应该阅读手册。“返回使用球余弦定律计算出的到给定 LatLng 的距离(以米为单位)。” (3认同)