我正在努力格式化地理编码器从一个位置返回到另一个位置的距离。
以下是代码:
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'
任何想法或帮助将不胜感激。如果您需要任何进一步的代码,请告诉我。
答案 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]