Olá! Thursday, 18 de April de 2024.



Dicas CódigoFonte.net
Tuesday, 14 de December de 2010

Capturando longitude e latitude com o Google Maps

Olá Pessoal, 

Hoje foi explicar pra vocês como recuperar a latitude e longitude de um endereço qualquer utilizando o Google Maps Api. 

O código é bastante simples de ser utilizado e você precisará apenas de uma API KEY do Google Maps para poder utiliza-lo, mas que pode ser gerada gratuitamente e exclusivamente para seu site neste endereço: http://code.google.com/apis/maps/signup.html

O Google facilitou bastante para nós, permitindo que seja gerado um conteúdo no formato XML ou JSON (padrão) e que possa ser lido facilmente por qualquer linguagem de programação. No nosso caso, vamos utilizar o PHP. 

O seguinte código simplesmente invoca uma URL específica do Google Maps para retornar os dados completos de um determinado endereço passado na URL. Veja: 

<?


   $tipo_output = "xml"; // pode ser utilizado o json também


   // a sua API KEY do Google Maps gerado com o link acima

   $google_api = "MAPS_API_KEY";

   

   // o endereço que desejamos que o google procure

   // lembrando que o endereço tem que ser no padrão de uma requisição URL e caso possua acentuação, vamos executar um utf8_encode

   $endereco_desejado = urlencode(utf8_encode("João Pessoa, PB"));


   // Desired address

   $endereco_final = "http://maps.google.com/maps/geo?q=". $endereco_desejado ."&output=". $tipo_output ."&key=$google_api";


   // conteudo da página

   echo file_get_contents($endereco_final);


?>

O resultado deste script é o seguinte: 

<?xml version="1.0" encoding="UTF-8" ?> 

<kml xmlns="http://earth.google.com/kml/2.0"><Response> 

  <name>João Pessoa, PB</name> 

  <Status> 

    <code>200</code> 

    <request>geocode</request> 

  </Status> 

  <Placemark id="p1"> 

    <address>João Pessoa - Paraíba, Brazil</address> 

    <AddressDetails Accuracy="4" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>BR</CountryNameCode><CountryName>Brasil</CountryName><AdministrativeArea><AdministrativeAreaName>PB</AdministrativeAreaName><Locality><LocalityName>João Pessoa</LocalityName></Locality></AdministrativeArea></Country></AddressDetails> 

    <ExtendedData> 

      <LatLonBox north="-7.0267350" south="-7.2038879" east="-34.7329918" west="-34.9891106" /> 

    </ExtendedData> 

    <Point><coordinates>-34.8610512,-7.1153200,0</coordinates></Point> 

  </Placemark> 

</Response></kml> 

Agora, podemos melhorar nosso script convertendo o resultado em um objeto XML que possa ser lido facilmente pelo seu script PHP. Neste caso vamos utilizar a classe SimpleXMLElement.

<?php


   $tipo_output = "xml"; // pode ser utilizado o json também


   // a sua API KEY do Google Maps gerado com o link acima

   $google_api = "MAPS_API_KEY";

   

   // o endereço que desejamos que o google procure

   // lembrando que o endereço tem que ser no padrão de uma requisição URL e caso possua acentuação, vamos executar um utf8_encode

   $endereco_desejado = urlencode(utf8_encode("João Pessoa, PB"));


   // Desired address

   $endereco_final = "http://maps.google.com/maps/geo?q=". $endereco_desejado ."&output=". $tipo_output ."&key=$google_api";


   // conteudo da página

   $page = file_get_contents($endereco_final);   

   

   // criando um objeto a partir do conteudo da página 

   $xml = new SimpleXMLElement($page);

   

   // retornando apenas os dados de longitude e latitude   

   echo $xml->Response->Placemark->Point->coordinates;


?>

O resultado de nosso scritp é: 

34.8610512,-7.1153200,0

Podemos melhorar ainda mais o nosso script criando variáveis mais simples de serem utilizadas. Adicione o seguinte código ao seu script: 

<?

   list($longitude, $latitude, $altitude) = explode(",", $xml->Response->Placemark->Point->coordinates);

      

   echo "Longitude: " . $longitude . " <br /> ";

   echo "Latitude: " . $latitude . " <br /> ";   

?>

Pronto. Agora podemos utilizar nosso script para capturar dados mais completos de um endereço e quem sabe criar um mini GPS :P

Até mais pessoal!


Comentários do artigo [Novo comentário]

Márcio Guilherme Cirqueira Ribeiro - 13 de July de 2011 - 19:19
Cara seu código me incentivou a fazer esse mini GPS em java, e como tem as coordenadas corretas da até mesmo para fazer um aplicativo gráfico para celular e PC mostrando graficamente o local onde a(o) determinada(o) pessoa/local está.
Parabéns!!!!!!!!
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010