有一些Gem可以计算2 GPS位置之间的距离吗?
答案 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