Utilizando a API Matrix Distance do Google Maps com PHP

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Veja neste artigo como utilizar a API Matrix Distance do Google para obter distâncias entre endereços e tempo de viagem dependendo do transporte a ser utilizado. Através de uma solicitação a um web service do Google, o retorno é recebido como XM

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: https://developers.google.com/maps/documentation/distancematrix.

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:

Listagem 1: Formato da URL utilizada

http://maps.googleapis.com/maps/api/distancematrix/xml?origins=''".$origins."''|&destinations=''".$destinations."''|&mode=''".$mode."''|&language=''".$language."''|&sensor=false

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 :

Listagem 2: Campos hidden utilizados

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.

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:

Listagem 3: Retorno de uma consulta

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

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:

Listagem 4: Recebendo o retorno em formato de texto


file_get_contents(''http://maps.googleapis.com/maps/api/distancematrix/xml?origins=''.$origins.''|&destinations=''.$destinations.''|&mode=''.$mode.''|&language=''.$language.''|&sensor=false'');

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

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?