【问题标题】:Geocoder - Geocode the data in the controlerGeocoder - 对控制器中的数据进行地理编码
【发布时间】:2015-05-28 05:51:10
【问题描述】:

我正在使用 Geocoder gem,我想对位置(城市、州)进行地理编码并在控制器中获取 lat lng。

我正在这样做并且收到以下错误。

<%= @geo = Geocoder.coordinates("Los Angeles").inspect %>
<%= puts @geo.join(",") %>

错误: “[46.7225341, 8.9635602]”的未定义方法“加入”:字符串

我想将 lat 和 lng 作为逗号分隔的字符串保存在数据库中。

【问题讨论】:

    标签: ruby-on-rails google-maps rails-geocoder


    【解决方案1】:

    我认为您不想在这里使用检查。它可能将其转换为没有连接方法的字符串。通常地理编码是在模型上使用 before_save 回调而不是在控制器中完成的。

    【讨论】:

      【解决方案2】:

      您可以使用after_validation 轻松地对模型中的地址进行地理编码。

      就这样。

            # app/models/venue.rb
              geocoded_by :address
              after_validation :geocode
      

      通过这种方式,您可以将经纬度属性保存到对应的模型中。

      【讨论】:

      • 我看到它也对错误的值进行了地理编码。知道如何处理它
      • @HarshaMV 依赖于地理编码 API,默认情况下它使用谷歌地图 API。您可以配置它们config/initializers/geocoder.rb 文件。如果您没有配置文件,请使用rails generate geocoder:config 生成一个
      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多