private void MontaMapa(PosicaoHistorico paramPosicao)
        {
            try
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    try
                    {
                        Position paramPosition = new Position(
                            Convert.ToDouble(paramPosicao.Latitude)
                            , Convert.ToDouble(paramPosicao.Longitude)
                            );

                        _bllMapa.MontaMapaPosicao(paramPosicao);
                        this._view.mapaPosicao.MoveToRegion(
                            MapSpan.FromCenterAndRadius(
                                paramPosition
                                , Distance.FromMeters(300)
                                )
                            , true
                            );

                        this._view.MontaMapa();
                    }
                    catch
                    {
                        ShowErrorAlert("Exception");
                    }
                });
            }
            catch
            {
                ShowErrorAlert("Exception");
            }
        }
Exemple #2
0
        protected override void OnBindingContextChanged()
        {
            try
            {
                base.OnBindingContextChanged();

                PosicaoHistorico unidadeRastreada = (PosicaoHistorico)BindingContext;

                if (unidadeRastreada != null)
                {
                    BuildCellDetalhes build = new BuildCellDetalhes();

                    //Stack Principal
                    Grid boxPrincipal = build.BuildCell(
                        unidadeRastreada
                        , null
                        , ShowStatusRastreadorUnidadeRastreada
                        );

                    boxPrincipal.GestureRecognizers.Add(new TapGestureRecognizer
                    {
                        Command              = new Command(BoxPrincipal_Tap),
                        CommandParameter     = unidadeRastreada,
                        NumberOfTapsRequired = 1
                    });

                    View = boxPrincipal;
                }
            }
            catch
            {
            }
        }
        public void DesativarAncora(PosicaoHistorico posicaoHistorico)
        {
            ModelPosicao _modelPosicao = new ModelPosicao();

            _tokensource = new CancellationTokenSource();
            Task.Run(async() =>
            {
                ServiceResult <Int32> result = new ServiceResult <Int32>();
                _view.ExibirLoad();
                BtnTopIsEnabled = false;
                try
                {
                    result = await _modelPosicao.DesativarAncora(
                        posicaoHistorico
                        , _tokensource.Token
                        );
                }
                catch
                {
                    result.MessageError = "Exception";
                }
                finally
                {
                    DesativarAncora_Finish(
                        result
                        , posicaoHistorico
                        );
                }
            }, _tokensource.Token);
        }
        public void MontaDetalheTopoPosicao(PosicaoHistorico paramPosicao)
        {
            BuildCellDetalhes build = new BuildCellDetalhes();

            PainelDetalhes.Children.Clear();

            Image ImageAncora = null;

            if (paramPosicao.ExibeUltimaPosicao)
            {
                ImageAncora = new Image()
                {
                    Source          = "ic_menu_escuro.png",
                    HeightRequest   = 15,
                    WidthRequest    = 16,
                    Margin          = new Thickness(20, 0),
                    Opacity         = 1,
                    VerticalOptions = LayoutOptions.Center
                };

                ImageAncora.GestureRecognizers.Add(new TapGestureRecognizer
                {
                    Command              = new Command(ImageAncora_Tap),
                    CommandParameter     = paramPosicao,
                    NumberOfTapsRequired = 1
                });
            }

            Grid tempGrid = build.BuildCell(paramPosicao, ImageAncora);

            Device.BeginInvokeOnMainThread(() =>
            {
                PainelDetalhes.Children.Add(tempGrid);
            });
        }
Exemple #5
0
        public async Task <ServiceResult <Int32> > DesativarAncora(
            PosicaoHistorico paramPosicao
            , CancellationToken paramToken
            )
        {
            ServiceResult <Int32> result =
                new ServiceResult <Int32>();

            await Task.Delay(delay);

            try
            {
                result.Data = new Int32();
            }
            catch (HttpRequestException)
            {
                result.MessageError = "HttpRequestException";
            }
            catch (Exception)
            {
                result.MessageError = "Exception";
            }

            return(result);
        }
