Roteirizador
by anndreyy
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Roterizador</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
</body>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCrM_oEopaDubMzrKiSZbhLGCsbHW39IL4" async defer></script>
</html>
JavaScript
setTimeout(init, 300)
function init () {
var service = new google.maps.DistanceMatrixService();
var destinations = [];
var origins = [];
//Define os destinos
for (let i in user_route.route) {
destinations.push(user_route.route[i].address);
origins.push(user_route.route[i].address);
}
service.getDistanceMatrix(
{
origins: origins,
destinations: destinations,
travelMode: 'DRIVING',
}, callback);
};
function callback(response, status) {
var rotas = [];
var ref_todas_rotas = response.originAddresses;
for (let index in response.rows) {
var obj = {};
//Desfine o id deste destinos
obj.origem = parseInt(index);
var new_destinos = [];
//Loop para arrumar os destinos para aquela rota
for (let index_d in response.rows[index].elements) {
let obj_2 = {
//Define o id deste destino
destino: parseInt(index_d),
element: response.rows[index].elements[index_d],
};
new_destinos.push(obj_2);
}
obj.destinos = new_destinos;
//Grava no array rotas
rotas.push(obj);
}
//Todas novas rotas serão inseridas aqui
nova_rota = [];
//Origem inicial do trageto
var origem_inicial;
// Define od id da origem
for(let index in response.originAddresses){
if(user_route.origin[0].address == response.originAddresses[index]){
origem_inicial = parseInt(index);
}
}
// Procura dentro de rotas a origem para pegar a distancia mais proxima
for (let index in rotas) {
if (rotas[index].origem == origem_inicial) {
//Array para remover da pesquisa
var exclude = [
{
destino: origem_inicial
}
];
//Pega a menor distancia
rotas[index] =...