Ruby on rails Geocoder gem未显示正确的距离用户远离地址
我正在使用geocoder gem在我的rails应用程序中实现地理定位。我正在按地址进行地理定位。用户根据地图上的位置正确显示,但距离不正确。当搜索后显示用户索引时,用户都被设置为250.00到253英里,即使他们都应该距离我作为用户保存的地址1或3英里。为什么会出现这种情况,以及我如何解决?另外,当我试图搜索附近的用户时,所有用户都被抓获,我在索引控制器中声明了100英里,如果我将用户放在1000英里之外,他们也被抓获。您将如何设置它,以便只接100英里半径内的用户?任何帮助都将不胜感激,谢谢 schema.rbRuby on rails Geocoder gem未显示正确的距离用户远离地址,ruby-on-rails,activerecord,geocoding,geocode,rails-geocoder,Ruby On Rails,Activerecord,Geocoding,Geocode,Rails Geocoder,我正在使用geocoder gem在我的rails应用程序中实现地理定位。我正在按地址进行地理定位。用户根据地图上的位置正确显示,但距离不正确。当搜索后显示用户索引时,用户都被设置为250.00到253英里,即使他们都应该距离我作为用户保存的地址1或3英里。为什么会出现这种情况,以及我如何解决?另外,当我试图搜索附近的用户时,所有用户都被抓获,我在索引控制器中声明了100英里,如果我将用户放在1000英里之外,他们也被抓获。您将如何设置它,以便只接100英里半径内的用户?任何帮助都将不胜感激,谢
create_table "users", force: true do |t|
t.string "address"
t.string "city"
t.string "state_province"
t.float "latitude"
t.float "longitude"
t.string "country"
user.rb
geocoded_by :full_address
after_validation :geocode
def full_address
"#{self.address}, #{self.city}, #{self.state_province}, #{self.country}"
end
用户_controller.rb
def index
if params[:city_search]
@users = User.near(params[:city_search],100)
@users = User.all_except(current_user)
index.html.erb
<% if @users.count > 1 %>
<%= "is #{user.distance_to(params[:city_search]).round(2)} miles away." %>
<% end %>
<%= javascript_tag do %>
<% if params[:city_search] != "" %>
var latitude = <%= @users.first.latitude %>;
var longitude = <%= @users.first.longitude %>;
var showMarker = false;
var coords = <%= raw @users.map{|user| {latitude: user.latitude, longitude: user.longitude, id: user.id}}.to_json %>;
<% end %>
<% end %>
1%>
var纬度=;
变量经度=;
var-showMarker=false;
var-coords=;
您确定方法distance\u to
返回以英里为单位的值吗?是的,它显示253英里。但是,当我键入User时,我可以在我的控制台中获得正确的数字。nearbys(10)显示用户,并在每个用户的距离列下提供正确的距离,例如,距离:3英里或距离:8英里。我只是想说明,在我的视图中,您在上面的代码中使用了User.near
。不是User.nearbys
。此外,在调用distance\u to
之外的字符串中键入了miles。gem的文档是否说该方法返回英里数?是的,User.nearbys在我的代码中不起作用。默认情况下,gems文档返回英里数。