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"); } }); }
private void positionChanged(object sender, PositionEventArgs e) { if (!_processandoPosicao && aoAtualizarPosicao != null) { _processandoPosicao = true; var local = new GPSLocalInfo { Latitude = e.Position.Latitude, Longitude = e.Position.Longitude, Precisao = (float)e.Position.Accuracy, Sentido = (float)e.Position.Heading, Velocidade = e.Position.Speed * 3.6, Tempo = e.Position.Timestamp.UtcDateTime }; aoAtualizarPosicao(this, local); _processandoPosicao = false; } }