gmaps.rb 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
  2. class Service::GeoLocation::Gmaps
  3. def self.geocode(address)
  4. url = "http://maps.googleapis.com/maps/api/geocode/json?address=#{CGI.escape address}&sensor=true"
  5. response = UserAgent.get(
  6. url,
  7. {},
  8. {
  9. open_timeout: 2,
  10. read_timeout: 4,
  11. total_timeout: 4,
  12. verify_ssl: true,
  13. },
  14. )
  15. return if !response.success?
  16. result = JSON.parse(response.body)
  17. return if !result
  18. return if !result['results']
  19. return if !result['results'].first
  20. lat = result['results'].first['geometry']['location']['lat']
  21. lng = result['results'].first['geometry']['location']['lng']
  22. [lat, lng]
  23. end
  24. def self.reverse_geocode(lat, lng)
  25. url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=#{lat},#{lng}&sensor=true"
  26. response = UserAgent.get(
  27. url,
  28. {},
  29. {
  30. json: true,
  31. open_timeout: 2,
  32. read_timeout: 4,
  33. total_timeout: 4,
  34. verify_ssl: true,
  35. },
  36. )
  37. return if !response.success?
  38. result = JSON.parse(response.body)
  39. result['results'].first['address_components'].first['long_name']
  40. end
  41. end