Qual pode ser a utilidade de uma função que faça isso, retorne a distância em quilômetros, entre 2 pontos geográficos?
Este post pode ser uma ferramenta interessante para acompanhar a distância percorrida pelos materiais de construção da fonte até o local de destino, permitindo calcular o custo do trajeto;Se você estiver engajado em algum processo ambiental, também poderá utilizar essa funcionalidade para calcular o impacto ambiental em carbono por tonelada km;Enfim, poderá usar a sua criatividade para torná-la funcional.
Considere este post como sua primeira incursão no mundo Google, fazendo com que a nossa planilha MS Excel retorne informações a partir da API do GMAPS (Google Maps).
Já lhes adianto:
Antes que desejem submeter listas enormes de consulta ao servidor GMAPS.
Somente são permitidas 2.500 pesquisas ao servidor num período de 24 horas.
A função personalizada para o MS Excel trabalha passando dois nomes de lugar - ou códigos postais - e encontra a rota mais curta entre eles usando o planejador de rotas do Gmaps . Chamaremos de Km_Distance e a sintaxe para usá-la será:
Ela retornará um valor da distância entre os dois locais em quilômetros e se qualquer tipo de erro ocorrer então a função retorna 0.= Km_Distance (origem, destino)
Dois nota de advertência:
1) Os termos de uso do GMaps determinam que só estão autorizados a usar a sua API usando o seu mapa. Assim, caso deseje fazer sem seguir tais especificações de uso da API, isso será por sua conta e risco (por isso demonstro o mapa acima).
Divirta-se:2) O Gmaps geralmente lhe dará uma rota com base num caminho que pode não ser o mais adequado ao seu propósito. Caso descubra um modo de acertarmos isso, por favor entre em contato para melhorarmos.
Function Km_Distance (Origin As String, Destination As String) As Double' Requires a reference to Microsoft XML, v6.0' Draws on the stackoverflow answer at bit.ly/parseXMLDim myRequest As XMLHTTP60Dim myDomDoc As DOMDocument60Dim distanceNode As IXMLDOMNodeLet Km_Distance = 0' Check and clean inputsOn Error GoTo exitRouteLet Origin = Replace(Origin, " ", "%20")Let Destination = Replace(Destination, " ", "%20")' Lendo os dados XML da API do Google Maps.Set myRequest = New XMLHTTP60myRequest.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" _& Origin & "&destination=" & Destination & "&sensor=false", FalsemyRequest.send' Tornando o XML legível por usar o XPathSet myDomDoc = New DOMDocument60myDomDoc.LoadXML myRequest.responseText' Obtendo o valor da distância entre os nós.Set distanceNode = myDomDoc.SelectSingleNode("//leg/distance/value")If Not distanceNode Is Nothing Then Km_Distance = distanceNode.Text / 1000exitRoute:' Tidy upSet distanceNode = NothingSet myDomDoc = NothingSet myRequest = NothingEnd Function
Para que utilize este código com sucesso, certifique-se de colocar o código acima num módulo da planilha.Defina a referência a biblioteca Microsoft XML, v6.0 - Ferramentas> Referências> Microsoft XML, v6.0