Ruby on rails Haversine gem:将计算距离转换为公里
Posted
技术标签:
【中文标题】Ruby on rails Haversine gem:将计算距离转换为公里【英文标题】:Ruby on rails Haversine gem : convert calculated distance to km 【发布时间】:2018-11-14 11:25:17 【问题描述】:我正在做一项计算两个 gps 点之间距离的任务,我想将距离转换为 KM:
def distances
site = Site.find params[ :id ]
stores = Store.current
distances = []
stores.map do |store|
distance = Haversine.distance(site.address.latitude, site.address.longitude, store.address.latitude, store.address.longitude)
distances <<
name: store.name,
value: distance
end
render json:
distances: distances.to_json
end
计算项目示例:
商店2:5527.654499076738
在 hasrsine gem 的文档中有一种转换方法:distance.to_kilometers 但它对我不起作用!有什么帮助吗?
【问题讨论】:
你现在距离哪个单位? 它是Haversine::距离单位 它怎么不适合你?它在做什么呢?您能展示一下您是如何尝试调用它的吗? 嗨@SimpleLime:像这样:距离= Haversine.distance(site.address.latitude,site.address.longitude,store.address.latitude,store.address.longitude).to_kilometers 距离变量应该是 Haversine::Distance 作为类类型,但是当检查它时它是在 Float 【参考方案1】:您可能需要在生成的Haversine::Distance
上调用to_kilometers
方法,否则将使用其to_s
方法:
def distances
site = Site.find params[ :id ]
distances = Store.current.map do |store|
name: store.name,
value: Haversine.distance(
site.address.latitude,
site.address.longitude,
store.address.latitude,
store.address.longitude
).to_kilometers
end
render json:
distances: distances
end
您真正想做的是将distance_in_km
添加到您的Address
类...
【讨论】:
在 gem 文档中我发现 .to_kilometers 方法存在但不起作用,它显示未定义的方法错误 你忘记require 'haversine'
了吗?以上是关于Ruby on rails Haversine gem:将计算距离转换为公里的主要内容,如果未能解决你的问题,请参考以下文章