Class: LazyStransClient
- Inherits:
-
StransClient
- Object
- StransClient
- LazyStransClient
- Defined in:
- lib/lazy-strans-client.rb
Overview
cliente com alguns servicos facilitadores
Constant Summary collapse
- RAIO_TERRA =
KM
6378.137
Constants inherited from StransClient
Instance Method Summary collapse
-
#linhas_parada(codigoParada) ⇒ Object
Retrona todas as linhas de uma parada.
-
#load ⇒ Object
Constroi um cach para informações Estaticas da api.
-
#paradas_proximas(long, lat, dist) ⇒ Object
pega as paradas com distancia máxima da localização passada.
Methods inherited from StransClient
Constructor Details
This class inherits a constructor from StransClient
Instance Method Details
#linhas_parada(codigoParada) ⇒ Object
Retrona todas as linhas de uma parada.
61 62 63 64 65 |
# File 'lib/lazy-strans-client.rb', line 61 def linhas_parada(codigoParada) codigoParada = codigoParada.to_i load() if @linhas.nil? @linhas_parada[codigoParada] end |
#load ⇒ Object
Constroi um cach para informações Estaticas da api.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/lazy-strans-client.rb', line 10 def load @linhas = get(:linhas) return @linhas if @linhas.is_a? Erro @paradas_linha = {} # paradas de uma linha @linhas_parada = {} # linhas de uma parada @linhas.each do |l| paradas = get(:paradas_linha, l.codigoLinha) next if paradas.is_a? ErroStrans @paradas_linha[l.codigoLinha] = paradas paradas.each do |p| @linhas_parada[p.codigoParada] = [] unless @linhas_parada.key?(p.codigoParada) @linhas_parada[p.codigoParada] << p.linha end end @linhas_parada end |
#paradas_proximas(long, lat, dist) ⇒ Object
pega as paradas com distancia máxima da localização passada.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/lazy-strans-client.rb', line 29 def paradas_proximas(long, lat, dist) long = long.to_f lat = lat.to_f dist = dist.to_f paradas = [] get(:paradas).each do |parada| if(!parada.long.nil? && !parada.long.nil?) dLong = calc_distan(long, parada.long) dLat = calc_distan(lat, parada.lat) #mutiplicacao do sen da metade da distancia da Lat; msmdl = Math::sin(dLat/2) * Math::sin(dLat/2) #mutiplicaçao cos da Latitude * PI mclPI = Math::cos(lat * Math::PI / 180) * Math::cos(parada.lat * Math::PI / 180) #mutiplicacao da metade do seno mmds = Math::sin(dLong/2) * Math::sin(dLong/2) a = msmdl + mclPI * mmds c = 2 * Math::atan2(Math::sqrt(a), Math::sqrt(1-a)) d = RAIO_TERRA * c dist_parada = d * 1000 # distancia em metros if(dist_parada < dist) parada.dist = dist_parada # metros paradas << parada end end end paradas end |