Я пытаюсь получить количество миль от данной почтовой записи...
class Post < ActiveRecord::Base
attr_accessor :lat, :lng
set_rgeo_factory_for_column(:location, RGeo::Geographic.spherical_factory(:srid => 4326))
def distance_from(current_location)
rgeo_factory.point(current_location[:lng], current_location[:lat]).distance(location) / 1.60934
end
private
def update_location!
self.location = rgeo_factory.point(lng, lat) if lat && lng
end
def rgeo_factory
Post.rgeo_factory_for_column(:location)
end
end
Если я создам пост с указанием местоположения Лас-Вегаса, Невада (широта: 36.255123, долгота: -115.238348) и проверю его...
1.9.3p125 :018 > p.lat = 36.255123
=> 36.255123
1.9.3p125 :019 > p.lng = -115.238348
=> -115.238348
1.9.3p125 :019 > p
#<Post id: 133, location: #<RGeo::Geographic::SphericalPointImpl:0x81d7130c "POINT (-115.238348 36.255123)">
когда я пытаюсь определить расстояние между этим постом и местом в Калифорнии, я получаю БЕЗУМНОЕ количество миль...
1.9.3p125 :027 > p.distance_from(:lat => 34.019454, :lng => -118.491191)
=> 240327.390598477
Что я делаю не так?