Gmaps4Rails-自定义信息窗口不起作用

Gmaps4Rails - custom infowindow not working

本文关键字:窗口 不起作用 信息窗 信息 自定义 Gmaps4Rails-      更新时间:2023-09-26

我在使用Google Maps 4 rails gem在rails上实现自定义信息框时遇到了问题。我已经在页面顶部添加了infobox插件,并尝试了文档中的代码片段,但仍然没有自定义的infobox或infobox窗口上的"黄色"类。

如何将自定义信息框的选项传递给以下生成的标记?

: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的文档中,映射创建是在与InfoBoxBuilder类相同的文件中定义的。您没有这样做:您在窗口中创建了处理程序。