web-dev-qa-db-fra.com

Google Maps - Comment obtenir la distance entre deux points en mètres?

J'ai ces coordonnées:

(45.463688, 9.18814) 
(46.0438317, 9.75936230000002)

et j'ai besoin (de Google API V3, je pense) d’obtenir la distance entre ces 2 points en mètres. Comment puis-je le faire? 

39
markzzz

Si vous souhaitez utiliser l'API Google Maps v3, voici une fonction à utiliser: Remarque: vous devez ajouter &libraries=geometry à votre source de script.

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>

<script>
var p1 = new google.maps.LatLng(45.463688, 9.18814);
var p2 = new google.maps.LatLng(46.0438317, 9.75936230000002);

alert(calcDistance(p1, p2));

//calculates distance between two points in km's
function calcDistance(p1, p2) {
  return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}

</script>
111
Roman Goyenko

Je pense que vous pouvez vous passer d’API spécifique et calculer la distance avec Javascript:

Ce site contient de bonnes informations sur les calculs géographiques et un échantillon Javascript pour le calcul de la distance.

Ok, coup d’œil rapide sur la page Google API et il semblerait que vous puissiez le faire en:

  1. Appelez DirectionsService (). Itinéraire () pour obtenir ItinéraireRésultat avec itinéraires
  2. Pour un ou chaque itinéraire, passez par la propriété des jambes et calculez la somme des distances.
4
PiRX

Cela se fait principalement avec les mathématiques en dehors de l'API Google. Vous ne devriez donc pas utiliser l'API pour rechercher autre chose que les bonnes coordonnées.

Sachant cela, voici un lien vers une question déjà résolue concernant Javascript.

Calculez la distance entre 2 coordonnées GPS

1
Dustin Sparks

Essaye ça

 CLLocationCoordinate2D coord1;
 coord1.latitude = 45.463688;
 coord1.longitude = 9.18814;
 CLLocation *loc1  = [[[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude] autorelease];

 CLLocationCoordinate2D coord2;
 coord2.latitude = 46.0438317;
 coord2.longitude = 9.75936230000002;
 CLLocation *loc2  = [[[CLLocation alloc] initWithLatitude:46.0438317 longitude:9.75936230000002] autorelease];

 CLLocationDistance d1 = [loc1 distanceFromLocation:loc2];
1
Tommaso
1
Rob

Essaye ça:

const const toRadians = (val) => {
    return val * Math.PI / 180;
}
const toDegrees = (val) => {
    return val * 180 / Math.PI;
}
// Calculate a point winthin a circle
// circle ={center:LatLong, radius: number} // in metres
const pointInsideCircle = (point, circle) => {
    let center = circle.center;
    let distance = distanceBetween(point, center);

    //alert(distance);
    return distance < circle.radius;
};

const distanceBetween = (point1, point2) => {
   //debugger;
   var R = 6371e3; // metres
   var φ1 = toRadians(point1.latitude);
   var φ2 = toRadians(point2.latitude);
   var Δφ = toRadians(point2.latitude - point1.latitude);
   var Δλ = toRadians(point2.longitude - point1.longitude);

   var a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
           Math.cos(φ1) * Math.cos(φ2) *
           Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
   var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

   return R * c;
}

Références: http://www.movable-type.co.uk/scripts/latlong.html

0
Nguyen Chi Thanh