【问题标题】:How to add google maps to active admin?如何将谷歌地图添加到活动管理员?
【发布时间】:2016-11-09 14:51:31
【问题描述】:

我在我的 rails 应用程序中使用 active-admin 并想在谷歌地图上绘制(纬度,地段)。有人可以指导我如何去做。

这是我的 booking_geo_locations.rb 文件

ActiveAdmin.register BookingGeoLocation do
    show do
        attributes_table do
          row :id
          row :user_id
          row :date_pickup      
          row :location_pickup
          row :date_dropoff
          row :location_dropoff
          row :location_pickup_latitude
          row :location_dropoff_latitude 
          row :driver_price

          end
      end

【问题讨论】:

  • 你发现了吗?
  • 你发现了吗?

标签: ruby-on-rails google-maps ruby-on-rails-4 activeadmin


【解决方案1】:

为简单起见,我的示例基于 rails g scaffold Post location:string latitude:float longitude:float 迁移。

将此添加到 config/initializers/active_admin.rb 的末尾(在最后一个 end 之后):

Rails.application.config.after_initialize do
  javascripts = Array.wrap("//maps.googleapis.com/maps/api/js?key=#{ENV['GOOGLE_MAPS_API_KEY']}&libraries=places")
  javascripts += ActiveAdmin.application.javascripts.to_a
  ActiveAdmin.application.javascripts.replace javascripts
end

您必须重新启动服务器才能使其生效。请注意,这使用了一个环境变量,您也必须设置它。

接下来,在 app/assets/javascripts/active_admin.js.coffee 中,您想要执行以下操作:

jQuery ->
  input = document.getElementById("post_location");
  if input
    autocomplete = new google.maps.places.Autocomplete(input);
    autocomplete.addListener "place_changed", ->
      $("#post_latitude").val(autocomplete.getPlace().geometry.location.lat());
      $("#post_longitude").val(autocomplete.getPlace().geometry.location.lng());

当您添加新帖子时,您会在键入时收到由 Google 地图提供的下拉菜单。从那里选择一个选项将填充您的纬度和经度字段 - 最好将这些设置为只读,以便您的用户可以直观地确认所选坐标,但不能更改数据。

注意:要在 BookingGeoLocation 模型上实现此功能,您的表中还需要两列,location_pickup_longitudelocation_dropoff_longitude。确保这些是Float 类型。

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 2020-02-06
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多