Javascript 返回当前位置x英里半径范围内的位置列表

Javascript 返回当前位置x英里半径范围内的位置列表,javascript,ruby-on-rails,ruby,google-maps,Javascript,Ruby On Rails,Ruby,Google Maps,我有一个包含lat/lng信息的地点数据库,我想创建一个json提要,返回用户当前lat/lng半径x英里范围内的地点列表。做这样的事情最好的方法是什么 我的javascript可能会使用当前的lat/lng进行ajax调用,后端将处理返回的位置。然后我将使用js渲染这些地方。(如果您认为这是处理此问题的最佳方式,请点击LMK,如果是,后端逻辑如何工作?查看gem。它支持ActiveRecord和几个数据库引擎,包括PostgreSQL 如果您有场馆模型,您可以向其添加地理编码,并执行以下操作:

我有一个包含lat/lng信息的地点数据库,我想创建一个json提要,返回用户当前lat/lng半径x英里范围内的地点列表。做这样的事情最好的方法是什么

我的javascript可能会使用当前的lat/lng进行ajax调用,后端将处理返回的位置。然后我将使用js渲染这些地方。(如果您认为这是处理此问题的最佳方式,请点击LMK,如果是,后端逻辑如何工作?

查看gem。它支持ActiveRecord和几个数据库引擎,包括PostgreSQL

如果您有
场馆
模型,您可以向其添加地理编码,并执行以下操作:

nearby_places = Venue.near([lat, long], distance)
还有一个关于此项目的高级查询的示例,在下面完整引用


查询对象时(如果您使用的是ActiveRecord),也可以使用“内边界”框范围查看正方形而不是半径(圆):

distance = 20
center_point = [40.71, 100.23]
box = Geocoder::Calculations.bounding_box(center_point, distance)
Venue.within_bounding_box(box)
这还可以显著提高查询性能,尤其是与纬度/经度列上的索引结合使用时。但是,请注意,返回的结果不包括距离和方向角属性。如果要提高性能并访问距离和方位信息,请使用两种作用域:

Venue.near(center_point, distance).within_bounding_box(box)

您可以这样做:

1) 从javascript块进行ajax调用:

$.ajax({
  url: '<%= url_for :action => :find_places  %>', 
  data: {
    lat: $('#lat_field').val(),
    ing: $('#ing_field').val()
  },
  dataType: 'json',
  success: function( data ) {
    response( $.map( data, function( places ) {
      // do something with places
      // like places.name and so on
      // this function will be called for each item in json array
    }));
  }   
});
3) 别忘了在控制器的开头添加
respond\u to:json
,并在routes.rb中获得“find\u places”


实际上,在find_places.js.erb文件中继续计算结果会更“Ruby”风格,该文件可以访问控制器实例变量。在这种情况下,您根本不需要使用json。

嗯,postgres有一个名为postgis的地理空间扩展,值得研究。实际上,我对sphinx有更好的体验,它可以使用任何数据库表(mysql、mongo、sqlite,甚至csv或xml)作为源。

您使用的是哪种数据库?有些人比其他人更擅长这类事情!这个相关的问题可能会引导您走向正确的方向,但Paul是对的,它高度依赖于您的DB。db是postgres,基于rails ORM ActiveRecord,我还想看看谷歌地图上的rails。我很快就会把它用在我自己的一个项目上。我确实使用了gmaps4rails,在这种情况下,我该如何使用它呢?这看起来真是一块漂亮的宝石。想知道表演是什么样子的。。!
def find_places
  @places_array = Array.new
  @places_array[0] = {:name => ' ...', :others => '...'}
  respond_with @places_array.to_json
end