if ( !function_exists('htmlspecialchars_decode') ) { function htmlspecialchars_decode($text) { return strtr($text, array_flip(get_html_translation_table(HTML_SPECIALCHARS))); } } require_once 'common/curl.php'; if ( !function_exists('supprDecimales') ) { function supprDecimales($dec) { if ($dec>0 ) return floor($dec); else return ceil($dec); } } if ( !function_exists('dec2dms') ) { function dec2dms($dec) { $d = supprDecimales($dec); $m = supprDecimales(($dec - $d) * 60); $s = abs(round(((($dec - $d) * 60) - $m) * 60)); $m = abs($m); return $d.'°'.$m."'".$s.'"'; } } /** Retourne la distance en kilomètres entre 2 points à la surface de la terre ** Calcul effectué avec la sphère « GRS80 » de rayon R = 6378,187 km ** Autre sphère possible : « Picard » de rayon R = 6371,598 km ** ** @param double $latA Latitude du point A en décimal ** @param double $lonA Longitude du point A en décimal ** @param double $latB Latitude du point B en décimal ** @param double $lonB Longitude du point B en décimal ** @return unknown **/ function distance($latA=0, $lonA=0, $latB=0, $lonB=0) { //s(AB) = arc cos (sinjA sinjB + cos jA cosjB cosdl) // avec dl = lB - lA $e=pi()*$latA/180; $f=pi()*$lonA/180; $g=pi()*$latB/180; $h=pi()*$lonB/180; $j=acos(cos($e)*cos($g)*cos($f)*cos($h) + cos($e)*sin($f)*cos($g)*sin($h) + sin($e)*sin($g)); return round(6371.598*$j,3); // div par 1.852 ==> résultat en miles nautiques } class MMap { public $body = ''; public $header = ''; public $cookie = ''; public $codeRetour = 0; public $codeRetour2 = 0; public $latitudeDec= 0; // Latitude en Décimal public $latitudeDeg= 0; // Latitude en Dégrés public $longitudeDec= 0; // Longitude en Décimal public $longitudeDeg= 0; // Longitude en Dégrés public $precision = 0; public $adresseValidee=''; function __construct($adresse, $cp, $ville, $pays='France') { /* $referer='http://maps.google.fr/?output=html'; $page=getUrl($referer, '', '', $referer, false, 'maps.google.fr'); $this->body=$page['body']; $this->codeRetour=$page['code']; $this->header=$page['header']; $this->cookie=$this->header['Set-Cookie']; $url='http://maps.google.fr/maps?f=q&output=html&q='.urlencode($adresse.', '.$cp.' '. $ville.', '.$pays); $page=getUrl($url, $this->cookie, '', $referer, false, 'maps.google.fr'); $this->body=$page['body']; $this->codeRetour=$page['code']; $this->header=$page['header']; if (strpos($this->body, '
Nous ne sommes pas parvenus à localiser l\'adresse :
')===true) return false;
$this->adresseValidee=strtoupper(htmlspecialchars_decode(str_replace('
', ', ', @getTextInHtml($this->body, '
', ' nowrap>', ' | ')), ENT_QUOTES)); $this->latitudeDec=@getTextInHtml($this->body, 'latitude_e6=', '=','&')/1000000; $this->longitudeDec=@getTextInHtml($this->body, 'longitude_e6=', '=','&'); if ($this->longitudeDec>1000000000) $this->longitudeDec=-(4294967293-$this->longitudeDec)/1000000; else $this->longitudeDec=$this->longitudeDec/1000000; $this->latitudeDeg=dec2dms($this->latitudeDec); $this->longitudeDeg=dec2dms($this->longitudeDec); if ($this->codeRetour==200) return true; //$latitude_range = (180 * $range) / ($pi * $radius_of_earth); //$longitude_range = (180 * $range) / ($pi * $radius_of_earth * sin((90 - $alat) * $pi / 180)); */ $apiKey='ABQIAAAAuKBtUyFonYJBl1fqfc78tRQvADPcxwXf3Q2QIE-M32vuSkrxiBRLUHDB_YSLeTscTDeWRKM_wILaaw'; $url='http://maps.google.com/maps/geo?q='.urlencode($adresse.', '.$cp.' '. $ville.', '.$pays).'&output=xml&key='.$apiKey; $referer='';//http://maps.google.fr/?output=html'; $page=getUrl($url, '', '', $referer, false, 'maps.google.com', '', 2); $this->body=$page['body']; $this->codeRetour=$page['code']; $this->header=$page['header']; //die($this->body=$page['body']); //{"name":"3 rue viète, 75017 paris, france","Status":{"code":200,"request":"geocode"},"Placemark":[{"id":"p1","address":"3, Rue Viète, 75017 17ème Arrondissement, Paris, France","AddressDetails":{"Country":{"CountryNameCode":"FR","AdministrativeArea":{"AdministrativeAreaName":"Ile-de-France","SubAdministrativeArea":{"SubAdministrativeAreaName":"Paris","Locality":{"LocalityName":"Paris","DependentLocality":{"DependentLocalityName":"17ème Arrondissement","Thoroughfare":{"ThoroughfareName":"3, Rue Viète"},"PostalCode":{"PostalCodeNumber":"75017"}}}}}},"Accuracy": 8},"Point":{"coordinates":[2.306174,48.883705,0]}}]} /*