Exemplo n.º 1
0
 public Point GetCoordinates(Address address)
 {
     using (var addressFinderSoapClient = new AddressFinderSoapClient())
     {
         return(addressFinderSoapClient.getXY(address, Configuration.TokenValue));
     }
 }
Exemplo n.º 2
0
 public Point GetCoordinates(Address address)
 {
     using (var addressFinderSoapClient = new AddressFinderSoapClient())
     {
         return addressFinderSoapClient.getXY(address, Configuration.TokenValue);
     }
 }
        private DS.DistributedServices.ServiceProxies.AddressFinder.Point GetGeoLocationFromWebService(Address address)
        {
            DS.DistributedServices.ServiceProxies.AddressFinder.Point point = null;
            using (AddressFinderSoapClient addressFinderSoapClient = new AddressFinderSoapClient())
            {
                point = addressFinderSoapClient.getXY(address, TOKEN);
            }

            return(point);
        }
        public AddressInfo GetFindAddressResponse()
        {
            var address        = GetAddress();
            var addressOptions = GetAddressOptions();

            using (var addressFinderSoapClient = new AddressFinderSoapClient())
            {
                var findAddressResponse = addressFinderSoapClient.findAddress(address, addressOptions, _token);
                return(findAddressResponse);
            }
        }
Exemplo n.º 5
0
        public void FindAddress()
        {
            var address = new Address
            {
                street      = "Avenida Paulista",
                houseNumber = "1000",
                city        = new City {
                    name = "São Paulo", state = "SP"
                }
            };

            var addressOptions = new AddressOptions
            {
                usePhonetic = true,
                searchType  = 2,
                resultRange = new ResultRange {
                    pageIndex = 1, recordsPerPage = 10
                }
            };

            using (var addressFinderSoapClient = new AddressFinderSoapClient())
            {
                var findAddressResponse = addressFinderSoapClient.findAddress(address, addressOptions, _token);

                Console.WriteLine("----- AddressFinder - FindAddress -----");
                Console.WriteLine("Page Count: {0}, Record Count: {1}", findAddressResponse.pageCount, findAddressResponse.recordCount);

                findAddressResponse.addressLocation
                .ToList()
                .ForEach(addressLocation =>
                         Console.WriteLine
                         (
                             "Key: {0}, " +
                             "Street name: {1}, Street number: {2}, Zip code: {3}, District: {4}, " +
                             "City: {5}, State: {6}, " +
                             "Left zip code: {7}, Right zip code: {8}, Car access: {9}, " +
                             "Data Source: {10}, Latitude: {11}, Longitude: {12}",
                             addressLocation.key,
                             addressLocation.address.street, addressLocation.address.houseNumber,
                             addressLocation.address.zip, addressLocation.address.district,
                             addressLocation.address.city.name,
                             addressLocation.address.city.state,
                             addressLocation.zipL, addressLocation.zipR,
                             addressLocation.carAccess, addressLocation.dataSource,
                             addressLocation.point.y, addressLocation.point.x
                         ));
            }
        }
