/// <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); }
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 } * ); */ } }
public IList <RadarInfo> listar(RadarBuscaInfo busca) { return(_db.listar(busca)); }