geokit - 在rails中使用raw lat lng

ste*_*715 2 ruby ruby-on-rails geolocation geokit ruby-on-rails-3

我一直在使用GeoKit for Rails,效果很好.但是,我注意到在拉大量清单时加载非常慢.

我想知道是否是因为它在返回结果之前查询谷歌或一些外部来源.如果是这种情况,有没有办法使用原始lat lng坐标(我有)简单地在内部计算距离?

还是一个简单的红宝石配方,会为我做这个?

jim*_*orm 6

距离上:

Geokit-gem提供了一种计算两点之间距离的方法:

# model has acts_as_mappable
Model.distance_between obj1, obj2, :units => :kms, :formula => :sphere
Run Code Online (Sandbox Code Playgroud)

搜索明智的:

Geokit护栏(插件)具有生成SQL(为MySQL,Postgres的,和SQL服务器)来计算距离,让你找到在一定距离内排取景器:

Model.find_within(100, :units => :kms)
Run Code Online (Sandbox Code Playgroud)

它计算所有行的距离,但不需要查询外部资源.如果你的桌子真的很大,它可能有帮助(但我不太确定它会通过预先计算lat/lng范围来缩小它):

Model.where(:lat => (x-0.05)..(x+0.05), :lng => (y-0.05)..(y+0.05)).find_within(z, :units => :kms)
Run Code Online (Sandbox Code Playgroud)

如果这仍然没有帮助你将不得不写一些自定义的SQL.geokit-rails的sql距离计算如下:https: //github.com/andre/geokit-rails/tree/master/lib/geokit-rails/adapters