ste*_*715 2 ruby ruby-on-rails geolocation geokit ruby-on-rails-3
我一直在使用GeoKit for Rails,效果很好.但是,我注意到在拉大量清单时加载非常慢.
我想知道是否是因为它在返回结果之前查询谷歌或一些外部来源.如果是这种情况,有没有办法使用原始lat lng坐标(我有)简单地在内部计算距离?
还是一个简单的红宝石配方,会为我做这个?
距离上:
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
| 归档时间: |
|
| 查看次数: |
1269 次 |
| 最近记录: |