谷歌地图,Rails和Jquery
更新7/17已解决
我已将我的代码更新为Solved版本。
原始问题
我正试图通过Gem gmaps4rails显示谷歌地图。 在研究了此处和此处发布的以下2个问题之后,Google地图似乎存在一个问题,该选项卡隐藏并显示来自Jquery或Javascript的内容,并且如果没有Jquery中的某些代码,则无法正确显示Google Map。
我坚持在我的JavaScript中调整地图大小可以有人指出我的错误?
谢谢!
我的代码:
使用Javascript
$(document).ready(function(){ //Default Action $(".gear_tab_content").hide(); //Hide all content $("ul.gear_page_tabs li:first").addClass("active").show(); //Activate first tab $(".gear_tab_content:first").show(); //Show first tab content $(".map_container").hide(); //Hide the Google Map //On Click Event $("ul.gear_page_tabs li").click(function() { $("ul.gear_page_tabs li").removeClass("active"); //Remove any "active" class $(this).addClass("active"); //Add "active" class to selected tab $(".gear_tab_content").hide(); //Hide all tab content var activeTab = jQuery(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content $(activeTab).fadeIn(); //Fade in the active content if(activeTab == '#GearLocation') { $(".map_container").show(); Gmaps.loadMaps(); Gmaps.map.addMarkers(json); google.maps.event.trigger(Gmaps.map, 'resize'); } return false; }); });
我的看法
调节器
def show @gear = Gear.find(params[:id]) @storegear = @gear.user.gears.all(:order => 'created_at DESC', :limit => 6) @comments = @gear.comments.all @user = @gear.user @store = @gear.user.store.id @json = @gear.to_gmaps4rails respond_to do |format| format.html format.json { render :json => @json } end end
路线
gears GET /gears(.:format) gears#index POST /gears(.:format) gears#create new_gear GET /gears/new(.:format) gears#new edit_gear GET /gears/:id/edit(.:format) gears#edit gear GET /gears/:id(.:format) gears#show PUT /gears/:id(.:format) gears#update DELETE /gears/:id(.:format) gears#destroy /gear(.:format) gears#index
再次感谢。
当您显示/隐藏/调整Google地图地图的大小时,您需要调用地图的resize事件。 Soyou应该在显示之后添加它:
... Gmaps.map.addMarkers(json); google.maps.event.trigger(Gmaps.map, 'resize'); ...
我假设Gmaps.map是google.maps.Map类的一个实例…