@@ -13,7 +13,7 @@ class << self
1313 end
1414 self . nominatim_last_request_at = -Float ::INFINITY
1515
16- # Resolves lat/lng to { address: String, city_name: String | nil } or nil.
16+ # Resolves lat/lng to { address: String, city_name: String | nil, street: String | nil } or nil.
1717 # Tries Google first, falls back to Nominatim.
1818 def resolve ( lat , lng )
1919 geocode_google_full ( lat , lng ) || geocode_nominatim_structured ( lat , lng )
@@ -55,7 +55,7 @@ def geocode_google_full(lat, lng)
5555 street_line = [ street , number ] . compact . join ( " " ) . presence
5656 address = [ street_line , city , country ] . compact . join ( ", " ) . presence
5757
58- { address : address , city_name : city }
58+ { address : address , city_name : city , street : street_line }
5959 rescue => e
6060 Rails . logger . warn ( "Google geocoding error: #{ e . message } " )
6161 nil
@@ -113,7 +113,8 @@ def geocode_nominatim_structured(lat, lng)
113113
114114 addr = data [ "address" ]
115115 city_name = addr && ( addr [ "city" ] || addr [ "town" ] || addr [ "village" ] || addr [ "municipality" ] )
116- { address : data [ "display_name" ] , city_name : city_name }
116+ street = addr && [ addr [ "road" ] , addr [ "house_number" ] ] . compact . join ( " " ) . presence
117+ { address : data [ "display_name" ] , city_name : city_name , street : street }
117118 rescue => e
118119 Rails . logger . warn ( "Nominatim error: #{ e . message } " )
119120 nil
0 commit comments