Neste artigo irei ensinar de maneira prática a utilizar a API do Google Maps para acessar informações de distâncias entre dois pontos, utilizando informações de logradouros, para que a api devolva um XML com as informações consultadas.

Para mais informações sobre a API, basta acessar o endereço eletrônico a seguir: Distance Matrix API .

O Google disponibiliza um web service que gera um XML com informações de origem e destino, cálculo da distância entre os pontos e até tempo de chegada sabendo do meio de transporte utilizado.

A url disponibilizada pelo Google é: http://maps.googleapis.com/maps/api/distancematrix/xml?, a partir desta url incluiremos os parâmetros de origem e destino além da linguagem na qual queremos o retorno do XML e o modo de transporte utilizado, que pode ser a pé, de carro e bicicleta.

Criamos então um arquivo php que irá receber as variáveis de origem e destino para a aplicação e então colocamos no código os demais parâmetros que a api necessita para exibir a distância entre os dois pontos.

O código PHP terá as seguintes variáveis:

  • $origins = $_POST[''origins''];
  • $destinations = $_POST[''destinations''];
  • $mode = ''CAR'';
  • $language = ''PT'';
  • $sensor = ''false'';

A variável $origins recebe o endereço de origem que pode ser uma cidade, ou um logradouro completo. Idem para a variável $destinations que receberá o endereço de destino. A variável $mode recebe o meio de transporte utilizado, a $language recebe a abreviação da linguagem de retorno do XML e $sensor informa ao web service do Google se estamos utilizando um GPS para receber a variável $origins.

O segundo passo é criarmos um simples formulário com a action recebendo a url concatenada com os valores das variáveis, ao clicarmos no botão submit recebemos o retorno do XML.

O formulário recebe os parâmetros de entrada digitados pelo usuário nos campos de origem e destino, que são atribuídos às variáveis e concatenados pelo php para serem enviados no acesso à url que ficará com o aspecto do código a seguir:


http://maps.googleapis.com/maps/api/distancematrix/xml?origins=''".$origins."''|&destinations=''".$destinations."''|&mode=''".$mode."''|&language=''".$language."''|&sensor=false
Listagem 1. Formato da URL utilizada

O formulário que o php cria, recebe as variáveis estáticas ($mode, $language e $sensor) já designando os seus respectivos ‘values’ e, para reforçar, foram informadas também no formulário com o uso do atributo hidden. O hidden esconde no formulário o elemento HTML que não queremos que venha a ser exibido ao usuário, mas precisamos do seu valor no formulário.

O código que demonstra esse texto :


echo "<input type=''hidden'' name=''mode'' value=''CAR''/>"; 
//Aqui é atribuído o mode CAR, para informar ao web service do Google que o modo de transporte é carros.
echo "<input type=''hidden'' name=''language'' value=''PT''/>";
// Aqui é atribuído a language, para informar ao web service do Google que o idioma é PT - Português.
echo "<input type=''hidden'' name=''sensor'' value=''false''/>";
// Aqui é atribuído o sensor, para informar ao web service do Google que se está ou não utilizando um aparelho gps, sendo true para sim ou false para não.
Listagem 2. Campos hidden utilizados

Com o click do botão submit, o envio dos dados ocorre e o retorno do xml do Google vem com as informações reunidas. Para uma consulta envolvendo os pontos “Av Paulista,925” e “Av Brigadeiro Luis Antonio,400”, o retorno ficaria desta forma:


<DistanceMatrixResponse>
    <status>OK</status>
    <origin_address>
        Av. Paulista, 925 - Paraiso Brazil, São Paulo, Brasil
    </origin_address>
    <destination_address>
        Av. Brg. Luís Antônio, 400 - República, São Paulo, 01318-000, Brasil
    </destination_address>
    <row>
        <element>
            <status>OK</status>
            <duration>
                <value>451</value>
                <text>8 min.</text>
            </duration>
            <distance>
                <value>2463</value>
                <text>2,5 km</text>
            </distance>
        </element>
    </row>
</DistanceMatrixResponse>
Listagem 3. Retorno de uma consulta

O xml é estruturado com atributos: , , , , e , para a linha de consulta retornada pelo web service.

Como exemplo utilizo a distância entre a origem: “Av. Paulista” e “Av. Brigadeiro Luís Antônio”, em São Paulo.

Formulário do código anexo
Figura 1: Formulário do código anexo
XML retornado com os atributos da consulta
Figura 2: XML retornado com os atributos da consulta

Com a geração do XML, podemos utilizá-lo para programarmos em uma aplicação e consumirmos esse XML, manipulando os atributos e usando apenas o que for necessário para aplicação que estiver sendo desenvolvida.

Podemos também utilizar a função file_get_contents() do php , para receber o retorno da url como uma string de texto e não um xml, o código para isso seria:


file_get_contents(''http://maps.googleapis.com/maps/api/distancematrix/xml?origins=''.$origins.''|&destinations=''.$destinations.''|&mode=''.$mode.''|&language=''.$language.''|&sensor=false'');
Listagem 4. Recebendo o retorno em formato de texto

Com a função file_get_contents recebendo as variáveis de origem e destino, com apenas o número do CEP da origem(04314-000) e do destino (03063-000), temos o retorno de uma string desta forma: “OK Jabaquara, Sao Paulo - São Paulo, 04314-000, Brazil Sao Paulo - São Paulo, 03063-000, Brazil OK 1876 31 mins 21531 21.5 km”. Para capturar apenas um atributo específico, podemos jogar esse resultado em uma variável e com a função explode() do php, capturarmos qualquer dos atributos que queremos, como apenas o 21,5 do Km ou o 31 mins, conforme sua necessidade.

Para maiores esclarecimentos, envie um email para josedarci_rodrigues@msn.com