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; } }
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"); } }); }