Class: Geoposicionamento

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/generators/mdwa_endereco/install/templates/templates/models/geoposicionamento.rb

Class Method Summary collapse

Class Method Details

.posicao(endereco) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/generators/mdwa_endereco/install/templates/templates/models/geoposicionamento.rb', line 8

def Geoposicionamento.posicao endereco

  # importando o helper por meio de um objeto
  # nao sei porque, mas o include nao funciona
  brHelper = Object.new.extend(BrHelper)

  # Validando se parametro realmente é um objeto da classe Endereco
  if !endereco.blank? and endereco.class.name.eql?( Endereco.name ) and !endereco.rua.blank?
  
    # Montando a url do webservice de geoposicionamento do google
    url = Settings["GEOPOSICIONAMENTO.url"] + brHelper.remover_caracteres_especiais( self.tratar_espacos( endereco.rua ) )
    url += "+" + brHelper.remover_caracteres_especiais( endereco.numero.to_s ) unless endereco.numero.blank?
    url += ",+" + brHelper.remover_caracteres_especiais( self.tratar_espacos( endereco.cidade.nome ) ) unless endereco.cidade_id.blank?
    url += ",+" + brHelper.remover_caracteres_especiais( endereco.cidade.estado.acronimo.upcase ) unless endereco.cidade.estado_id.blank?
    url += "&sensor=false" # Parametro obrigatorio para indicar que requisição não vem de dispositivo com sensor de localização
    
    # Realizando a requisição get
    resposta = Geoposicionamento.get( url )
    
    # Validando resposta
    if resposta.blank? or resposta["GeocodeResponse"].blank? or !resposta["GeocodeResponse"]["status"].eql?( "OK") or !resposta["GeocodeResponse"]["result"].include?("geometry")
      return nil
    end
    
    # Montando coordenadas no objeto de endereco
    endereco.latitude = resposta["GeocodeResponse"]["result"]["geometry"]["location"]["lat"]
    endereco.longitude = resposta["GeocodeResponse"]["result"]["geometry"]["location"]["lng"]
    
    return endereco
  end
  
  return nil
end

.tratar_espacos(texto) ⇒ Object



42
43
44
# File 'lib/generators/mdwa_endereco/install/templates/templates/models/geoposicionamento.rb', line 42

def Geoposicionamento.tratar_espacos texto
  return texto.remover_acentos.gsub( " ", "+" )
end