Большие неточности с Ruby Geocoder и / или OpenStreetMap - PullRequest
0 голосов
/ 03 ноября 2018

Я использую гем геокодера в рельсах, чтобы получить широту и долготу для адресов, а затем отображать их в OpenStreetMap.

Когда я ищу свой старый адрес:

>> results = Geocoder.search("1000 Mount Curve Ave E, Altadena, CA 91001")

Я получаю:

>> results.first.coordinates
=> [34.1976645, -118.1278219]

Несоответствие адреса кривой монтирования

Эти координаты, возможно, находятся на расстоянии тысячи футов. (См. Изображение.) Полученные в результате точные координаты из Google Maps [34.200503, -118.1310407].

Я пробовал другой адрес, и он был намного дальше, возможно, за милю. (1346 E Woodbury Rd, Pasadena, CA 91104)

Я пробовал еще один адрес, и он был почти безошибочным (922 E Brockton Ave, Redlands, CA 92374)

Кто-нибудь знает, что может быть причиной этих неточностей и как последовательно получать точные результаты?

1 Ответ

0 голосов
/ 06 ноября 2018

Из-за неточностей и / или ограничений с OSM / Nominatim я переключился на сервис карт Google. В верхней части моего контроллера я добавил:

require 'google_maps_service'

И в программе моего контроллера я закончил с этим, что дает точные результаты:

source = Property.find(params[:id])
@property = PropertyDecorator.new(source)
gmaps = GoogleMapsService::Client.new(key: '[removed, put in your own key here]')
results = gmaps.geocode("#{@property.address1} #{@property.address2}")
if results[0] == nil
  @lat = 0 
  @lng = 0 
else
  @lat = results[0][:geometry][:location][:lat]
  @lng = results[0][:geometry][:location][:lng]
end
...