城市/国家文本字段验证

时间:2010-06-26 20:11:41

标签: ruby-on-rails ruby geolocation latitude-longitude

我需要跟踪我的应用程序的用户lat / lng / city / country,并满足以下两个要求:

1)自动获取用户lat / lng / city / country。 (这很简单,我可以使用ip或者如果他们有一个支持地理定位的浏览器,甚至更好。)

2)允许用户自定义此位置(可能是IP地址查找没有给出准确的城市)。该位置是自由格式文本字段(不是下拉列表)。当用户输入新位置时,应根据可用的城市/国家进行验证。如果它针对其中任何一个进行验证,请选择它,然后检索新位置的latlng。 (这就是我遇到的麻烦)

另外要澄清一下,这是一个使用MongoDB的Rails 3应用程序。我正在寻找一个允许我同时执行(1)和(2)的API或数据库。有没有人做过类似的事情?寻找关于其他人如何做到这一点的一些想法。

2 个答案:

答案 0 :(得分:1)

关于您遇到的问题,您的问题并不完全清楚。一般来说,我会这样做:

  • 有一个存储位置名称和坐标的位置模型
  • 当用户输入某个位置时,发送一个Ajax请求进行查找
  • 如果找到,请在会话中设置位置
  • 如果找不到,请返回一个类似名称的位置列表(如果有拼写错误)并让用户选择一个或坚持他们的输入
  • 完成输入后,根据需要插入新位置并存储User.location_id。

您可以使用Google的Geocoding API查找未知位置的坐标。

答案 1 :(得分:1)

我会推荐Geokit Gem,它为几个地理编码API提供前端非常好。我强烈建议坚持雅虎或谷歌,只是为了纯粹的数据完整性问题。

有一个rails plugin,它为Activerecord添加了一些不错的助手。目前主要项目不兼容rails 3,但至少有一个已更新rails 3的前叉。