Gmaps4Rails (Gem バージョン 1.5.2) で OpenLayers を使用する際に問題があります。マーカーをクリックすると、典型的なコールアウト (Infobox) を表示したいと思います。残念ながら、次の JavaScript エラーが発生します。
this.serviceObject は未定義です
Firebug は、ファイル「gmaps4rails.openlayers.js」の 195 行を責任者として呼び出します。
return this.serviceObject.addPopup(popup);
代わりに Google マップを API プロバイダーとして使用すると、すべて正常に動作します。インフォボックスの表示と非表示はうまく機能します。これが、エラーが「gmaps4rails.openlayers.js」のどこかにあるに違いないと思う理由です。
Macで最新のFFとChromeを試してみました。
縮小した例でエラーを再現するために、Rails 3.2 アプリの public フォルダーに単純な 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>
残念ながら、Web 上で Gmap4Rails と Openlayers の統合が成功した実例を見つけることができませんでした。必須パラメーターがありませんか?
前もって感謝します。