Ruby Geocoder和/或OpenStreetMap的较大误差

时间:2018-11-03 18:24:07

标签: openstreetmap rails-geocoder

我在路轨中使用地理编码器来获取地址的经度和纬度,然后在OpenStreetMap中显示它们。

当我搜索旧地址时:

export PATH=$PATH_TO_DIR_WITH_EMBER_BIN:$PATH

我得到:

$PATH

Mount Curve Address Discrepancy

这些坐标可能相距一千英尺。 (参见图片。)根据Google Maps得出的准确坐标为[34.200503,-118.1310407]。

我尝试了另一个地址,但距离更远,也许一英里。 (1346 E Woodbury Rd,Pasadena,CA 91104)

我尝试了另一个地址,这几乎是错误的。 (922 E Brockton Ave,Redlands,CA 92374)

有人知道什么可能导致这些错误,以及如何始终如一地获得准确的结果吗?

1 个答案:

答案 0 :(得分:0)

由于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