我正在使用地理编码器gem在我的rails应用程序中实现地理位置。我按地址进行地理定位。用户根据地图上的位置正确显示,但距离不正确。当在搜索之后显示用户索引时,用户都被设置为250.00到253英里之外,即使它们都应该距离我保存为用户的地址1或3英里。任何理由都是这种情况以及如何解决它?此外,当我尝试搜索附近的用户时,所有用户都被选中,我在索引控制器中声明了100英里,如果我将用户放在1000英里外,他们也会被接收。你如何设置它,以便只有100英里范围内的用户被选中?非常感谢任何帮助,谢谢!
schema.rb
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
user_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 %>