Exemple #6
0
 private async void BoxRegra_Tap(object obj)
 {
     if (obj != null)
     {
         PosicaoHistorico tempPosicao = obj as PosicaoHistorico;
         await this._messageService.ShowAlertAsync(
             tempPosicao.NomeRegraViolada
             , tempPosicao.IdentificacaoUnidadeRastreada
             );
     }
 }
Exemple #7
0
        private void OpenWaze(PosicaoHistorico unidadeRastreada)
        {
            String paramEndereco  = unidadeRastreada.Endereco;
            String paramLatitude  = unidadeRastreada.Latitude.ToString().Replace(",", ".");
            String paramLongitude = unidadeRastreada.Longitude.ToString().Replace(",", ".");

            String paramURL = "https://waze.com/ul?q=" + paramEndereco + "&ll="
                              + paramLatitude + "," + paramLongitude + "&navigate=yes";

            //String paramURL = "https://waze.com/ul?ll=" + paramLatitude + "," + paramLongitude + "&navigate=yes";

            _util.OpenWaze(paramURL.Replace(" ", "%20"));
        }
        private void DesativarAncora_Finish(
            ServiceResult <Int32> paramResult
            , PosicaoHistorico paramPosicaoHistorico
            )
        {
            try
            {
                if (!_tokensource.IsCancellationRequested)
                {
                    UpdateToken(paramResult.RefreshToken);
                    if (String.IsNullOrWhiteSpace(paramResult.MessageError))
                    {
                        paramPosicaoHistorico.Ancora_Tolerancia = null;


                        Device.BeginInvokeOnMainThread(() =>
                        {
                            try
                            {
                                _bllMapa.RemoverCircle();

                                _view.MontaDetalheTopoPosicao(paramPosicaoHistorico);
                                this._messageService.ShowAlertAsync(AppResources.AncoraRemovida);
                            }
                            catch
                            {
                                ShowErrorAlert("Exception");
                            }
                        });
                    }
                    else
                    {
                        ShowErrorAlert(paramResult.MessageError);
                    }
                }
            }
            catch
            {
                ShowErrorAlert("Exception");
            }
            finally
            {
                _view.EscondeLoad();
                BtnTopIsEnabled = true;
            }
        }
Exemple #9
0
        private void OpenGoogleMaps(PosicaoHistorico unidadeRastreada)
        {
            String paramEndereco  = unidadeRastreada.Endereco;
            String paramLatitude  = unidadeRastreada.Latitude.ToString().Replace(",", ".");
            String paramLongitude = unidadeRastreada.Longitude.ToString().Replace(",", ".");

            //String paramURL = "https://waze.com/ul?q=" + paramEndereco + "&ll="
            //    + paramLatitude + "," + paramLongitude + "&navigate=yes";

            String paramURL = "google.navigation:q=" + paramLatitude + "," + paramLongitude;

            if (Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.iOS)
            {
                paramURL = "http://maps.apple.com/?q=" + paramLatitude + "," + paramLongitude;
            }


            _util.OpenGoogleMaps(paramURL.Replace(" ", "%20"));
        }
Exemple #10
0
        public Position MontaMapaPosicao(PosicaoHistorico paramPosicao)
        {
            //acaoNome = "Lista pin histórico";
            Position position = new Position();

            try
            {
                position = new Position(
                    paramPosicao.Latitude.Value
                    , paramPosicao.Longitude.Value
                    );

                BitmapDescriptor bmp = paramPosicao.MontaIconPin();


                if (paramPosicao.OrdemRastreador == null)
                {
                    paramPosicao.OrdemRastreador = 0;
                }


                Pin pinPosicao = new Pin
                {
                    Type     = PinType.Place,
                    Position = position,
                    Icon     = bmp,
                    Label    = paramPosicao.IdentificacaoUnidadeRastreada
                };

                _mapa.PinClicked += (sender, e) =>
                {
                    pinPosicao.Label = paramPosicao.IdentificacaoUnidadeRastreada;
                };

                _mapa.Pins.Add(pinPosicao);
            }
            catch (Exception ex)
            {
                App.Current.MainPage.DisplayAlert("Erro", ex.Message, "OK");
            }
            return(position);
        }
