salut,
j'ai trouvé une fonction javascript qui permet de calculer la distance en km entre deux points définit par leur longitude/latitude
Code en JS :URL : http://www.movable-type.co.uk/scripts/LatLong.html
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 /* * Calculate distance (in km) between two points specified by latitude/longitude with Haversine formula */ LatLong.distHaversine = function(p1, p2) { var R = 6371; // earth's mean radius in km var dLat = p2.lat - p1.lat; var dLong = p2.lon - p1.lon; var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(p1.lat) * Math.cos(p2.lat) * Math.sin(dLong/2) * Math.sin(dLong/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; return d; }
En PHP j'ai fais ceci :
j'ai testé avec ceci :
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 function distance($lat1, $lon1, $lat2, $lon2) { $lat1 = deg2rad($lat1); $lat2 = deg2rad($lat2); $lon1 = deg2rad($lon1); $lon2 = deg2rad($lon2); $R = 6371; $dLat = $lat2 - $lat1; $dLong = $lon2 - $lon1; $var1= $dLong/2; $var2= $dLat/2; $a= pow(sin($dLat/2), 2) + cos($lat1) * cos($lat2) * pow(sin($dLong/2), 2); $c= 2 * atan2(sqrt($a),sqrt(1-$a)); $d= $R * $c; return $d; }avec le JS ça me donne 47,79 km, mais avec ma fonctione PHP ça donne 300 km !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Marseille : 43.3 (long) / 5.4 (lat) Toulon : 43.116667 / 5.933333
je ne trouve pas le pb dans ma fonction !!!
Partager