<?
/*
* Class MAP
*
* @author Diego Agudo - http://www.agudo.eti.br/
* @description Retorna latitude/longitude a partir do CEP
*
*/
$cep = trim($_GET['cep']);
$numero = trim($_GET['numero']);
class Map {
public $cep = "";
public $numero = "";
public $latitude = "";
public $longitude = "";
function __construct($cep,$numero) {
$this->cep = $cep;
$this->numero = $numero;
$this->GetLatLongFromCEP($cep);
}
function RemoveAcentos($string) {
$a = array(
'/[ÂÀÁÄÃ]/'=>'A',
'/[âãàáä]/'=>'a',
'/[ÊÈÉË]/'=>'E',
'/[êèéë]/'=>'e',
'/[ÎÍÌÏ]/'=>'I',
'/[îíìï]/'=>'i',
'/[ÔÕÒÓÖ]/'=>'O',
'/[ôõòóö]/'=>'o',
'/[ÛÙÚÜ]/'=>'U',
'/[ûúùü]/'=>'u',
'/ç/'=>'c',
'/Ç/'=> 'C'
);
// Tira o acento pela chave do array
return preg_replace(array_keys($a), array_values($a), $string);
}
function GetLatLongFromCEP($cep) {
$url = "http://maps.google.com/maps/geo?q=".$cep."+BRASIL&output=xml&sensor=false&key=abcdefg";
$xml = simplexml_load_file($url);
foreach($xml->Response as $parse)
{
foreach($xml->Response as $parse)
{
$coordinates = explode(",", (string)utf8_decode(strtoupper(trim($parse->Placemark->Point->coordinates))));
}
}
$y = $coordinates[0];
$x = $coordinates[1];
#echo "<br>". $x.",".$y ."<br>";
return $this->GetAddressFromCoord($x.",".$y);
}
function GetAddressFromCoord($point) {
$url = "http://maps.google.com/maps/geo?q=".$point."&output=xml&sensor=true&key=abcdefg";
#echo $url;
$xml = simplexml_load_file($url);
foreach($xml->Response as $parse)
{
foreach($xml->Response as $parse)
{
$pais = (string)utf8_decode(strtoupper(trim($parse->Placemark->AddressDetails->Country->CountryName)));
$uf = (string)utf8_decode(strtoupper(trim($parse->Placemark->AddressDetails->Country->AdministrativeArea->AdministrativeAreaName)));
$cidade = (string)utf8_decode(strtoupper(trim($parse->Placemark->AddressDetails->Country->AdministrativeArea->Locality->LocalityName)));
$bairro = (string)utf8_decode(strtoupper(trim($parse->Placemark->AddressDetails->Country->AdministrativeArea->Locality->DependentLocality->DependentLocalityName)));
$endereco = (string)utf8_decode(strtoupper(trim($parse->Placemark->AddressDetails->Country->AdministrativeArea->Locality->DependentLocality->Thoroughfare->ThoroughfareName)));
if((strpos($endereco,",")) === false) {
$endereco = $endereco .",". $this->numero;
} else {
$endereco = strrev(strchr(strrev($endereco), ","));
$endereco = $endereco . $this->numero;
}
$logradouro = $endereco ." - ". $bairro .", ". $cidade ." - ". $uf .",". $pais;
#echo "<br>-->". $logradouro;
return $this->GetLatLongFromAddress($this->RemoveAcentos($logradouro));
}
}
return null;
}
function GetLatLongFromAddress($logradouro) {
$url = "http://maps.google.com/maps/geo?q=".$logradouro."&output=xml&sensor=true&key=abcdefg";
$xml = simplexml_load_file($url);
foreach($xml->Response as $parse)
{
foreach($xml->Response as $parse)
{
$coordinates = explode(",", (string)utf8_decode(strtoupper(trim($parse->Placemark->Point->coordinates))));
}
}
$this->latitude = $coordinates[1];
$this->longitude = $coordinates[0];
echo $this->latitude .",". $this->longitude;
}
function __destruct() {
// destruct
}
}
if(strlen($cep) > 0 AND strlen($numero) > 0) {
$map = new map($cep,$numero);
}
?>
|