Bonjour,

Je voudrais bien calculer la distance qui existe entre deux villes.

Le script que j'ai mis en place marche lors de la première exécution mais lorsque je veux changer la ville de départ ou de destination le script affiche la valeur NaN et parfois il m'affiche une valeur non significatif à l'ordre de 5438...

Ma page Html est la suivante :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<head>
	<title>	Calculer trajet </title>
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
	<meta charset="utf-8">
	<link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
	<!-- Appel des fonctions javascript -->
	<script type="text/javascript" src="js/calcul.js"></script>
	<script src="https://maps.googleapis.com/maps/api/js?key=ma cle à moi &libraries=places&callback=initAutocomplete"
        async defer></script>
</head>
<body>
	<div style="margin-top:20%">
        	<input id="autocomplete" placeholder="Enter your address" style="width:99%" name="autocomplete"   type="text"></input>
		 </br></br></br>
		<input id="autocompletedestination" placeholder="Entrer l'adresse de destination" style="width:99%" name="autocompletedestination"  type="text"></input>
		 <br/><br/>
		<button onclick="calculer()">Calculer</button>
	</div>
</body>

Mon fichier js est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//Déclarer deux variables autocomplete pour l'origine et la destination
var autocomplete, autocompletedestination;
 
function initAutocomplete() {
 
	autocomplete = new google.maps.places.Autocomplete(   
		(document.getElementById('autocomplete')),
		{types: ['geocode']});
 
	autocompletedestination = new google.maps.places.Autocomplete(   
		(document.getElementById('autocompletedestination')),
		{types: ['geocode']});
 
}
 
//Foncton pour convertir le degré en radian.Cette fonction va servir pour le calcul de la distance
function deg2rad(deg) {
  return deg * (Math.PI/180)
}
 
//Fonction pour calculer la distance en KM entre deux villes
function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
 
  var R = 6371; // Radius of the earth in km
  var dLat = deg2rad(lat2-lat1);  // deg2rad below
  var dLon = deg2rad(lon2-lon1); 
  var a = 
    Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 
    Math.sin(dLon/2) * Math.sin(dLon/2)
    ; 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c; // Distance in km
  return d;
}
 
function calculer() {    
 
	var latitudeorigin=0;
	var longitudeorigin=0;
	var latitudedestination=0;
	var longitudedestination=0;
 
 
			//recupérer les informations de la position d'origine
            var geocoder = new google.maps.Geocoder();
            var address = document.getElementById("autocomplete").value;
            geocoder.geocode({ 'address': address }, function (results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
 
                     latitude = results[0].geometry.location.lat();
                     longitude = results[0].geometry.location.lng();
 
					 latitudeorigin = latitude;
					 longitudeorigin = longitude;
					// alert(latitudeorigin);
					 //alert(longitudeorigin);
 
                } else {
                    alert("Veuillez vérifier l'origine");
                }
            });
 
 
			//recupérer les informations de la destination et calculer le trajet à la fin
			var geocoderdestination = new google.maps.Geocoder();
            var addressdestination = document.getElementById("autocompletedestination").value;
            geocoderdestination.geocode({ 'address': addressdestination }, function (resultsdestination, statusdestination) {
                if (statusdestination == google.maps.GeocoderStatus.OK) {
 
 
                     latitudee = resultsdestination[0].geometry.location.lat();
                     longitudee = resultsdestination[0].geometry.location.lng();
 
					 latitudedestination = latitudee;
					 longitudedestination = longitudee;
 
					 var x = getDistanceFromLatLonInKm(latitudeorigin,longitudeorigin,latitudedestination,longitudedestination);
 
					 //Prendre trois chiffres après la virgule
					 var conversion = x.toFixed(3);
 
					 window.alert("la distance en km est " + conversion);
					 x = 0;
 
                } else {
                    alert("Veuillez vérifier la destination");
                }
            });	
};
Est-ce-qu'il y a un problème avec la déclaration des variables ? est-ce-qu'il faut déclarer les variable en float ?

Est-ce-qu'il manque une déclaration d'une librairie dans le head ?

Merci.