gmaps4rails gem を使用して、fancybox にアイテムのマップを表示したいと考えています。私は ajax 呼び出しに関する wiki のコメントに注意深く従いました。つまり、スクリプトはアプリケーション レイアウトに手動で含める必要があり、マップは JavaScript でロードする必要があります ( gem wiki を参照)。
しかし、ボックスにマップを表示することはまだ完全にはできていません。
一方、javascript で座標をハードコーディングすると、正常に動作し、ファンシーボックスにマップが表示され、マーカーが表示されます。
要約させてください。
私のインデックス ビューでは、アイテム インデックス アクションへの ajax 呼び出しがあります。
<%= link_to "Show Map", items_path(:format => :js, :show_map => true), :remote => true, :class => 'fancybox' %>
コントローラーで、マップ データを入力します。
def index
@items=Item.all
if params[:show_map]
@map= @items.to_gmaps4rails
end
end
index.js.erb ファイルに、
<% if params[:show_map] %>
var content = "<%= escape_javascript( gmaps({:last_map => false})) %>";
$.fancybox({
'content': content,
'padding' : 20
});
Gmaps.map = new Gmaps4RailsGoogle();
Gmaps.load_map = function() {
Gmaps.map.initialize();
Gmaps.map.markers = <%= @map %>;
Gmaps.map.create_markers();
Gmaps.map.adjustMapToBounds();
Gmaps.map.callback();
};
Gmaps.loadMaps();
<% else %>
// blablabla
<% end %>
マップ オブジェクト内でマーカーが提供される場所。
これは機能せず、マップの代わりにファンシーボックスにコード自体が表示されました。何かのようなもの:
var content = "\n
\n
<\/div>\n<\/div>\n"; $.fancybox({ 'content': content, 'padding' : 20 }); Gmaps.map = new Gmaps4RailsGoogle(); Gmaps.load_map = function() {Gmaps.map.initialize();
//Gmaps.map.markers = [{"lat":50.294,"lng":5.857},{"lat":50.294,"lng":5.857},{"lat":50.548,"lng":4.918},{"lat":50.384,"lng":3.649},{"lat":50.384,"lng":3.649},{"lat":50.08,"lng":4.5760000000000005},{"lat":50.054,"lng":5.195}];
Gmaps.map.markers = [{"lat":50.8483059,"lng":4.351783999999999},{"lat":50.496,"lng":5.066},{"lat":50.11,"lng":5.003},{"lat":50.11,"lng":5.003},{"lat":50.162,"lng":5.871},{"lat":50.08,"lng":4.5760000000000005},{"lat":50.08,"lng":4.5760000000000005},{"lat":50.08,"lng":4.5760000000000005}];
Gmaps.map.create_markers(); Gmaps.map.adjustMapToBounds(); Gmaps.map.callback(); }; Gmaps.loadMaps();
erb の代わりに、<%= @map %>
たとえば次のようにマーカーをハードコーディングします。
Gmaps.map.markers = [{"lat":50.294,"lng":5.857},"lat":50.294,"lng":5.857},{"lat":50.548,"lng":4.918}];
できます!
json データ型の変換で何かが足りないようです。しかし、私は何がうまくいかないのかを見つける専門家ではありません。
ご協力いただきありがとうございます!