Exemple #11
0
        public async Task <ServiceResult <Int32> > DesativarAncora(
            PosicaoHistorico paramPosicao
            , CancellationToken paramToken
            )
        {
            client.DefaultRequestHeaders
            .Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType));

            String urlRequisicao;

            urlRequisicao = "Anchor/" + paramPosicao.IdUnidadeRastreada.ToString();


            return(await MakeRequisicion <Int32>(
                       HttpMethod.Delete
                       , urlRequisicao
                       , null
                       , paramToken
                       ));
        }
Exemple #12
0
        public Circle MontaMapaAncora(PosicaoHistorico posicaoHistorico
                                      , Int32 paramTolerancia
                                      //, String paramLabel
                                      //, String paramIcone
                                      )
        {
            Circle circle = null;

            try
            {
                Position posi = new Position(posicaoHistorico.Latitude.Value, posicaoHistorico.Longitude.Value);
                circle = MontaMapaAncora(posi, paramTolerancia
                                         //,paramLabel, paramIcone
                                         );
            }
            catch
            {
                this._messageService.ShowAlertAsync("Exception");
            }
            return(circle);
        }
        public async Task <ServiceResult <Int32> > DesativarAncora(
            PosicaoHistorico paramPosicao
            , CancellationToken paramToken
            )
        {
            ServiceResult <Int32> result = new ServiceResult <Int32>();

            try
            {
                result = await DataStore.DesativarAncora(
                    paramPosicao
                    , paramToken
                    );
            }
            catch (Exception)
            {
                result.IsValid      = false;
                result.MessageError = "ErroInesperado";
            }

            return(result);
        }
Exemple #14
0
        public async Task <ServiceResult <AncoraAtivacaoDto> > AtivarAncora(
            PosicaoHistorico paramPosicao
            , CancellationToken paramToken
            )
        {
            List <KeyValuePair <string, string> > requisaoParametros =
                new List <KeyValuePair <string, string> >();

            requisaoParametros.Add(
                new KeyValuePair <string, string>(
                    "paramIdTracedUnit"
                    , paramPosicao.IdUnidadeRastreada.ToString()
                    )
                );

            requisaoParametros.Add(
                new KeyValuePair <string, string>(
                    "paramLatitude"
                    , paramPosicao.Latitude.ToString()
                    )
                );

            requisaoParametros.Add(
                new KeyValuePair <string, string>(
                    "paramLongitude"
                    , paramPosicao.Longitude.ToString()
                    )
                );

            //requisaoParametros.Add(
            //    new KeyValuePair<string, string>(
            //        "tolerancia"
            //        , null
            //    )
            //);

            requisaoParametros.Add(
                new KeyValuePair <string, string>(
                    "paramTolerance"
                    , "300"
                    )
                );

            FormUrlEncodedContent content =
                new FormUrlEncodedContent(requisaoParametros);

            content.Headers.ContentType = new MediaTypeHeaderValue(mediaType);

            content.Headers.ContentType.CharSet = "UTF-8";

            client.DefaultRequestHeaders
            .Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType));

            String urlRequisicao;

            urlRequisicao = "Anchor";


            return(await MakeRequisicion <AncoraAtivacaoDto>(
                       HttpMethod.Post
                       , urlRequisicao
                       , content
                       , paramToken
                       ));
        }
