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?
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>
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:
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.
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];
http://www.csgnetwork.com/gpsdistcalc.html
N'a rien à voir avec le codage btw
EDIT Si vous cherchez du code
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