Exemplo n.º 6
0
        public async Task <Coordinate> FindCoordinateAsync(AddressSearch search)
        {
            using (var addressFinderSoapClient = new AddressFinderSoapClient())
            {
                var address = Mapper.Map <AddressSearch, Address>(search);

                var response = await addressFinderSoapClient.findAddressAsync(address, _config.GetAddressOptions(), _token.Tokenvalue);

                if (response.Body.findAddressResult.addressLocation.Length > 0)
                {
                    var point = response.Body.findAddressResult.addressLocation[0].point;
                    return(new Coordinate(point.y, point.x));
                }
            }
            return(await Task.FromResult(Coordinate.Empty()));
        }
        public async Task<Coordinate> FindCoordinateAsync(AddressSearch search)
        {
            using (var addressFinderSoapClient = new AddressFinderSoapClient())
            {
                
                var address = Mapper.Map<AddressSearch, Address>(search);
                
                var response = await addressFinderSoapClient.findAddressAsync(address, _config.GetAddressOptions(), _token.Tokenvalue);

                if (response.Body.findAddressResult.addressLocation.Length > 0)
                {
                    var point = response.Body.findAddressResult.addressLocation[0].point;
                    return new Coordinate(point.y, point.x);
                }
            }
            return await Task.FromResult(Coordinate.Empty());
        }
        public List<AddressLocation> FindAdresses(string addressList)
        {
            this.lastLocations.Clear();
            this.ErrorMessage = String.Empty;
            List<Address> addresses;
            try
            {
                 addresses = new JsonParser().ParseListOfAddress(addressList);
            }
            catch
            {
                this.ErrorMessage = @"Please provide well formatted address json array.";
                return this.lastLocations;
            }

            var soapClient = new AddressFinderSoapClient();

            foreach (Address address in addresses)
            {
                var findAddressResponse = soapClient
                    .findAddress(address, this.findAddressOptions, this.Token);

                List<AddressLocation> result = findAddressResponse.addressLocation.ToList();
                if (result.Count > 0)
                {
                    AddressLocation location = result.First();
                    this.lastLocations.Add(location);
                }
            }

            if(this.lastLocations.Count == 0)
            {
                this.ErrorMessage = @"Provided addresses not found.";
            }

            return this.lastLocations;
        }
        /// <summary>
        /// Método para retorno de informações e valores sobre a rota
        /// </summary>
        /// <param name="token">Chave para autenticação</param>
        /// <param name="enderecoPartida">Endereco com número de partida, ex: Av Paulista, 1000</param>
        /// <param name="cidadeUfPartida">Cidade e estado de partida, ex: São Paulo,SP</param>
        /// <param name="enderecoDestino">Endereco com número de destino, ex: Av Paulista, 1000</param>
        /// <param name="cidadeUfDestino">Cidade e estado de destino, ex: São Paulo,SP</param>
        /// <param name="veiculo">Infomar: CapacidadeTanque,ConsumoMedio,ValorCombustivel,VelocidadeMedia,CategoriaVeiculo(1-Moto,2-Carro,5-Onibus,7-Caminhao)</param>
        /// <param name="tipoRota">0 = Rota padrão mais rápida, 1 = Rota evitando o trânsito. (Somente utilizando base urbana)</param>
        /// <returns>Tempo total da rota;Distância total;Custo de combustível;Custo total considerando pedágio</returns>
        public ResponseInformacoesRota GetInformacoesRota(string token, string enderecoPartida, string cidadeUfPartida, string enderecoDestino, string cidadeUfDestino, Veiculo veiculo, int tipoRota = 0)
        {
            try
            {
                if (string.IsNullOrEmpty(enderecoPartida) || enderecoPartida.Split(',').Length != 2)
                {
                    return new ResponseInformacoesRota {
                               Exception = "O endereço de partida deve ser preenchido corretamente: ex: Av Paulista, 1000"
                    }
                }
                ;
                if (string.IsNullOrEmpty(cidadeUfPartida) || cidadeUfPartida.Split(',').Length != 2)
                {
                    return new ResponseInformacoesRota {
                               Exception = "A cidade e UF de partida deve ser preenchida corretamente, ex: São Paulo, SP"
                    }
                }
                ;
                if (string.IsNullOrEmpty(enderecoDestino) || enderecoDestino.Split(',').Length != 2)
                {
                    return new ResponseInformacoesRota {
                               Exception = "O endereço de destino deve ser preenchido corretamente: ex: Av Paulista, 2000"
                    }
                }
                ;
                if (string.IsNullOrEmpty(cidadeUfDestino) || cidadeUfDestino.Split(',').Length != 2)
                {
                    return new ResponseInformacoesRota {
                               Exception = "A cidade de destino deve ser preenchida corretamente, ex: São Paulo, SP"
                    }
                }
                ;
                if (veiculo == null)
                {
                    return new ResponseInformacoesRota {
                               Exception = "As informações do veículo devem ser preenchidas"
                    }
                }
                ;
                if (veiculo.CapacidadeTanque <= 0)
                {
                    return new ResponseInformacoesRota {
                               Exception = "A capacidade do tanque deve ser informada"
                    }
                }
                ;
                if (veiculo.CategoriaVeiculo <= 0)
                {
                    return new ResponseInformacoesRota {
                               Exception = "A categoria do veículo deve ser informada"
                    }
                }
                ;
                if (veiculo.ConsumoMedio <= 0)
                {
                    return new ResponseInformacoesRota {
                               Exception = "O consumo médio do veículo deve ser informado"
                    }
                }
                ;
                if (veiculo.ValorCombustivel <= 0)
                {
                    return new ResponseInformacoesRota {
                               Exception = "O valor do combustível deve ser informado"
                    }
                }
                ;
                //ToDo: Verificar se existe método no webservice que calcula velocidade média da viagem
                if (veiculo.VelocidadeMedia <= 0)
                {
                    return new ResponseInformacoesRota {
                               Exception = "A velocidade média a ser empregada na viagem deve ser informada"
                    }
                }
                ;

                var addressStart = new Address
                {
                    street      = enderecoPartida.Split(',')[0].Trim(),
                    houseNumber = enderecoPartida.Split(',')[1].Trim(),
                    city        = new ServiceAddress.City {
                        name = cidadeUfPartida.Split(',')[0].Trim(), state = cidadeUfPartida.Split(',')[1].Trim()
                    }
                };

                var addressEnd = new Address
                {
                    street      = enderecoDestino.Split(',')[0].Trim(),
                    houseNumber = enderecoDestino.Split(',')[1].Trim(),
                    city        = new ServiceAddress.City {
                        name = cidadeUfDestino.Split(',')[0].Trim(), state = cidadeUfDestino.Split(',')[1].Trim()
                    }
                };

                var addressOptions = new AddressOptions
                {
                    usePhonetic = true,
                    searchType  = 2,
                    resultRange = new ResultRange {
                        pageIndex = 1, recordsPerPage = 1
                    }
                };

                double xPartida = 0;
                double yPartida = 0;
                using (var addressFinderSoapClient = new AddressFinderSoapClient())
                {
                    var findAddressResponse = addressFinderSoapClient.findAddress(addressStart, addressOptions, token);

                    if (findAddressResponse.addressLocation.Count() == 0)
                    {
                        return new ResponseInformacoesRota {
                                   Exception = "O endereço de partida não foi localizado, verifique"
                        }
                    }
                    ;

                    xPartida = findAddressResponse.addressLocation.First().point.x;
                    yPartida = findAddressResponse.addressLocation.First().point.y;
                }

                double xDestino = 0;
                double yDestino = 0;
                using (var addressFinderSoapClient = new AddressFinderSoapClient())
                {
                    var findAddressResponse = addressFinderSoapClient.findAddress(addressEnd, addressOptions, token);
                    if (findAddressResponse.addressLocation.Count() == 0)
                    {
                        return new ResponseInformacoesRota {
                                   Exception = "O endereço de chegada não foi localizado, verifique"
                        }
                    }
                    ;

                    xDestino = findAddressResponse.addressLocation.First().point.x;
                    yDestino = findAddressResponse.addressLocation.First().point.y;
                }

                var originRoute = new ServiceRouteMapLink.RouteStop
                {
                    description = addressStart.street,
                    point       = new ServiceRouteMapLink.Point {
                        x = xPartida, y = yPartida
                    }
                };

                var destinationRoute = new ServiceRouteMapLink.RouteStop
                {
                    description = addressEnd.street,
                    point       = new ServiceRouteMapLink.Point {
                        x = xDestino, y = yDestino
                    }
                };

                var routes = new[] { originRoute, destinationRoute };

                var opcaoRota = DescriptionType.RotaUrbana;
                tipoRota = (int)RouteType.PadraoRapida;
                //Se a cidade for diferente troca o descriptionType para rota rodoviária
                if (!cidadeUfPartida.Trim().Equals(cidadeUfDestino.Trim()))
                {
                    opcaoRota = DescriptionType.RotaRodoviaria;
                }

                var routeOptions = new RouteOptions
                {
                    language     = "portugues",
                    routeDetails = new RouteDetails {
                        descriptionType = (int)opcaoRota, routeType = tipoRota, optimizeRoute = true
                    },
                    vehicle = new Vehicle
                    {
                        tankCapacity       = veiculo.CapacidadeTanque,
                        averageConsumption = veiculo.ConsumoMedio,
                        fuelPrice          = veiculo.ValorCombustivel,
                        averageSpeed       = veiculo.VelocidadeMedia,
                        tollFeeCat         = veiculo.CategoriaVeiculo
                    }
                };

                using (var routeSoapClient = new RouteSoapClient())
                {
                    var getRouteResponse = routeSoapClient.getRoute(routes, routeOptions, token);

                    var result = new ResponseInformacoesRota
                    {
                        TempoTotal              = getRouteResponse.routeTotals.totalTime,
                        DistanciaTotal          = getRouteResponse.routeTotals.totalDistance,
                        CustoCombustivel        = getRouteResponse.routeTotals.totalfuelCost,
                        CustoPedagioCombustivel = getRouteResponse.routeTotals.totalCost
                    };
                    return(result);
                }
            }
            catch (Exception)
            {
                return(new ResponseInformacoesRota {
                    Exception = "Não foi possível processar sua solicitação"
                });
            }
        }
