Gmaps4Rails - 自定义信息不能正常工作

时间:2014-09-15 13:16:28

标签: javascript ruby-on-rails google-maps gmaps4rails

我在使用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} }

非常感谢任何帮助。谢谢。

1 个答案:

答案 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}}类相同的文件中定义。你没有这样做:你在窗口中创建处理程序。