Пример #1
0
        /// <summary>
        /// Faz todos os calculos referentes a posição do radar referente a posição do usuário
        /// </summary>
        /// <param name="local">Localização enviada pelo GPS.</param>
        public RadarInfo calcularRadar(LocalizacaoInfo local, double distanciaRadar)
        {
            double latitudeOld  = local.Latitude;
            double longitudeOld = local.Longitude;

            /*
             * double latitudeCos = Math.Cos(local.Latitude * Math.PI / 180);
             * double latitudeSin = Math.Sin(local.Latitude * Math.PI / 180);
             * double longitudeCos = Math.Cos(local.Longitude * Math.PI / 180);
             * double longitudeSin = Math.Sin(local.Longitude * Math.PI / 180);
             * double distanciaCos = Math.Cos((PreferenciaUtils.DistanciaRadar / 1000) / DIAMETRO_TERRA);
             */

            var args = new RadarBuscaInfo {
                latitudeCos  = Math.Cos(local.Latitude * Math.PI / 180),
                latitudeSin  = Math.Sin(local.Latitude * Math.PI / 180),
                longitudeCos = Math.Cos(local.Longitude * Math.PI / 180),
                longitudeSin = Math.Sin(local.Longitude * Math.PI / 180),
                distanciaCos = Math.Cos((distanciaRadar / 1000) / GPSUtils.DIAMETRO_TERRA),
                Filtros      = listarRadarTipo()
            };

            limparAlertado(local.Latitude, local.Longitude, distanciaRadar);

            RadarInfo         radarCapturado = null;
            IList <RadarInfo> radares        = _db.listar(args);

            foreach (RadarInfo radar in radares)
            {
                if (radarEstaAFrente(local, radar))
                {
                    radarCapturado = radar;
                    break;
                }
            }
            return(radarCapturado);
        }
Пример #2
0
        public IList <RadarInfo> listar(RadarBuscaInfo busca)
        {
            lock (locker)
            {
                string query =
                    "SELECT * FROM radar WHERE (" +
                    "((latsin * " + busca.latitudeSin.ToString().Replace(',', '.') + ") + (latcos * " + busca.latitudeCos.ToString().Replace(',', '.') + ")) * " +
                    "((loncos * " + busca.longitudeCos.ToString().Replace(',', '.') + ") + (lonsin * " + busca.longitudeSin.ToString().Replace(',', '.') + "))" +
                    ") > " + busca.distanciaCos.ToString().Replace(',', '.');
                if (busca.Filtros.Count() > 0)
                {
                    if (busca.Filtros.Count() == 1)
                    {
                        query += " AND type = " + ((int)busca.Filtros[0]).ToString();
                        query += " AND Ativo = true";
                    }
                    else
                    {
                        var lista = new List <string>();
                        foreach (var str in busca.Filtros)
                        {
                            lista.Add(((int)str).ToString());
                        }
                        query += " AND type IN (" + string.Join(", ", lista.ToArray()) + ")";
                        query += " AND Ativo = true";
                    }
                }
                return(database.Query <RadarInfo>(query));

                /*
                 * return database.Query<RadarInfo>(
                 *  "select * from radar where ((latsin * ?) + (latcos * ?) * (loncos * ?) + (lonsin * ?)) > ?",
                 *  new object[5] { latitudeSin, latitudeCos, longitudeCos, longitudeSin, distanciaCos }
                 * );
                 */
            }
        }
Пример #3
0
 public IList <RadarInfo> listar(RadarBuscaInfo busca)
 {
     return(_db.listar(busca));
 }