Exemple #15
0
        public Grid BuildCell(
            PosicaoHistorico paramUnidadeRastreada
            , View paramView = null
            , Boolean ShowStatusRastreadorUnidadeRastreada = false
            )
        {
            try
            {
                Double margin = 15;

                #region Grid
                Grid boxPrincipal = new Grid();
                boxPrincipal.WidthRequest    = _app.ScreenWidth;
                boxPrincipal.ColumnSpacing   = 0;
                boxPrincipal.RowSpacing      = 0;
                boxPrincipal.VerticalOptions = LayoutOptions.FillAndExpand;

                boxPrincipal.ColumnDefinitions = new ColumnDefinitionCollection();
                ColumnDefinition col01 = new ColumnDefinition()
                {
                    Width = GridLength.Auto
                };

                ColumnDefinition col03 = new ColumnDefinition()
                {
                    Width = GridLength.Auto
                };


                ColumnDefinition col02;

                col02 = new ColumnDefinition()
                {
                    Width = GridLength.Star
                };

                boxPrincipal.ColumnDefinitions.Add(col01);
                boxPrincipal.ColumnDefinitions.Add(col02);
                boxPrincipal.ColumnDefinitions.Add(col03);


                boxPrincipal.RowDefinitions = new RowDefinitionCollection();
                boxPrincipal.RowDefinitions.Add(new RowDefinition()
                {
                    Height = GridLength.Star
                });
                #endregion

                #region Frame
                Frame boxRegra = new Frame()
                {
                    CornerRadius    = 2,
                    Margin          = new Thickness(margin, margin, 0, margin),
                    HasShadow       = false,
                    Padding         = 0,
                    Opacity         = 1,
                    WidthRequest    = 27,
                    BackgroundColor = Color.Transparent,
                    OutlineColor    = Color.Transparent,
                    VerticalOptions = LayoutOptions.Fill
                };

                if (!String.IsNullOrEmpty(paramUnidadeRastreada.NomeRegraViolada))
                {
                    boxRegra.GestureRecognizers.Add(new TapGestureRecognizer
                    {
                        Command              = new Command(BoxRegra_Tap),
                        CommandParameter     = paramUnidadeRastreada,
                        NumberOfTapsRequired = 1
                    });


                    if (String.IsNullOrEmpty(paramUnidadeRastreada.CorRegraPrioritaria))
                    {
                        boxRegra.BackgroundColor = Color.FromHex("#FF2E2F3A");
                    }
                    else
                    {
                        boxRegra.BackgroundColor = Color.FromHex(paramUnidadeRastreada.CorRegraPrioritaria);
                    }
                }
                boxPrincipal.Children.Add(boxRegra, 0, 0);
                #endregion

                #region Texto
                StackLayout boxTexto = new StackLayout()
                {
                    Margin          = new Thickness(margin),
                    Spacing         = 0,
                    Orientation     = StackOrientation.Vertical,
                    WidthRequest    = col02.Width.Value,
                    VerticalOptions = LayoutOptions.Center
                };


                if (paramUnidadeRastreada.OrdemRastreador == null)
                {
                    paramUnidadeRastreada.OrdemRastreador = 0;
                }


                Label labelUnidadeRastreada = new Label()
                {
                    Text                    = paramUnidadeRastreada.IdentificacaoUnidadeRastreada,
                    TextColor               = Color.Black,
                    FontAttributes          = FontAttributes.Bold,
                    FontSize                = 15,
                    Margin                  = new Thickness(0, 0, 0, 2),
                    LineBreakMode           = LineBreakMode.TailTruncation,
                    HorizontalTextAlignment = TextAlignment.Start
                };


                if (paramUnidadeRastreada.StatusRastreadorUnidadeRastreada == (byte)EnumStatusUnidadeRastreada.Atualizada)
                {
                    labelUnidadeRastreada.TextColor = Color.DarkGreen;
                }
                else
                {
                    labelUnidadeRastreada.TextColor = Color.DarkRed;
                }


                boxTexto.Children.Add(labelUnidadeRastreada);

                Label labelDataEvento = new Label()
                {
                    Text = String.Format(
                        "{0:dd/MM/yyyy HH:mm:ss}"
                        , paramUnidadeRastreada.DataEvento.Value.ToLocalTime()
                        ),
                    TextColor               = Color.FromHex("#9b9eb0"),
                    FontSize                = 14,
                    Margin                  = labelUnidadeRastreada.Margin,
                    LineBreakMode           = LineBreakMode.TailTruncation,
                    HorizontalTextAlignment = TextAlignment.Start
                };
                boxTexto.Children.Add(labelDataEvento);


                if (!String.IsNullOrWhiteSpace(paramUnidadeRastreada.ResponsavelUnidadeRastreada))
                {
                    Label labelMotorista = new Label()
                    {
                        Text                    = paramUnidadeRastreada.ResponsavelUnidadeRastreada,
                        TextColor               = Color.FromHex("#9b9eb0"),
                        FontSize                = 14,
                        Margin                  = new Thickness(0),
                        LineBreakMode           = LineBreakMode.TailTruncation,
                        HorizontalTextAlignment = TextAlignment.Start
                    };
                    boxTexto.Children.Add(labelMotorista);
                }


                StackLayout boxImagemUnidade = new StackLayout()
                {
                    Margin          = new Thickness(15, 0, 0, 0),
                    Spacing         = 0,
                    Orientation     = StackOrientation.Horizontal,
                    WidthRequest    = col01.Width.Value,
                    VerticalOptions = LayoutOptions.Start
                };


                String sourceImageUnidade = String.Empty;

                if (!String.IsNullOrEmpty(paramUnidadeRastreada.IconePadrao))
                {
                    sourceImageUnidade = paramUnidadeRastreada.IconePadrao;
                }

                Image ImageUnidade = new Image()
                {
                    Source = sourceImageUnidade,
                    //BackgroundColor = Color.Black,
                    //HeightRequest = 15,
                    //WidthRequest = 16,
                    Margin          = new Thickness(35, 0, margin, 0),
                    Opacity         = 1,
                    VerticalOptions = LayoutOptions.Center,
                    Scale           = 3.5
                };


                boxPrincipal.Children.Add(ImageUnidade, 0, 0);

                boxPrincipal.Children.Add(boxTexto, 1, 0);
                #endregion

                #region Image

                String sourceImage = String.Empty;


                //Muda icone de ignicao
                if (paramUnidadeRastreada.Ignicao == true)
                {
                    sourceImage = "ic_ignition_on.png";
                }

                if (paramUnidadeRastreada.Ignicao == false)
                {
                    sourceImage = "ic_ignition_off.png";
                }


                Image ImageIgnicao = new Image()
                {
                    Source          = sourceImage,
                    HeightRequest   = 15,
                    WidthRequest    = 16,
                    Margin          = new Thickness(0, 0, margin, 0),
                    Opacity         = 1,
                    VerticalOptions = LayoutOptions.Center
                };

                if (paramUnidadeRastreada.Ignicao.HasValue)
                {
                    if (paramUnidadeRastreada.Ignicao.Value == false)
                    {
                        ImageIgnicao.Opacity = 0.5f;
                    }
                }
                else
                {
                    ImageIgnicao.Opacity = 0;
                }

                StackLayout stack = new StackLayout();
                stack.Orientation       = StackOrientation.Horizontal;
                stack.HorizontalOptions = LayoutOptions.End;
                stack.Margin            = new Thickness(0, 25, 0, 0);

                stack.Children.Add(ImageIgnicao);
                if (paramView != null)
                {
                    stack.Children.Add(paramView);
                }

                boxPrincipal.Children.Add(stack, 1, 0);

                #endregion

                return(boxPrincipal);
            }
            catch
            {
                throw;
            }
        }
