web-dev-qa-db-fra.com

Calculer la distance entre deux points dans Leaflet

Comment calculez-vous la distance entre deux marqueurs dans Leaflet-ionic2?

Impossible de comprendre, j'espère qu'il y a un algorithme à faire dès que je sélectionne un marqueur, il me montre la distance entre mon emplacement et le marqueur.

Merci..

13
Taieb

Vous pouvez utiliser cette fonction pour trouver la distance entre 2 positions.

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])

Nous utilisons cette fonction dans notre bibliothèque time-aware-polyline pour encoder les dernières informations avec horodatage.

11
Gaurav Mukherjee

Le Manuel du dépliant mentionne la fonction distanceTo, qui calcule la distance en mètres.

Exemple plagié de Google Groupes :

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';
}
6
aggregate1166877