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
|
//lecture BDD
while($row = mysql_fetch_assoc($sql)){
$adresse_dom = $row['adresse'].', '.$row['code_postal'].' '.$row['ville']. ', '.$row['pays'];
$coords_dom = get_coordonees_from_adresse($adresse_dom); //un tableau [adresse latitude longitude]
$lon = round($coords_dom[0]['longitude'],5);
$lat = round($coords_dom[0]['latitude'],5);
}
function get_coordonees_from_adresse($adresse)
{
$api_key = 'xxxxxxxxxxxxxxxxxxxxxxxx';
$adresse = urlencode(formate_adresse($adresse));
//echo $adresse."<br>";
$url = 'http://maps.google.com/maps/geo?q=' . $adresse . '&output=xml&oe=utf8&gl=fr&sensor=false&key=' . $api_key;
//$fp = fsockopen ($url, 80, $errno, $errstr, 30);
//$page = file_get_contents($url);
$page = http_fetch_url($url);
// Parse le résultat XML
$xml_result = new SimpleXMLElement(stripslashes($page));
// Vérifie que la requête a réussi
if ($xml_result->Response->Status->code != 200) return array();
// Charge les adresses
$adresses = array();
foreach ($xml_result->Response->Placemark as $place) {
list($longitude, $latitude, $altitude) = explode(',', $place->Point->coordinates);
// Ajoute au tableau
$adresses[] = array('adresse_complete' => utf8_decode($place->address),
'latitude' => $latitude,
'longitude' => $longitude);
}
return $adresses;
}
function formate_adresse($adresse){
$adresse = trim(preg_replace('/ +/', ' ', mb_ereg_replace('[^0-9A-Za-z\p{L}]+', ' ', $adresse)));
$bad = array(" r ", " av ", " ave ", " bld ", " bd ", " imp ");
$good = array(" rue ", " avenue ", " avenue ", " boulevard ", " boulevard ", " impasse ");
return str_replace($bad, $good, strtolower($adresse));
}
//curl
function http_fetch_url($url, $timeout = 10)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$data = curl_exec($ch);
curl_close($ch);
return $data;
} |
Partager