public static async Task <MapaAcompanhaPage> gerarMapaAcompanhamento(PedidoInfo pedido) { if (!GPSUtils.UsaLocalizacao) { await App.Current.MainPage.DisplayAlert("Erro", "App não configurado para usar GPS.", "Entendi"); return(null); } if (!await GPSUtils.Current.inicializar()) { await App.Current.MainPage.DisplayAlert("Erro", "Ative seu GPS.", "Entendi"); return(null); } var mapaAcompanha = new MapaAcompanhaPage { Title = "Acompanhar", }; mapaAcompanha.Appearing += (sender, e) => { AcompanhaPageAtual = mapaAcompanha; }; mapaAcompanha.Disappearing += (sender, e) => { AcompanhaPageAtual = null; }; return(mapaAcompanha); }
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 static void acompanharComoCliente(FreteInfo frete) { var regraFrete = FreteFactory.create(); regraFrete.gravarAtual(frete); var situacoes = new List <FreteSituacaoEnum>() { FreteSituacaoEnum.PegandoEncomenda, FreteSituacaoEnum.Entregando }; var acompanhaPage = new MapaAcompanhaPage { Title = "Acompanhar viagem", Duracao = frete.Duracao, DuracaoVisivel = situacoes.Contains(frete.Situacao) }; acompanhaPage.Appearing += acompanhaAppearing; acompanhaPage.Disappearing += (sender, e) => { CaronaUtils.Acompanhando = false; }; ((RootPage)App.Current.MainPage).PushAsync(acompanhaPage); }
public static async void finalizarAcompanhamento() { var regraPedido = PedidoFactory.create(); await regraPedido.limparAtual(); AcompanhaPageAtual = null; GPSUtils.Current.aoAtualizarPosicao -= atualizarPosicao; await GPSUtils.Current.finalizar(); }
private static bool executarAcompanhamento(MapaAcompanhaPage acompanhaPage) { var regraFrete = FreteFactory.create(); var frete = regraFrete.pegarAtual(); if (frete == null) { return(false); } atualizarMapa(acompanhaPage, frete); return(CaronaUtils.Acompanhando); }