我在使用 Google Maps 4 Rails gem 实现自定义信息框时遇到问题。 我已将信息框插件添加到页面顶部并尝试了文档中的代码片段,但仍然没有自定义信息框或信息框窗口上的“黄色”类。
如何将自定义信息框的选项传递给以下生成的标记?
:javascript
handler = Gmaps.build('Google');
handler.buildMap({ provider: {
}, internal: {id: 'map'}}, function(){
markers = handler.addMarkers(#{raw @hash.to_json},{builders: {Marker: InfoBoxBuilder}});
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
handler.getMap().setZoom(9);
});
我还在 infowindow.js.coffee 中添加了以下代码
class InfoBoxBuilder extends Gmaps.Google.Builders.Marker # inherit from base builder
# override method
create_infowindow: ->
return null unless _.isString @args.infowindow
boxText = document.createElement("div")
boxText.setAttribute("class", 'yellow') #to customize
boxText.innerHTML = @args.infowindow
@infowindow = new InfoBox(@infobox(boxText))
infobox: (boxText)->
content: boxText
pixelOffset: new google.maps.Size(-140, 0)
boxStyle:
width: "280px"
handler = Gmaps.build 'Google', { builders: { Marker: InfoBoxBuilder} }
任何帮助将不胜感激。谢谢。
最佳答案
你误读了文档,替换:
:javascript
handler = Gmaps.build('Google');
handler.buildMap({ provider: {
}, internal: {id: 'map'}}, function(){
markers = handler.addMarkers(#{raw @hash.to_json},{builders: {Marker: InfoBoxBuilder}});
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
handler.getMap().setZoom(9);
});
与:
:javascript
var handler = Gmaps.build('Google', { builders: { Marker: InfoBoxBuilder} });
handler.buildMap({ internal: {id: 'map'}}, function(){
var markers = handler.addMarkers(#{raw @hash.to_json});
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
handler.getMap().setZoom(9);
});
并且 class InfoBoxBuilder
应该是 class @InfoBoxBuilder
才能在 window
对象上访问
基本上在 gem 的文档中, map 创建定义在与 InfoBoxBuilder
类相同的文件中。您没有这样做:您在窗口中创建处理程序。
关于javascript - Gmaps4Rails - 自定义信息窗口不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25849028/