Ruby on rails如何计算2个GPS位置之间的距离

时间:2016-08-07 17:13:57

标签: ruby-on-rails

有一些Gem可以计算2 GPS位置之间的距离吗?

1 个答案:

答案 0 :(得分:1)

这可以使用Geocoder轻松完成。将其添加到您的Gemfile

gem 'geocoder'

然后运行

bundle install

如果您拥有用户的位置,我假设您要显示最近的商店。 Geocoder有一个near方法就可以做到这一点。

在商店模型(app/models/store.rb)中,添加

geocoded_by :address
after_validation :geocode

请注意地理编码器gem要使用的商店的地址。 创建新记录后,第二行将自动填充纬度和经度字段。

现在,在您的控制器中,添加代码以获取给定用户的附近商店(如果用户的位置已知)。

def index
@current_lat = params[:lat]
@current_lon = params[:lon]
if (@current_lat.nil? || @current_lon.nil?)
  @stores = Store.all
  render json: @stores
else
 @stores = Store.near([@current_lat, @current_lon], 10, :units => :km)
end

这将获取距用户当前位置10公里范围内的商店。你也可以传入一个默认为英里的单位哈希值。

更多信息, https://github.com/alexreisner/geocoder#for-activerecord-models