Add support for Nominatim

This adds support for Nominatim-based reverse geocoding, along with
Photon and Geofi. To use it, set the environment variables:

NOMINATIM_API_HOST - the host name of the OSM Nominatim server
NOMINATIM_API_USE_HTTPS - use the HTTPS to connect
NOMINATIM_API_KEY - the API key
This commit is contained in:
Aleksei Besogonov 2025-01-08 19:32:29 -08:00
parent 6d6a34f2b4
commit 3fe48f6685
3 changed files with 15 additions and 1 deletions

View file

@ -13,5 +13,9 @@ PHOTON_API_HOST = ENV.fetch('PHOTON_API_HOST', nil)
PHOTON_API_KEY = ENV.fetch('PHOTON_API_KEY', nil)
PHOTON_API_USE_HTTPS = ENV.fetch('PHOTON_API_USE_HTTPS', 'true') == 'true'
NOMINATIM_API_HOST = ENV.fetch('NOMINATIM_API_HOST', nil)
NOMINATIM_API_KEY = ENV.fetch('NOMINATIM_API_KEY', nil)
NOMINATIM_API_USE_HTTPS = ENV.fetch('NOMINATIM_API_USE_HTTPS', 'true') == 'true'
GEOAPIFY_API_KEY = ENV.fetch('GEOAPIFY_API_KEY', nil)
# /Reverse geocoding settings

View file

@ -3,7 +3,7 @@
class DawarichSettings
class << self
def reverse_geocoding_enabled?
@reverse_geocoding_enabled ||= photon_enabled? || geoapify_enabled?
@reverse_geocoding_enabled ||= photon_enabled? || geoapify_enabled? || nominatim_enabled?
end
def photon_enabled?
@ -17,5 +17,9 @@ class DawarichSettings
def geoapify_enabled?
@geoapify_enabled ||= GEOAPIFY_API_KEY.present?
end
def nominatim_enabled?
@nominatim_enabled ||= NOMINATIM_API_HOST.present?
end
end
end

View file

@ -19,6 +19,12 @@ if PHOTON_API_HOST.present?
elsif GEOAPIFY_API_KEY.present?
settings[:lookup] = :geoapify
settings[:api_key] = GEOAPIFY_API_KEY
elsif NOMINATIM_API_HOST.present?
settings[:lookup] = :nominatim
settings[:nominatim] = { use_https: NOMINATIM_API_USE_HTTPS, host: NOMINATIM_API_HOST }
if NOMINATIM_API_KEY.present?
settings[:api_key] = NOMINATIM_API_KEY
end
end
Geocoder.configure(settings)