50 lines
1.2 KiB
Ruby
50 lines
1.2 KiB
Ruby
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
|
|
|
|
class Service::GeoLocation::Gmaps
|
|
|
|
def self.geocode(address)
|
|
url = "http://maps.googleapis.com/maps/api/geocode/json?address=#{CGI.escape address}&sensor=true"
|
|
response = UserAgent.get(
|
|
url,
|
|
{},
|
|
{
|
|
open_timeout: 2,
|
|
read_timeout: 4,
|
|
total_timeout: 4,
|
|
verify_ssl: true,
|
|
},
|
|
)
|
|
return if !response.success?
|
|
|
|
result = JSON.parse(response.body)
|
|
|
|
return if !result
|
|
return if !result['results']
|
|
return if !result['results'].first
|
|
|
|
lat = result['results'].first['geometry']['location']['lat']
|
|
lng = result['results'].first['geometry']['location']['lng']
|
|
[lat, lng]
|
|
end
|
|
|
|
def self.reverse_geocode(lat, lng)
|
|
url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=#{lat},#{lng}&sensor=true"
|
|
response = UserAgent.get(
|
|
url,
|
|
{},
|
|
{
|
|
json: true,
|
|
open_timeout: 2,
|
|
read_timeout: 4,
|
|
total_timeout: 4,
|
|
verify_ssl: true,
|
|
},
|
|
)
|
|
return if !response.success?
|
|
|
|
result = JSON.parse(response.body)
|
|
|
|
result['results'].first['address_components'].first['long_name']
|
|
|
|
end
|
|
end
|