ожидаемый пример поискового запроса: 'Wall St, NY' => {address: "Wall Street", город: "New York, штат:" New York ", страна:" Соединенные Штаты Америки "
Вы можете использовать функцию #search
:
Geocoder.serach("Wall ST, NY")
Это вернет массив результатов, например, первый выглядит так:
#=> => #<Geocoder::Result::Nominatim:0x00007ffc62aa37d0 @data={"place_id"=>184441192, "licence"=>"Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright", "osm_type"=>"way", "osm_id"=>447018423, "boundingbox"=>["40.7051753", "40.706379", "-74.009502", "-74.0074038"], "lat"=>"40.7060194", "lon"=>"-74.0088308", "display_name"=>"Wall Street, Financial District, Manhattan Community Board 1, Manhattan, New York County, New York, 10005, United States of America", "class"=>"highway", "type"=>"residential", "importance"=>0.758852318921325, "address"=>{"road"=>"Wall Street", "suburb"=>"Financial District", "city"=>"Manhattan Community Board 1", "county"=>"New York County", "state"=>"New York", "postcode"=>"10005", "country"=>"United States of America", "country_code"=>"us"}}, @cache_hit=nil>
Вы можете взять нужные значения и назначить их новому объекту Location.
Функция поиска также может принимать массив из двух с долготой и широтой:
Geocoder.search([lat, lng])
К сожалению , если я вас правильно понял, и location_params
- это результаты запроса, я не думаю, что вы можете сделать это просто:
@location = Location.new(location_params)
Вам придется извлечь необходимые атрибуты из результатов сначала запрос поиска, а затем предоставьте их методу #new
Location
.