Example #1
0
 private static LocalizacaoInfo executarPosicao(LocalizacaoInfo local)
 {
     try
     {
         _ultimaLocalizacao = local;
         RadarBLL    regraRadar    = RadarFactory.create();
         PercursoBLL regraPercurso = PercursoFactory.create();
         if (RadarBLL.RadarAtual != null)
         {
             if (regraRadar.radarContinuaAFrente(local, RadarBLL.RadarAtual))
             {
                 RadarInfo radar = RadarBLL.RadarAtual;
                 local.Distancia = calcularDistancia(local.Latitude, local.Longitude, radar.Latitude, radar.Longitude);
             }
             else
             {
                 RadarBLL.RadarAtual = null;
             }
         }
         else
         {
             double    distanciaRadar = (local.Velocidade < 90) ? PreferenciaUtils.DistanciaAlertaUrbano : PreferenciaUtils.DistanciaAlertaEstrada;
             RadarInfo radar          = regraRadar.calcularRadar(local, distanciaRadar);
             if (radar != null)
             {
                 local.Distancia = calcularDistancia(local.Latitude, local.Longitude, radar.Latitude, radar.Longitude);
                 if (PreferenciaUtils.AlertaInteligente)
                 {
                     if ((local.Velocidade - 5) > radar.Velocidade)
                     {
                         avisarRadar(local, radar);
                     }
                 }
                 else
                 {
                     if (local.Velocidade > 15)
                     {
                         avisarRadar(local, radar);
                     }
                 }
             }
         }
         var visualPage = GlobalUtils.Visual;
         if (visualPage != null)
         {
             visualPage.VelocidadeAtual = (float)local.Velocidade;
             visualPage.Precisao        = local.Precisao;
             visualPage.Sentido         = local.Sentido;
             RadarInfo radar = RadarBLL.RadarAtual;
             if (radar != null)
             {
                 visualPage.VelocidadeRadar = radar.Velocidade;
                 visualPage.DistanciaRadar  = (float)local.Distancia;
             }
             else
             {
                 visualPage.VelocidadeRadar = 0;
                 visualPage.DistanciaRadar  = 0;
             }
             visualPage.atualizarPosicao(local);
             visualPage.redesenhar();
         }
         regraPercurso.executarGravacao(local, RadarBLL.RadarAtual);
         //MensagemUtils.avisar(MemoryUtils.getInfo().ToString());
     }
     catch (Exception e) {
         ErroPage.exibir(e);
     }
     return(local);
 }