Geokit返回格式distance_from

时间:2018-04-18 08:17:29

标签: ruby-on-rails ruby geokit

我正在努力格式化地理编码器从一个位置返回到另一个位置的距离。

以下是代码:

Jbuilder文件:

json.array! results do |result|
  json.distance result.distance_from(@geocoded_location, units: :miles)
end

方法:

def geocoded_location
  return unless postcode
  @geocoded_location ||= geocoder.geocode(postcode, bias: 'uk')
end

def geocoder
  Geokit::Geocoders::GoogleGeocoder
end

def postcode
  @postcode ||= params[:searchterm]
end

现在我认为这一切都有效,但我得到的结果是结果数组中第一个位置的3562.6325498137753。

是否有办法格式化响应,因为这两个位置相距不到2英里,因此绝对不会以英里为单位返回。 以为它可能是英尺或米,但无论你从何处进行搜索,它们都是大致相同的距离。所以我认为这是地理编码位置的问题。

我们正在使用gem'geokit'

任何想法或帮助将不胜感激。如果您需要任何进一步的代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

在Geocoder :: Calculations模块中,您可以使用

计算距离
data: [{
    address3: 'Address 3'
},{
    address4: 'Address 4'
}]

将纬度和经度作为参数传递,

distance_between(lat1, lon1, lat2, lon2, options = {}) =  ⇒ Object

要获得经纬度,

Geocoder::Calculations.distance_between([47.858205,2.294359],
[40.748433,-73.985655]) => 3619.77359999382 # in configured units (default miles)

要以km格式获得结果,请将km作为单位传递

Geocoder.coordinates("25 Main St, Cooperstown, NY") => [42.700149, -74.922767]

参考:http://www.rubydoc.info/gems/rails-geocoder/0.9.11/Geocoder/Calculations#distance_between-instance_method