private static void TimerCallback(Object o) { int index = random.Next(taxistas.Count); //define a direção para onde será colocado o próximo ponto int direcao_latitude = (rand_pos.NextDouble() > 0.5) ? 1 : -1; int direcao_longitude = (rand_pos.NextDouble() > 0.5) ? 1 : -1; //se o taxi ainda não possui uma posição atual if (taxistas[index].PosicaoAtual == null) { const int CONSTANTE_DISTANCIA_MAXIMA_INICIAL_NOVO_PONTO = 20; double incremento_latitude = rand_pos.NextDouble() * direcao_latitude / CONSTANTE_DISTANCIA_MAXIMA_INICIAL_NOVO_PONTO; double incremento_longitude = rand_pos.NextDouble() * direcao_longitude / CONSTANTE_DISTANCIA_MAXIMA_INICIAL_NOVO_PONTO; //define a posição inicial do taxi taxistas[index].PosicaoAtual = new Localizacao(LATITUDE_BASE + incremento_latitude, LONGITUDE_BASE + incremento_longitude); } else { //atualiza a posição atual do taxi taxistas[index].PosicaoAtual.Latitude += 0.0005 * direcao_latitude; taxistas[index].PosicaoAtual.Longitude += 0.0005 * direcao_longitude; } Console.WriteLine(string.Format("Placa: {0} > lat: {1} ; lng:{2}", taxistas[index].Veiculo.Placa, taxistas[index].PosicaoAtual.Latitude, taxistas[index].PosicaoAtual.Longitude)); TaxistaLocationClient taxista_location = new TaxistaLocationClient(); taxista_location.AtualizarPosicao(taxistas[index].ID, taxistas[index].PosicaoAtual.Latitude, taxistas[index].PosicaoAtual.Longitude); //GC.Collect(); }
private static void CarregarTaxistas() { taxistas = Taxista.ListarTodos().OrderBy(tx => tx.Pessoa.NomeOuRazaoSocial).Take(NUMERO_TAXISTAS).ToList(); for (int i = 0; i < taxistas.Count; i++) { taxistas[i].PosicaoAtual = DefinirPosicao(); TaxistaLocationClient taxista_location = new TaxistaLocationClient(); taxista_location.IniciarPosicaoComStatusAleatorio(taxistas[i].ID, taxistas[i].PosicaoAtual.Latitude, taxistas[i].PosicaoAtual.Longitude); } }