谷歌地图的标记变量范围(gmaps4rails gem)
我试图理解javascript,以及传递变量的方式,但我做得不太好。 我正在尝试用ajax刷新谷歌地图的标记,但什么也没发生。
我提交了一个表单,它将一些变量发送给控制器。 处理了一些东西,它用.js响应……
find.js.erb
$('#collapseTwo ul').html(""); alert(); clearMarkers(); markers = handler.addMarkers(, { draggable: false });
渲染点火很好,所以一切都在那里工作,但我似乎无法抓住标记来刷新地图。 该警报显示[object Object]
,因此可能是正确的,但对标记没有任何操作。
我以marker.coffee
的forms对marker.coffee
进行了一些修改
clear: -> @getServiceObject().setMap(null) show: -> @getServiceObject().setVisible(true) hide: -> @getServiceObject().setVisible(false)
这样clearMarkers();
作品。 它在另一个文件中,我正在存储其他一些操作
events.js.coffee
jQuery -> ... ... @clearMarkers = -> for marker in Gmaps.store.markers marker.clear() Gmaps.store.markers = []
所以…我最初打电话给地图…
jQuery -> handler = Gmaps.build 'Google' handler.buildMap { provider: { minZoom: 3 }, internal: {id: 'map'} }, -> markers = handler.addMarkers( $('#map').data('events'), draggable: false flat: false ) #moves map to marker clicked + open infowindow $(document).on 'click', '#sideBar li', -> markers[$(this).data('marker')].panTo() markers[$(this).data('marker')].click()
底部的那个函数…我访问markers
数组的唯一方法是因为它在handler.buildMap
函数中。 那么, markers
变量应该是全局的吗? 我怎么能对他们采取行动?
另外, handler
变量……在我看来,它应该随处可用。 我尝试手动将@hash
放入.addMarkers()
,但处理程序没有构建标记。
您需要一个全球可访问的商店。
我建议如下:
Gmaps.store = {} jQuery -> Gmaps.store.handler = Gmaps.build 'Google' Gmaps.store.handler.buildMap... Gmaps.store.markers = Gmaps.store.handler.addMarkers(...)
您也可以访问js.erb中的变量。