Gostaria de agradecer ao Grespon. por ter disponibilizado o código que me ajudou muito, porém como os outros colegas citaram, não dá com precisão, pois ele só está pegando o “CEP”.
Depois de muitos testes (pois sou leigo) querendo que o código pegue a localização exata (numero,rua,cidade) consegui achar uma solução
//Numero,Rua,Cidade, coloca-se de acordo com o campo que você criou.
$ende1 = urlencode(utf8_encode("{Numero}"));
$ende2 = urlencode(utf8_encode("{Rua}"));
$ende3 = urlencode(utf8_encode("{Cidade}"));
$address = {ende1}.",".{ende2}.",".{ende3};
$request_url = “http://maps.googleapis.com/maps/api/geocode/xml?address=".$address."&sensor=true”; // A URL que vc manda pro google para pegar o XML
$xml = simplexml_load_file($request_url) or die(“url not loading”);// request do XML
$status = $xml->status;// pega o status do request, já qe a API da google pode retornar vários tipos de respostas
if ($status==“OK”) {
//request returned completed time to get lat / lang for storage
$lat = $xml->result->geometry->location->lat;
$long = $xml->result->geometry->location->lng;
//echo “$lat,$long”;
{nm_lat} = $lat; // O campo latitude
{nm_long} = $long; // O campo longitude
}
if ($status=="ZERO_RESULTS") {
//indica que o geocode funcionou mas nao retornou resutados.
echo “Não Foi possível encontrar o local”;
}
if ($status=="OVER_QUERY_LIMIT") {
//indica que sua cota diária de requests excedeu
echo "A cota do GoogleMaps excedeu o limite diário";
}
if ($status=="REQUEST_DENIED") {
//indica que seu request foi negado, geralmente por falta de um 'parametro de sensor?'
echo "Acesso Negado";
}
if ($status=="INVALID_REQUEST") {
// geralmente indica que a query (address or latlng) está faltando.
echo "Endereço não está preenchido corretamente";
}
Cole nos EVENTOS “onBeforeInsert” e “onAfterInsert” o mesmo código e depois fazendo a alteração dos campos correspondentes.
Sei que o post está muito antigo, mas espero que ajude outros como eu