使用 javascript 在地图上设置标记
假设有一个 .google_map
div,它将成为地图,并且其地址字段显示为 data
属性的标记。
例如:
<!-- http://localhost:3000/profiles/123 -->
<div class="google_map" data-address-fields="[
{label: 'Work address', value: 'Willy-Brandt-Straße 1\n10557 Berlin',
position: {lng: ..., lat: ...}},
...
]"></div>
要使用 turbolinks 来使用 $(document).ready
事件而不用手动管理 turbolinks 事件,请使用 jquery.turbolinks gem 。
如果你希望稍后使用地图执行某些其他操作,例如过滤或信息窗口,则可以方便地使用咖啡脚本类管理地图。
# app/assets/javascripts/google_maps.js.coffee
window.App = {} unless App?
class App.GoogleMap
constructor: (map_div)->
# TODO: initialize the map
# TODO: set the markers
当使用几个默认命名空间的咖啡脚本文件时,可以方便地定义全局 App
命名空间,该命名空间由所有咖啡脚本文件共享。
然后,遍历(可能是几个).google_map
div 并为每个 div 创建一个 App.GoogleMap
类的实例。
# app/assets/javascripts/google_maps.js.coffee
# ...
$(document).ready ->
App.google_maps = []
$('.google_map').each ->
map_div = $(this)
map = new App.GoogleMap map_div
App.google_maps.push map