Bonjour à tous,

J'ai une liste de rendez-vous contenu dans une table "rdv" contenant les champs suivant :
- Id
- date de début
- date de fin
- objet
- Adresse (numero et nom de rue)
- Ville (CP - VILLE)
-etc ....

Pour prendre un rendez-vous, on doit saisir une adresse d'un nouveau rendez-vous, et une date avant le, ceci permettant de proposer un créneaux horaire.
La saisie de l'adresse permet de filter les rendez-vous du plus près au plus éloignés (-1km à + 50km).

Comment puis-je calculer les distances entre la nouvelle adresse et celles contenu dans la base de données avec le script suivant ou bien la classe Google.mapsV3?


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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
	include('db.config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&key=macle"></script>
<script type="text/javascript">
var geocoder, location1, location2, gDir;
var sec=0;
 
	function initialize() {
		geocoder = new GClientGeocoder();
		gDir = new GDirections();
		GEvent.addListener(gDir, "load", function() {
			var drivingDistanceMiles = gDir.getDistance().meters / 1609.344;
			var drivingDistanceKilometers = gDir.getDistance().meters / 1000;
			var duree = gDir.getDuration().seconds;
			var heures = Math.floor(duree / 3600);
  			var minutes = (duree / 60) - (heures * 60);
  			minutes = Math.floor(minutes);
  			var temps = heures & 'h' & minutes & 'min';
			document.form1.distance.value="duree : "+heures+"h"+minutes+"min";
			total = 
			document.getElementById('results').innerHTML= " distance : "+drivingDistanceKilometers+"km"+" duree : "+heures+"h"+minutes+"min"+"<br />";
			//document.getElementById('results').innerHTML = 'Départ : ' + location1.address + '<br />Arrivée : ' + location2.address + '<br />&nbsp;';
			clearInterval(interv);
			document.getElementsByTagName('body')[0].style.cursor = 'default';
		});
	}
 
	function incremente() {
		if (sec<10)
		{
			sec++
		}
		else
		{
			alert("Désolés, nous ne parvenons pas à calculer la distance");
			clearInterval(interv);
			document.getElementsByTagName('body')[0].style.cursor = 'default';
			sec=0;
			document.getElementById('results').innerHTML = '';
			document.form1.distance.value='';
		}
	}
 
	function showLocation() {
		interv=setInterval("incremente()",1000);
		document.getElementsByTagName('body')[0].style.cursor = 'wait';
		var depart=document.forms[0].adresse_dep.value;
		var arrivee=document.forms[0].adresse_arr.value;
		geocoder.getLocations(depart, function (response) {
 
			if (!response || response.Status.code != 200)
			{
				alert("Désolés, nous ne parvenons pas à localiser l'adresse de départ");
                                clearInterval(interv);
				document.getElementsByTagName('body')[0].style.cursor = 'default';
			}
			else
			{
				location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
				geocoder.getLocations(arrivee, function (response) {
					if (!response || response.Status.code != 200)
					{
						alert("Désolés, nous ne parvenons pas à localiser l'adresse d'arrivée");
                                                clearInterval(interv);
				                document.getElementsByTagName('body')[0].style.cursor = 'default';
					}
					else
					{
						location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
						gDir.load('from: ' + location1.address + ' to: ' + location2.address);
					}
				});
			}
		});
	}
 
</script>
</head>
 
<body onLoad="initialize();">
<form id="form1" name="form1" action="" method="post"/>
<p>adresse de départ</p>
<p><label for="adresse_dep">Adresse :</label><input type="text" name="adresse_dep" /></p>
<hr />
<?php
	$sql ='SELECT *
		FROM reservation_instances ri
		INNER JOIN reservation_series rs ON rs.series_id = ri.series_id
		INNER JOIN reservation_resources rr ON rs.series_id = rr.series_id
		WHERE ri.start_date >= "20120806"';
 
	$res = mysql_query($sql) or die ("La requête à échoué");
 
	while($ligne = mysql_fetch_assoc($res))
	{
		echo "<p>Adresse d'arrivée</p>";
		$adresse_arr = $ligne["adresse"].' '.$ligne["emplacement"];
		echo'<p><label for="adresse_arr">Adresse :</label><input type="text" name="adresse_arr" value="'.$adresse_arr.'"/></p>';
		echo'<p>Distance à parcourir : <input type="text" name="distance" class="date" />&nbsp;km&nbsp;<input value="calculer" type="button" onclick="showLocation(); return false;" /></p>';
		echo'<p id="results"></p>';
 
	}	
?>
 
 
 
 
 
</body>
</html>

En vous remerciant,