我在使用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} }
非常感谢任何帮助。谢谢。
答案 0 :(得分:3)
你误读了文档,替换:
: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
可在InfoBoxBuilder
对象上访问
基本上在gem的doc中,地图创建在与{{1}}类相同的文件中定义。你没有这样做:你在窗口中创建处理程序。