1

我在 Gmaps4Rails(Gem 版本 1.5.2)中使用 OpenLayers 时遇到问题。当我单击标记时,我想显示典型的标注(信息框)。不幸的是,我收到以下 JavaScript 错误:

this.serviceObject 未定义

Firebug 调用文件“gmaps4rails.openlayers.js”的第 195 行负责:

return this.serviceObject.addPopup(popup);

如果我使用谷歌地图作为 API 提供者,一切正常。显示和隐藏信息框效果很好。这就是为什么我认为错误必须在“gmaps4rails.openlayers.js”中的某个地方

我在 Mac 上尝试了最新的 FF 和 Chrome。

为了重现简化示例中的错误,我在 Rails 3.2 应用程序的公共文件夹中创建了一个简单的 HTML 页面,并直接链接了所需的 JS 和 CSS 文件。为了创建 HTML 页面,我复制了损坏的 Rails 应用程序的 HTML 代码并减少了它。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <link href="/assets/gmaps4rails.css" media="screen" rel="stylesheet" type="text/css" />
    <script src="/assets/gmaps4rails/gmaps4rails.base.js" type="text/javascript"></script>
    <script src="/assets/gmaps4rails/gmaps4rails.openlayers.js" type="text/javascript"></script>
  </head>
  <body>
    <div class="map_container"> 
      <div id="map" class="gmaps4rails_map"></div>
    </div>
    <script src="http://www.openlayers.org/api/OpenLayers.js" type="text/javascript"></script>
    <script type="text/javascript" charset="utf-8">
      Gmaps.map = new Gmaps4RailsOpenlayers();
      Gmaps.load_map = function() {
        Gmaps.map.map_options.provider = "openlayers";
        Gmaps.map.initialize();
        Gmaps.map.markers = [
          {"description":"<p>This shall be in in the popup</p>",
          "id":117979030,
          "lat":39.5715,
          "lng":2.64694}
        ];
        Gmaps.map.create_markers();
        Gmaps.map.adjustMapToBounds();
        Gmaps.map.callback();
      };
      Gmaps.oldOnload = window.onload;
      window.onload = function() { 
        Gmaps.triggerOldOnload();
        Gmaps.loadMaps();
      };
    </script>
  </body>
</html>

不幸的是,我在网络上找不到成功的 Gmap4Rails–Openlayers 集成的工作示例。我是否缺少强制参数?

提前致谢。

4

1 回答 1

0

这是一个错误。

代替:

return this.serviceObject.addPopup(popup);

和:

return this.map.addPopup(popup);

我会尽快修复,谢谢+1

于 2012-06-11T17:38:01.483 回答