Ir para conteúdo
Fórum Script Brasil
  • 0

Tutorial - Capturando longitude e latitude com o Google Maps


Jadson Reis

Pergunta

- 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!

PS: Conteúdo de autoria do Código Fonte, compartilhando apenas para ajudar da vida no Fórum que já faz anos que não tem tópicos de tutorial.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...