我在 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 集成的工作示例。我是否缺少强制参数?
提前致谢。