public ResultadoCalculoRotaEntity CalcularRota(IList<Coordenadas> p, TiposCalculoRota tp)
        {
            var r = new ResultadoCalculoRotaEntity();

            RouteInfo ri = _route.GetRoute(new Point { x = p[0].X, y = p[0].Y }, new Point { x = p[1].X, y = p[1].Y }, (RouteWrapper.TipoRota)tp);

            r.CustoTotalCombustivel = (decimal)ri.routeTotals.totalfuelCost;
            r.CustoTotalPedagio = (decimal)ri.routeTotals.totaltollFeeCost;
            r.DistanciaTotalRota = (long)ri.routeTotals.totalDistance;

            //"PT11H40M"
            //"PT11H7M"
            r.TempoTotalRota = TimeSpan.ParseExact(ri.routeTotals.totalTime, @"\P\T%h\H%m\M", CultureInfo.InvariantCulture);

            return r;
        }
        public ResultadoCalculoV1 CalcularRota(IList<DadosEntradaV1> entrada, TiposCalculoRota tc)
        {
            if (entrada.Count < 2)
            {
                throw new CalculoRotaBusinessException("entrada deve conter ao menos 2 registros!");
            }

            var map = new MapperHelper<DadosEntradaV1, EnderecoEntity>();
            var map2 = new MapperHelper<ResultadoCalculoRotaEntity, ResultadoCalculoV1>();

            var enderecos = map.ConvertToList(entrada);

            var coordenadas = _data.ObterCoordenadas(enderecos);
            var r = _data.CalcularRota(coordenadas, tc);

            return map2.Convert(r);
        }