Google Maps Not Working in jQuery Tabs

前端 未结 13 1883
滥情空心
滥情空心 2020-12-09 22:56

Google maps not working when placed inside jQuery tabs is a question that\'s all over the web. In my research so far none of the solutions seem to work. Hopefully someone he

13条回答
  •  长情又很酷
    2020-12-09 23:09

    rogercut's answer got me where I needed to be. I am using Bootstrap tabs, nested, and could not get the map to update.

    When I click on tab group 2 (#tg2), the map tab is the first one showing. I also needed to fire the resize if someone clicked the second level tab (#tab1) from within tab group 2.

    The click handler works, but the problem is that on click, the tab is still hidden... By setting a small delay, it gives time for the tab to show before the resize fires off.

    // Create Map
    var map;
    function initialize() {
      var mapOptions = {
        zoom: 8,
        center: new google.maps.LatLng(48.8582, 2.2945), //I see Paris, I see France
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
     map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);
    }
    
    //Bind click handlers - Here's the important part
    $('a[href=#tab1], a[href=#tg2]').on('click', function() {
        setTimeout(function(){
            google.maps.event.trigger(map, 'resize');
        }, 50);
    });
    

    So, we're telling the browser to wait 50ms after the click to do the resize. In my testing, 50ms was plenty of time for the tab to show, yet short enough that it's not really noticeable to the user. In fact, my testing worked with a delay of only 1ms on the 4-5 machines I tested it on - even a dog slow laptop we had sitting in storage. 50ms is just being safe.

    Hope this helps someone else.

提交回复
热议问题