我在我的rails应用程序中使用active-admin并想在google地图上绘制(lat,lot)。有人可以指导我如何去做。
这是我的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
答案 0 :(得分: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 Maps提供的下拉菜单时,您会得到一个提示。从那里选择一个选项将填充您的纬度和经度字段-最好将它们设置为只读,以便您的用户可以直观地确认所选择的坐标,但不能更改数据。
注意:要在您的BookingGeoLocation
模型上实现此功能,您的表中还需要另外两列location_pickup_longitude
和location_dropoff_longitude
。确保它们的类型为Float
。