Geocoder gem没有显示适当距离的用户远离地址

时间:2014-12-28 18:16:59

标签: ruby-on-rails activerecord geocoding geocode rails-geocoder

我正在使用地理编码器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 %>

0 个答案:

没有答案