gmaps4rails的replaceMarkers不工作(javascript)
gmaps4rails replaceMarkers not working (javascript)
堆栈详细信息ruby 1.9.2p180,rails 3.0.9,gmaps4rails 1.0.2,jquery.json-2.3.min.js
我是gaps4rails的新手,非常喜欢它。到目前为止,一切都很顺利,但我第一次尝试动态更新标记。我在application.js中做了以下操作:
var markers_json = $.toJSON(markers_array);
Gmaps.map.replaceMarkers(markers_json);
这不起作用,并给出以下错误
Uncaught TypeError: Cannot read property 'position' of undefined
extendBoundsWithMarkers in gmaps4rails.googlemaps.js:204
Gmaps4Rails.adjustMapToBounds in gmaps4rails.base.js:443
Gmaps4Rails.create_markers in gmaps4rails.base.js:321
Gmaps4Rails.addMarkers in gmaps4rails.base.js:389
Gmaps4Rails.replaceMarkers in gmaps4rails.base.js:381
调查结果
确认地图的初始创建是通过提供标记作为json字符串完成的。
确认我在replaceMarkers调用
中给出相同格式的json字符串确认在源代码中,当addMarkers在初始页面加载时被调用时,标记是一个对象数组的形式,但是replaceMarkers调用(如上所述)包含一个JSON字符串
其他尝试试图传递标记而不转换为JSON
Gmaps.map.replaceMarkers(markers_array);
但是效果不佳
作为JS和Rails的新手,我为此绞尽了脑汁。我无法将控制器中创建的RAILS jSON字符串转换为jSON对象的JavaScript数组。
我尝试只是抓取由_to_gmaps4rails生成的字符串,但它充满了转义字符。我现在知道这是由于Rails的变化,以防止脚本被数据插入。
我尝试了很多东西,比如在浏览器端解析JSON,单独传递数据元素等。
结果是我所需要的是raw()函数,它可以防止字符串被转义。下面是我的工作代码:
in my controller:
@markers = plots.to_gmaps4rails do |plot, marker|
escaped_comment = ERB::Util.html_escape plot.comment
marker.infowindow render_to_string(:partial => 'my_partial', :locals => { :plot => plot})
marker.picture ( {
"picture" => ActionController::Base.helpers.asset_path(plot.marker) , # string, mandatory
"width" => 64, # integer, mandatory
"height" => 32, # integer, mandatory
})
marker.title plot.title
marker.json({ :id => plot.id, :comment => escaped_comment})
end
在我的JS(从format.js Ajax调用返回):
markers = <%=raw(@markers)%>
Gmaps.map.replaceMarkers(markers)
希望这对其他人有帮助!
升级到gmaps4rails 1.3.0即可解决此问题。我面临的另一个问题是确保replaceMarkers方法得到的是一个标记数组,而不是一个JSON字符串
注意,当您创建一个新的地图(在服务器端)时,您必须为标记提供一个JSON字符串。
当你在客户端(在JS中)调用replaceMarkers时,你必须给出一个标记对象数组。
- 在表单提交将DOM的一部分替换为分部之后,我应该将ajax成功绑定到什么来使我的javascript工作
- 我可以'不要让Javascript工作不正常
- 如何让我的html5功能不兼容警告使用javascript工作
- Excel Web Services 电子邮件 JavaScript 工作表
- 用于Google Fusion Table层的Javascript工作,但试图整理代码
- Bootstrap:如何附加一个类,并且仍然有BS Javascript工作
- JavaScript 工作队列
- JavaScript工作,直到我添加这个&&陈述
- 为什么不'在CasperJS中没有简单的JavaScript工作
- 如何"递归AJAX回调”;在JavaScript工作中
- 基本验证javascript工作不正常
- 需要帮助让这个字符串的Javascript工作
- HTML和JavaScript工作不正常
- 下拉菜单无法从CSS或Javascript工作
- 需要从erb生成一个非常特定的html来让javascript工作
- 如果javascript代码段未使用,它将阻止其他javascript工作
- 将内联事件处理程序移动到chrome扩展的javascript工作表
- 阻止其他Javascript工作的Javascript
- iframe阻止javascript工作
- 无法获取切换函数(JavaScript工作)