ruby-on-rails - 如何迭代此 Ruby 代码以便在地图上动态显示标记?
问题描述
我正在构建一个商店定位器应用程序,我正在尝试使用代表数据库中商店的标记填充地图。我已经使用 Geocoder gem 将地址转换为纬度和经度,并且我正在使用 Leaflet.js 和 Leaflet-rails gem(基本上遵循本教程:https ://github.com/axyjo/leaflet-rails )。我已经能够使用以下代码使用标记显示地图:
<% @stores.each do |store| %>
<h2><%= link_to store.name, store_path(store) + ': ' + store.address %></h2>
<% end %>
<%= link_to "Add Spaeti", new_store_path %>
<%= map(:center => {
:latlng => [52.52004797921441, 12.4050235665359283],
:zoom => 3
},
:markers => [
{
:latlng => [ Store.last.latitude, Store.last.longitude ],
:popup => Store.last.name
}
]
) %>
我遇到的问题是让标记从我的数据库中的数据中动态显示。我对 Ruby 和 Rails 还比较陌生,所以事实证明这很困难。我应该使用 each 方法迭代 lat 和 lng 值吗?我试过这样做,但遇到很多语法错误。我什至不确定代码的最后一部分是什么形式。它是嵌套哈希吗?
解决方案
markers: Store.all.map { |store| {latlng: [store.latitude,store.longitude], popup: store.name}.
是你失败的代码。
我认为您的想法是正确的,但是您缺少}
地图块的关闭。尝试:
markers: Store.all.map { |store| { latlng: [store.latitude, store.longitude], popup: store.name } }
至于数据结构,看起来 map 方法需要一个散列(对象),其中标记键应该包含一个标记散列(对象)数组,每个标记散列(对象)都具有 latlng 和 popup 属性。latlng 属性需要保存纬度和经度值的数组,popup 属性应该保存需要放入弹出窗口的数据字符串。
推荐阅读
- javascript - 影响第一个数量的动态第二个数量增加问题
- schema.org - 如何使用 Schema.org 对季节性期刊引文进行编码?
- r - 如何在 Scala 中将 .rds R 文件加载为 Spark 数据框
- regex - 文本中的匹配模式
- mysql - mysql命令行sql执行之谜,只考虑部分字符串
- python - 在 Keras 中使用 GRU 实现 Seq2Seq
- android - 在 Android 上的本机共享中排除活动类型
- java - java.util.regex.PatternSyntaxException:索引 1 附近出现意外内部错误
- r - R - 重塑数据框和聚合元素
- ios - iOS 上 /tmp/ 文件夹中的照片什么时候过期