Exemple #16
0
        private async void BoxPrincipal_Tap(object obj)
        {
            String answer;

            PosicaoHistorico _posicaoDetalhes = (PosicaoHistorico)obj;

            ////Int64? posiId = posi.IdPosicao;

            if (_enumPage == EnumPage.DetalhesAlerta || _enumPage == EnumPage.DetalhesUnidade)
            {
                List <String> respostas = new List <String>
                {
                    AppResources.historico
                    //,AppResources.detalheposicao
                };


                if (_enumPage == EnumPage.DetalhesAlerta)
                {
                    respostas.Add(AppResources.UltimaPosicao);
                }
                else
                {
                    respostas.Add(AppResources.detalheposicao);
                }



                respostas.Add(AppResources.Roteirizacao);


                answer = await
                         this._messageService.ShowMessageAsync(
                    _posicaoDetalhes.IdentificacaoUnidadeRastreada
                    , AppResources.cancelar
                    , null
                    , respostas.ToArray()
                    );


                if (answer == AppResources.historico)
                {
                    this._navigationService.NavigateToHistorico(
                        _painelDto
                        , obj
                        , _enumPage
                        );
                }


                if (answer == AppResources.Roteirizacao)
                {
                    String answerStreet;

                    List <String> respostasStreet = new List <String>
                    {
                        AppResources.Waze
                        , AppResources.GoogleMaps
                    };

                    answerStreet = await
                                   this._messageService.ShowMessageAsync(
                        _posicaoDetalhes.IdentificacaoUnidadeRastreada
                        //+ "\n\n" + AppResources.Posicao + "\n" + String.Format("{0:dd/MM/yyyy HH:mm:ss}", _posicaoDetalhes.DataEvento)
                        , AppResources.cancelar
                        , null
                        , respostasStreet.ToArray()
                        );


                    if (answerStreet == AppResources.Waze)
                    {
                        OpenWaze(_posicaoDetalhes);
                    }
                    else
                    {
                        OpenGoogleMaps(_posicaoDetalhes);
                    }
                }


                if (answer == AppResources.UltimaPosicao || answer == AppResources.detalheposicao)
                {
                    if (answer == AppResources.UltimaPosicao)
                    {
                        _posicaoDetalhes.ExibeUltimaPosicao = true;
                    }
                    else
                    {
                        _posicaoDetalhes.ExibeUltimaPosicao = (_enumPage == EnumPage.DetalhesUnidade);
                    }

                    //_enumPage = EnumPage.DetalhesUnidade;

                    this._navigationService.NavigateToPosicao(
                        _painelDto
                        , _posicaoDetalhes
                        , _enumPage
                        );
                }
            }
            else if (_enumPage == EnumPage.Historico)
            {
                this._navigationService.NavigateToPosicao(
                    _painelDto
                    , _posicaoDetalhes
                    , _enumPage
                    );
            }
        }
        private void BuscarPosicao()
        {
            try
            {
                _tokensource = new CancellationTokenSource();
                Task.Run(async() =>
                {
                    try
                    {
                        //Task.Run(async () =>
                        //{
                        if (String.IsNullOrEmpty(_posicaoDetalhes.Endereco))
                        {
                            String endereco           = await FindAddressByPosition(_posicaoDetalhes.Latitude.Value, _posicaoDetalhes.Longitude.Value);
                            _posicaoDetalhes.Endereco = endereco;
                        }
                        //});


                        BtnTopIsEnabled            = false;
                        ModelPosicao _modelPosicao = new ModelPosicao();
                        Device.BeginInvokeOnMainThread(() =>
                        {
                            this._bllMapa.LimpaMapa();
                        });

                        Int64?idPosicao = null;
                        if (_posicaoDetalhes.ExibeUltimaPosicao == false)
                        {
                            idPosicao = _posicaoDetalhes.IdPosicao;
                        }


                        ServiceResult <Posicao> resultPainel =
                            await _modelPosicao.Get(
                                idPosicao
                                , _posicaoDetalhes.IdUnidadeRastreada
                                , _posicaoDetalhes.OrdemRastreador
                                , _tokensource.Token
                                );

                        if (!_tokensource.IsCancellationRequested)
                        {
                            UpdateToken(resultPainel.RefreshToken);

                            if (String.IsNullOrWhiteSpace(resultPainel.MessageError))
                            {
                                Posicao tempPosicao = resultPainel.Data;

                                if (tempPosicao.Latitude != null)
                                {
                                    tempPosicao.Endereco = _posicaoDetalhes.Endereco;


                                    PainelResumoListViewSource = tempPosicao;



                                    PosicaoHistorico posicao = new PosicaoHistorico()
                                    {
                                        CorRegraPrioritaria    = tempPosicao.CorRegraPrioritaria,
                                        DataEvento             = tempPosicao.DataEvento.ToLocalTime(),
                                        Identificacao          = tempPosicao.Identificacao,
                                        IdTipoUnidadeRastreada = tempPosicao.IdTipoUnidadeRastreada,
                                        //Ignicao = tempPosicao.Ignicao,
                                        Latitude                    = tempPosicao.Latitude,
                                        Longitude                   = tempPosicao.Longitude,
                                        NomeRegraViolada            = tempPosicao.NomeRegraViolada,
                                        Velocidade                  = tempPosicao.Velocidade,
                                        ResponsavelUnidadeRastreada = tempPosicao.ResponsavelUnidadeRastreada,
                                        Endereco                    = _posicaoDetalhes.Endereco
                                    };

                                    if (tempPosicao.Ignicao != null)
                                    {
                                        posicao.Ignicao = tempPosicao.Ignicao;
                                    }


                                    //Monta StreetView
                                    MontaStreetView(posicao.Latitude.Value, posicao.Longitude.Value);



                                    posicao.ExibeUltimaPosicao = _posicaoDetalhes.ExibeUltimaPosicao;
                                    posicao.IdUnidadeRastreada = _posicaoDetalhes.IdUnidadeRastreada;

                                    if (tempPosicao.Ancora_Latitude != null)
                                    {
                                        posicao.Ancora_Latitude   = tempPosicao.Ancora_Latitude;
                                        posicao.Ancora_Longitude  = tempPosicao.Ancora_Longitude;
                                        posicao.Ancora_Tolerancia = tempPosicao.Ancora_Tolerancia;
                                    }

                                    posicao.OrdemRastreador = _posicaoDetalhes.OrdemRastreador;

                                    if (_painelDto.Id == 2 && _posicaoDetalhes.CorRegraPrioritaria != null) //Fixa Cor Alerta
                                    {
                                        posicao.CorRegraPrioritaria = _posicaoDetalhes.CorRegraPrioritaria;
                                        posicao.NomeRegraViolada    = _posicaoDetalhes.NomeRegraViolada;
                                    }


                                    _view.MontaDetalheTopoPosicao(posicao);


                                    _posicaoHistorico = posicao;

                                    PainelSensoresListViewSource    = tempPosicao.Sensores;
                                    PainelAtuadoresListViewSource   = tempPosicao.Atuadores;
                                    PainelTelemetriaListViewSource  = tempPosicao.Telemetrias;
                                    PainelInformacoesListViewSource = tempPosicao.Informacoes;


                                    //Monta Mapa da Posicao
                                    MontaMapa(posicao);


                                    if (posicao.Ancora_Tolerancia != null)
                                    {
                                        _bllMapa.MontaMapaAncora(posicao, posicao.Ancora_Tolerancia.Value);
                                    }
                                }
                                else
                                {
                                    this._messageService.ShowAlertAsync(AppResources.NaoHaDetalhesPosicao);
                                }
                            }
                            else
                            {
                                ShowErrorAlert(resultPainel.MessageError);
                            }

                            _view.EscondeLoad();
                            this.PainelDetalhes_IsRefreshing = false;
                            BtnTopIsEnabled = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        ShowErrorAlert("Exception");
                    }
                }, _tokensource.Token);
            }
            catch (Exception ex)
            {
                ShowErrorAlert("Exception");
            }
        }
        private async void ImageAncora_Tap(object obj)
        {
            _tokensource = new CancellationTokenSource();

            try
            {
                PosicaoHistorico _posicao = (PosicaoHistorico)obj;

                String answer;
                String ancora;

                if (_posicao.Ancora_Tolerancia == null)
                {
                    ancora = AppResources.AtivarAncora;
                }
                else
                {
                    ancora = AppResources.DesativarAncora;
                }

                Boolean result = await _viewModelPosicao.ExibeMenuComandos();

                //await Task.Delay(3000);


                if (result == true)
                {
                    answer = await
                             _messageService.ShowMessageAsync(
                        AppResources.ChooseAction
                        , AppResources.cancelar
                        , null
                        , new string[] {
                        ancora
                        , AppResources.EnviarComandos
                    }
                        );
                }
                else
                {
                    answer = await
                             _messageService.ShowMessageAsync(
                        AppResources.ChooseAction
                        , AppResources.cancelar
                        , null
                        , new string[] {
                        ancora
                    }
                        );
                }

                if (answer == AppResources.EnviarComandos)
                {
                    this._viewModelPosicao.NavigateToComandos();
                }
                else if (answer == AppResources.AtivarAncora)
                {
                    this._viewModelPosicao.AtivarAncora(_posicao);
                }
                else if (answer == AppResources.DesativarAncora)
                {
                    this._viewModelPosicao.DesativarAncora(_posicao);
                }
            }
            catch (Exception ex)
            {
            }
        }