hello j'ai une table avec les villes de france et des doms avec leur coordonnées GPS et un e table membre et je voudrais calculer
la distance avec entre les membres sans passer par google geo une idée?
Code : Tout sélectionner
<?php
require_once __DIR__ . '/config/bootstrap.php';
$req1 =$pdo->query("SELECT COUNT(ville_nom_simple)AS total_ville FROM villes_france_free WHERE ville_code_postal LIKE '66%'");
$req1->execute();
$tataux = $req1->fetch(PDO::FETCH_OBJ);
echo 'il y a '.$tataux->total_ville .'villes';
$req = $pdo->query("SELECT * FROM villes_france_free WHERE ville_code_postal LIKE '78%' ORDER BY ville_nom_simple ");
$req -> execute();
$data = $req->fetch(PDO::FETCH_OBJ);
while($data = $req->fetch(PDO::FETCH_OBJ))
{ echo '<div style =" color:red; font-size:2em;">';
echo $data->ville_nom_simple .'<br>';
echo '</div>';
echo '<div style =" color :lime";>';
echo 'longitude:'.$data->ville_longitude_deg .'<br>';
echo '</div>';
echo '<div style =" color :blue";>';
echo 'latitude:'.$data->ville_latitude_deg .'<br>';
echo '</div>';
echo $data->ville_code_postal;
echo '<hr>';
}
function getDistance($latitude1,$longitude1,$latitude2,$longitude2){
//convert from degrees to radians
$earthRadius = 6371;//en km
$latFrom = deg2rad($latitude1);
$lonFrom = deg2rad($longitude1);
$latTo = deg2rad($latitude2);
$lonTo = deg2rad($longitude2);
$latDelta = $latTo - $latFrom;
$lonDelta = $lonTo - $lonFrom;
$angle = 2 * asin(sqrt(pow(sin($latDelta / 2),2) + cos($latFrom)* cos($latTo)* pow(sin($lonDelta / 2),2)));
return $angle * $earthRadius;
}
//exemple etampes et morigny
$latitude1 = '42.7667';
$longitude1 = '2.98333';
$latitude2 = '42.6833';
$longitude2 = ' 2.88333';//etampes
$distance = getDistance($latitude1,$longitude1,$latitude2,$longitude2);
echo round($distance) .' '.'km';