Exemplo n.º 10
0
        private Rota CalculaRota(Endereco end1, Endereco end2, EnumTipoRota tipoRota)
        {
            var address1 = new Address
            {
                street = end1.NomeRuaAvenida,
                houseNumber = end1.Numero.ToString(),
                city = new ServiceAddressFinder.City { name = end1.Cidade, state = end1.Estado }
            };

            var address2 = new Address
            {
                street = end2.NomeRuaAvenida,
                houseNumber = end2.Numero.ToString(),
                city = new ServiceAddressFinder.City { name = end2.Cidade, state = end2.Estado }
            };

            var afSoa = new AddressFinderSoapClient();
            afSoa.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://services.maplink.com.br/webservices/v3/AddressFinder/AddressFinder.asmx");
            var addressXY1 = afSoa.getXY(address1, token);
            var addressXY2 = afSoa.getXY(address2, token);

            var rSoa = new RouteSoapClient();
            var routes = new[] {
                new RouteStop
                {
                    description = address1.street+ ", "+address1.houseNumber,
                    point = new ServiceRoute.Point { x = addressXY1.x, y = addressXY1.y }
                },
                new RouteStop
                {
                    description = address2.street+ ", "+address2.houseNumber,
                    point = new ServiceRoute.Point { x = addressXY2.x, y = addressXY2.y }
                }
            };
            var routeOptions = new RouteOptions
            {
                language = "portugues",
                routeDetails = new RouteDetails { descriptionType = 0, routeType = (int)tipoRota, optimizeRoute = true },
                vehicle = new Vehicle
                {
                    tankCapacity = 20,
                    averageConsumption = 9,
                    fuelPrice = 3,
                    averageSpeed = 60,
                    tollFeeCat = 2
                }
            };
            var getRouteResponse = rSoa.getRoute(routes, routeOptions, token);
            var rt = getRouteResponse.routeTotals;

            this.CustoCombustivel = rt.totalfuelCost;
            this.CustoComPedagio = this.CustoCombustivel + rt.totaltollFeeCost;
            this.DistanciaTotal = rt.totalDistance;
            this.TotalTempo = rt.totalTime;

            return this;
        }