Calculer la distance entre deux points avec computeDistanceBetween
La distance entre deux points est la longueur du plus court chemin les séparant. Ce chemin le plus court est appelé géodésique. Sur une sphère, toutes les géodésiques sont des segments de grand cercle.
Pour calculer la distance, en mètres, séparant deux points avec l'API Google Maps Javascript, on utilise la méthode computeDistanceBetween( depart, arrivee ), en lui passant deux paramètres :
- depart : est un objet
LatLng
avec les coordonnées du point de départ A, - arrivee : est un objet
LatLng
avec les coordonnées du point d'arrivée B.
var distance = google.maps.geometry.spherical.computeDistanceBetween( depart, arrivee )
Exemple :
/**
* Dans cet exemple on souhaite calculer la distance séparant 2 points :
* Point de départ : Tours, ayant pour latitude : 47.390273, et longitude : 0.688834
* Point d'arrivée : Lyon, ayant pour latitude : 45.764859, et longitude : 4.835036
*/
var tours = new google.maps.LatLng(47.390273,0.688834);
var lyon = new google.maps.LatLng(45.764859,4.835036);
/**
* Le résultat est affecté à la variable distance
*/
var distance = google.maps.geometry.spherical.computeDistanceBetween( tours, lyon );
alert("La distance entre Tours et Lyon à vol d'oiseau est de " + distance + " mètres");
Attention : n'oubliez pas d'ajouter la bibliothèque geometry lorsque vous appelez le script de l'API Google Maps v3 :
<script async defer src="https://maps.googleapis.com/maps/api/js?key=InsérezVotreCléApiGoogleMapsIci&libraries=geometry&callback=initialisation"></script>
Carte Google Maps calculant la distance séparant deux points à l'aide de computeDistanceBetween
Distance Tours - Fukushima : mètres.
Code utilisant computeDistanceBetween pour calculer la distance entre deux points
<!DOCTYPE html>
<html lang="fr">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta charset="UTF-8" />
<title>Titre de votre page</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0
}
#EmplacementDeMaCarte {
height: 600px
}
#info {
background: #fff;
padding: 5px;
font-size: 14px;
font-family: arial
}
</style>
</head>
<body>
<div id="EmplacementDeMaCarte"></div>
<div id="info"></div>
<noscript>
<p>Attention : </p>
<p>Afin de pouvoir utiliser Google Maps, JavaScript doit être activé.</p>
<p>Or, il semble que JavaScript est désactivé ou qu'il ne soit pas supporté par votre navigateur.</p>
<p>Pour afficher Google Maps, activez JavaScript en modifiant les options de votre navigateur, puis essayez à nouveau.</p>
</noscript>
<script>
function initialisation(){
var zoneContenantMarqueurs = new google.maps.LatLngBounds();
var centreCarte = new google.maps.LatLng(47.389982, 0.688877);
var optionsCarte = {
zoom: 6,
center: {lat: 47.389982, lng: 0.688877}
}
var maCarte = new google.maps.Map(document.getElementById("EmplacementDeMaCarte"), optionsCarte);
var tours = new google.maps.LatLng(47.390273,0.688834);
var marqueurTours = new google.maps.Marker({
map: maCarte,
position: tours
});
zoneContenantMarqueurs.extend(tours);
var fukushima = new google.maps.LatLng(37.316864,141.024928);
var marqueurFukushima = new google.maps.Marker({
map:maCarte,
position:fukushima
});
zoneContenantMarqueurs.extend(fukushima);
var optionsPolylineDistance = {
map:maCarte,
path:[tours, fukushima],
geodesic:true
};
var polylineDistance = new google.maps.Polyline( optionsPolylineDistance );
var distance = google.maps.geometry.spherical.computeDistanceBetween( tours, fukushima );
maCarte.fitBounds( zoneContenantMarqueurs );
document.getElementById('info').innerHTML = "Distance Tours (FR) - Fukushima (JP) : " + distance + " mètres";
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=InsérezVotreCléApiGoogleMapsIci&libraries=geometry&callback=initialisation"></script>
</body>
</html>