Using the API V3 from google maps, you can use this example if you only need a north.
Javascript + Html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Calcular distancia entre cidades (mapas e rotas)</title>
<script src="http://code.jquery.com/jquery-1.8.1.js" type="text/javascript"></script>
</head>
<body>
<!-- Parâmetro sensor é utilizado somente em dispositivos com GPS -->
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function CalculaDistancia() {
$('#litResultado').html('Aguarde...');
//Instanciar o DistanceMatrixService
var service = new google.maps.DistanceMatrixService();
//executar o DistanceMatrixService
service.getDistanceMatrix(
{
//Origem
origins: [$("#txtOrigem").val()],
//Destino
destinations: [$("#txtDestino").val()],
//Modo (DRIVING | WALKING | BICYCLING)
travelMode: google.maps.TravelMode.DRIVING,
//Sistema de medida (METRIC | IMPERIAL)
unitSystem: google.maps.UnitSystem.METRIC
//Vai chamar o callback
}, callback);
}
//Tratar o retorno do DistanceMatrixService
function callback(response, status) {
//Verificar o Status
if (status != google.maps.DistanceMatrixStatus.OK)
//Se o status não for "OK"
$('#litResultado').html(status);
else {
//Se o status for OK
//Endereço de origem = response.originAddresses
//Endereço de destino = response.destinationAddresses
//Distância = response.rows[0].elements[0].distance.text
//Duração = response.rows[0].elements[0].duration.text
$('#litResultado').html("<strong>Origem</strong>: " + response.originAddresses +
"<br /><strong>Destino:</strong> " + response.destinationAddresses +
"<br /><strong>Distância</strong>: " + response.rows[0].elements[0].distance.text +
" <br /><strong>Duração</strong>: " + response.rows[0].elements[0].duration.text
);
//Atualizar o mapa
$("#map").attr("src", "https://maps.google.com/maps?saddr=" + response.originAddresses + "&daddr=" + response.destinationAddresses + "&output=embed");
}
}
</script>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td>
<label for="txtOrigem"><strong>Endereço de origem</strong></label>
<input type="text" id="txtOrigem" class="field" style="width: 400px" />
</td>
</tr>
<tr>
<td>
<label for="txtDestino"><strong>Endereço de destino</strong></label>
<input type="text" style="width: 400px" class="field" id="txtDestino" />
</td>
</tr>
<tr>
<td>
<input type="button" value="Calcular distância" onclick="CalculaDistancia()" class="btnNew" />
</td>
</tr>
</tbody>
</table>
<div><span id="litResultado"> </span></div>
<div style="padding: 10px 0 0; clear: both">
<iframe width="750" scrolling="no" height="350" frameborder="0" id="map" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?saddr=são paulo&daddr=rio de janeiro&output=embed"></iframe>
</div>
Return of the Json
{ "destinationAddresses" : [ "Rio de Janeiro - RJ, República Federativa do Brasil" ],
"originAddresses" : [ "São Paulo - SP, República Federativa do Brasil" ],
"rows" : [ { "elements" : [ { "distance" : { "text" : "430 km",
"value" : 430395
},
"duration" : { "text" : "4 horas 42 minutos",
"value" : 16942
},
"status" : "OK"
} ] } ]
}
I already used this example for an application and it worked...
Just change what you need.
Source: http://cbsa.com.br/post/distancia-entre-cidades---google-maps-javascript-api-v3.aspx
If you have any questions, just talk, although it is well commented, it has some implementation details, note that the use of javascript objects is very strong in the API.
Another site with detailed explanations of objects:
http://tableless.com.br/api-google-maps-v3/
The direct path or even a map like Google Maps?
– Jorge B.
A map with google maps, tracing the real path between two points, for example: Salvador - São Paulo, show the path (gps type) and the mileage between the two cities.
– João Neto
Very interesting question, I think it would be nice to leave open to other Apis besides Google Maps (as Here, Openstreetmap, etc..)
– Kazzkiq
If you solve my problem and the one you need can be in any API.
– João Neto
I don’t understand if you have already converted the address to coordinates, to get the route, if yes, put your js to see what you need to add and/or modify.
– Marcelo Aymone