Ejemplo n.º 1
0
        public async override Task <MensuracaoRota> obterMensuracaoRota(Local[] locais)
        {
            MensuracaoRota m = null;

            List <String> enderecos = new List <string>();

            foreach (var local in locais)
            {
                enderecos.Add(prepararEndereco(local));
            }

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://www.mapquestapi.com/directions/v2/");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var response = await client.PostAsJsonAsync("routematrix?key=" + key, new { locations = enderecos, options = new { allToAll = true } });

                if (response.IsSuccessStatusCode)
                {
                    float   distanciaTotal    = 0;
                    float[] distanciasTrechos = new float[locais.Count() - 1];

                    dynamic resultado = await response.Content.ReadAsAsync <dynamic>();

                    JArray matrizDistancias = resultado.distance;

                    int i = 0;
                    foreach (var vetor in matrizDistancias)
                    {
                        if (i < (vetor.Count() - 1))
                        {
                            float distanciaTrecho = (float)vetor.SelectToken("[" + (i + 1) + "]");
                            distanciaTrecho     *= coeficienteConversãoKm;
                            distanciaTotal      += distanciaTrecho;
                            distanciasTrechos[i] = distanciaTrecho;
                            i++;
                        }
                    }

                    m = new MensuracaoRota()
                    {
                        DistanciasTrechos = distanciasTrechos,
                        DistanciaTotal    = distanciaTotal
                    };
                }
            }

            return(m);
        }
Ejemplo n.º 2
0
        public static RoteiroColetaDTO gerarRoteiroManual(ParadaRoteiroColetaDTO[] paradas, CentroDistribuicao centroDistribuicao)
        {
            ConectorRotas    conector = new ConectorMapQuest();
            RoteiroColetaDTO roteiro  = null;

            Local[] locais = derivarLocais(paradas, centroDistribuicao);

            MensuracaoRota m = conector.obterMensuracaoRota(locais).Result;

            float distanciaTotal = m.DistanciaTotal;

            float[] distanciasTrechos = m.DistanciasTrechos;

            for (int p = 0; p < paradas.Length; p++)
            {
                paradas[p].Distancia = distanciasTrechos[p];
            }

            roteiro           = new RoteiroColetaDTO();
            roteiro.Distancia = distanciaTotal;
            roteiro.Paradas   = paradas;

            return(roteiro);
        }