1

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 の統合が成功した実例を見つけることができませんでした。必須パラメーターがありませんか?

前もって感謝します。

4

1 に答える 1

0

バグです。

交換:

return this.serviceObject.addPopup(popup);

と:

return this.map.addPopup(popup);

すぐに修正をプッシュします。ありがとう、+1

于 2012-06-11T17:38:01.483 に答える