Пример #1
0
        private static async void atualizarMapa(MapaAcompanhaPage acompanhaPage, FreteInfo frete)
        {
            var regraFrete = FreteFactory.create();
            var retorno    = await regraFrete.atualizar(frete.Id);

            if (retorno != null)
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    var mapaRota = new MapaRotaInfo
                    {
                        Distancia    = retorno.Distancia,
                        DistanciaStr = retorno.DistanciaStr,
                        Tempo        = retorno.Tempo,
                        TempoStr     = retorno.TempoStr,
                        PolylineStr  = retorno.Polyline,
                        PosicaoAtual = new Mapa.Model.LocalInfo
                        {
                            Latitude  = retorno.Latitude,
                            Longitude = retorno.Longitude
                        },
                        Polyline = MapaUtils.decodePolyline(retorno.Polyline)
                    };
                    if (string.IsNullOrEmpty(retorno.Polyline))
                    {
                        mapaRota.Polyline = new List <Position>();
                        foreach (var local in frete.Locais)
                        {
                            mapaRota.Polyline.Add(new Position(local.Latitude, local.Longitude));
                        }
                    }
                    acompanhaPage.atualizarMapa(mapaRota);
                });
            }
        }
        public void atualizarMapa(MapaRotaInfo rota)
        {
            _rotaAtual          = rota;
            _CustomMap.Polyline = rota.Polyline;
            var posicaoAtual = new Position(rota.PosicaoAtual.Latitude, rota.PosicaoAtual.Longitude);

            _CustomMap.MoveToRegion(MapSpan.FromCenterAndRadius(posicaoAtual, Distance.FromMiles(0.1)));
            _distanciaLabel.Text = rota.DistanciaStr;
            if (_duracaoVisivel)
            {
                int duracao = rota.Tempo - Duracao;
                if (duracao > 0)
                {
                    _tempoLabel.Text = TimeSpan.FromSeconds(duracao).ToString();
                }
                else
                {
                    _tempoLabel.Text = rota.TempoStr;
                }
            }
            else
            {
                _tempoLabel.Text = rota.TempoStr;
            }
        }
Пример #3
0
        public static async void atualizarPosicao(GPSLocalInfo local)
        {
            try
            {
                //var regraFrete = FreteFactory.create();
                //var frete = regraFrete.pegarAtual();
                var regraMotorista = MotoristaFactory.create();
                var motorista      = regraMotorista.pegarAtual();

                //if (motorista != null && frete != null)
                if (motorista != null)
                {
                    var retorno = await regraMotorista.atualizar(new MotoristaEnvioInfo
                    {
                        IdMotorista        = motorista.Id,
                        Latitude           = local.Latitude,
                        Longitude          = local.Longitude,
                        CodDisponibilidade = 1
                    });

                    if (AcompanhaPageAtual != null)
                    {
                        var mapaRota = new MapaRotaInfo
                        {
                            Distancia    = retorno.Distancia.HasValue ? retorno.Distancia.Value : 0,
                            DistanciaStr = retorno.DistanciaStr,
                            Tempo        = retorno.Tempo.HasValue ? retorno.Tempo.Value : 0,
                            TempoStr     = retorno.TempoStr,
                            PolylineStr  = retorno.Polyline,
                            PosicaoAtual = new Mapa.Model.LocalInfo
                            {
                                Latitude  = local.Latitude,
                                Longitude = local.Longitude
                            },
                            Polyline = MapaUtils.decodePolyline(retorno.Polyline)
                        };
                        if (string.IsNullOrEmpty(retorno.Polyline) && retorno.IdFrete.HasValue)
                        {
                            var regraFrete = FreteFactory.create();
                            var frete      = await regraFrete.pegar(retorno.IdFrete.Value);

                            mapaRota.Polyline = new List <Position>();
                            foreach (var freteLocal in frete.Locais)
                            {
                                mapaRota.Polyline.Add(new Position(freteLocal.Latitude, freteLocal.Longitude));
                            }
                        }
                        if (AcompanhaPageAtual != null)
                        {
                            AcompanhaPageAtual.atualizarMapa(mapaRota);
                        }
                    }
                }
            }
            catch (Exception erro)
            {
                UserDialogs.Instance.Alert(erro.Message, "Erro", "Entendi");
            }
        }
 private static void atualizarPosicao(object sender, GPSLocalInfo local)
 {
     Device.BeginInvokeOnMainThread(async() => {
         try
         {
             var regraPedido = PedidoFactory.create();
             var pedido      = regraPedido.pegarAtual();
             if (pedido == null)
             {
                 return;
             }
             var envio = new PedidoEnvioInfo
             {
                 IdPedido  = pedido.Id,
                 Latitude  = local.Latitude,
                 Longitude = local.Longitude
             };
             var retorno = await regraPedido.atualizar(envio);
             if (!string.IsNullOrEmpty(retorno.Polyline))
             {
                 if (AcompanhaPageAtual != null)
                 {
                     var rota = new MapaRotaInfo
                     {
                         PosicaoAtual = new LocalInfo
                         {
                             Latitude  = retorno.Latitude,
                             Longitude = retorno.Longitude
                         },
                         PolylineStr  = retorno.Polyline,
                         Distancia    = retorno.Distancia,
                         DistanciaStr = retorno.DistanciaStr,
                         Tempo        = retorno.Tempo,
                         TempoStr     = retorno.TempoStr
                     };
                     rota.Polyline = MapaUtils.decodePolyline(rota.PolylineStr);
                     if (AcompanhaPageAtual != null)
                     {
                         AcompanhaPageAtual.atualizarMapa(rota);
                     }
                 }
             }
             else if (!string.IsNullOrEmpty(retorno.Mensagem))
             {
                 UserDialogs.Instance.Alert(retorno.Mensagem, "Erro", "Entendi");
             }
         }
         catch (Exception erro)
         {
             UserDialogs.Instance.Alert(erro.Message, "Erro", "Entendi");
         }
     });
 }