gmaps4rails 1.4.8,信息块插件1.9,rails 3.2.2

时间:2012-03-31 01:36:17

标签: ruby-on-rails-3 gmaps4rails

我在我的Rails 3.2.2应用程序上运行了gmaps4rails gem版本1.4.5。我刚刚抓住了1.4.5文档中描述的示例信息框设置。看起来很漂亮!

所以我终于在IE8上检查了它,并且信息框的背景不存在,在Safari和Firefox上我得到一个漂亮的黄色,%75不透明度,在IE8上我根本没有背景。

在使用CSS后,我放弃了,并决定抓住最新版本的gmaps4rails 1.4.8。我注意到它现在支持google infobox.js插件。所以我追踪它,发现有多个版本,不知道哪个版本适用于gmaps4rails 1.4.8,我选择了infobox.js 1.9,最新版本。

所以我把它贴在app / assets / googlemaps.js清单中就像这样:

//= require infobox.js
//= require ./gmaps4rails.base.js.coffee
//= require ./gmaps4rails.googlemaps.js.coffee

我已经尝试过将infobox.js包含在内的几种不同的排列。

我在usamap.html.erb:

中解雇了整个事情
<%= javascript_include_tag "lbrokers" %>
<%= gmaps("markers" => {"data" => @json, "options" => {"custom_infowindow_class" => "infobox", "auto_adjust"=>false}}) %>

lbrokers.js显示如下:

//= require gmaps4rails/googlemaps.js

当我点击该页面时,我明白了:

google is not defined
http://localhost:3000/assets/infobox.js?body=1
Line 128

从我最初设置gmaps4rails到现在之间的几个月。即使我安装了1.4.8 Gem,我真正做的只是从Github上的gmaps4rails 1.4.8抓取gmaps4rails.base.js.coffee和gmaps4rails.googlemaps.js.coffee并将其内容粘贴到app中的先前文件中/资产/ javascripst / gmaps4rails。这是在调用usamap.html.erb之前呈现的布局文件:

<% content_for :html_foot do %>
  <%= yield :scripts %>
  <script type="text/javascript">
  $(document).ready(function() {
    var centerpoint = new google.maps.LatLng(38, -97);
    gMap = new google.maps.Map(document.getElementById('map')); 
    gMap.setCenter(centerpoint);
  });
  Gmaps.map.infobox = function(boxText) {
    return {
      content: boxText
      ,disableAutoPan: false
      ,maxWidth: 0
      ,pixelOffset: new google.maps.Size(-140, 0)
      ,zIndex: null
      ,boxStyle: { 
      background: "url('http://google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.5/examples/tipbox.gif') no-repeat"
        ,opacity: 0.75
        ,width: "380px"
      }
      ,closeBoxMargin: "10px 2px 2px 2px"
      ,closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif"
      ,infoBoxClearance: new google.maps.Size(1, 1)
      ,isHidden: false
      ,pane: "floatPane"
      ,enableEventPropagation: false
   }};  
   </script>
<% end %>

这与在gmaps4rails 1.4.5上运行良好的信息框设置相同。现在我正在使用infobox.js插件,noworky!

我在某处出错了,infobox.js 1.9是错误的选择。 或者我通过复制两个gmaps4rails咖啡脚本并将它们粘贴到app / assets / javascripts / gmaps4rails中搞砸了。

或者?????

任何人

2 个答案:

答案 0 :(得分:2)

我现在已经通过

解决了这个问题
    <script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/src/infobox_packed.js"></script>

在视图的布局中,并删除

//= require infobox.js

从显示地图的视图中使用的清单中。我正在将各种版本的infobox.js复制并粘贴到我的本地副本中,并通过资产管道提供服务。

IE8上仍然缺少背景,但我使用的是信息框1.1.9,还有更高版本,希望他们能修复缺少的背景。

我首先注意到,当我从1.4.5升级到1.4.6时,先前正在运行的gmaps4rails 1.4.5设置停止工作。所以我把1.4.5放回去继续。当我注意到IE8缺少infowindow背景时,gmaps4rails当时是1.4.8,它的行为与尝试的1.4.6升级相同。我只能假设在1.4.5和1.4.6之间发生了变化,要求你加载infobox.js插件。

另一个小点,在1.4.5聚类中默认打开,在1.4.8中它默认关闭,你必须通过将选项“do_clustering”=&gt; true传递给“markers”选项来打开它散列。

答案 1 :(得分:1)

找到IE8没有背景的原因,我不知道什么时候,也许几年前,我把这个添加到我的

<meta http-equiv="X-UA-Compatible" content="IE=7" />

当我这样做时没有任何想法,或为什么,但删除它修复了IE8上缺少的背景。