private void apresentaInfo(FreteRetornoInfo info, Position localizacaoAtual) { _AcaoButton.Text = getMensagemBotao(info.Situacao); _AcaoButton.IsEnabled = (info.Situacao == FreteSituacaoEnum.Entregue ? true : false); //var pontos = MapsUtils.DecodePolyline(info.Polyline); _CustomMap.Polyline = MapaUtils.decodePolyline(info.Polyline); /* * if (_CustomMap.RouteCoordinates == null || _CustomMap.RouteCoordinates.Count == 0) * { * foreach (var ponto in pontos) * { * _CustomMap.RouteCoordinates.Add(ponto); * } * } * else * { * _CustomMap.addPolyline(pontos); * } */ _CustomMap.MoveToRegion(MapSpan.FromCenterAndRadius(localizacaoAtual, Distance.FromMiles(0.1))); var pin = new Pin { Type = PinType.Place, Position = localizacaoAtual, Label = "Motorista", Address = "Toque para ver detalhes..." }; pin.Clicked += (sender, e) => { UserDialogs.Instance.Alert((_FreteInfo == null ? "Obtendo motorista" : "Nome: " + _FreteInfo.Motorista.Usuario.Nome + "\nTelefone: " + _FreteInfo.Motorista.Usuario.Telefone + "\nPlaca: " + _FreteInfo.Motorista.Placa), "Motorista", "Fechar"); }; _CustomMap.Pins.Clear(); _CustomMap.Pins.Add(pin); _Distancia.Text = "Distância até o destino: " + info.DistanciaStr; _Tempo.Text = "Tempo até o destino: " + info.TempoStr; }
public AcompanhaFretePage(FreteRetornoInfo info) { _IdFrete = (int)info.IdFrete; _Situacao = (FreteSituacaoEnum)info.Situacao; inicializarComponente(); iniciaAsync(info).Wait(); Title = "Acompanhar entrega"; Content = new StackLayout() { VerticalOptions = LayoutOptions.Fill, HorizontalOptions = LayoutOptions.Fill, Children = { _CustomMap, _Distancia, _Tempo, _AcaoButton } }; }
public async Task iniciaAsync(FreteRetornoInfo info) { if ((info.Latitude + ";" + info.Longitude) != _LastLatLon) { Device.BeginInvokeOnMainThread(async() => { if (_FreteInfo == null) { _FreteInfo = await FreteFactory.create().pegar(info.IdFrete); } apresentaInfo(info, new Position(info.Latitude, info.Longitude)); }); _LastLatLon = (info.Latitude + ";" + info.Longitude); } task = Task.Factory.StartNew(async() => { await Task.Delay(delay); var retInfo = await FreteFactory.create().atualizar(_IdFrete); await iniciaAsync(retInfo); }); }