2015-06-04 2 views
0

Я пытаюсь разместить карту Google в Аккордеоне Bootstrap.Google Map in Bootstrap Accordion

Когда я положил карту <div id="mapcanvas"> во второй аккордеон, карта не загружается должным образом, когда я открываю второй аккордеон.

$(document).ready(function() { 
    $('#map-acc a').click(function (e) { 
     e.preventDefault(); 
     $(this).collapse('show'); 
     resetMap(map); 
    }); 
}); 

function resetMap(m) { 
    x = m.getZoom(); alert('infunctin'); 
    c = m.getCenter(); 
    google.maps.event.trigger(m, 'resize'); 
    m.setZoom(x); 
    m.setCenter(c); 
};   

Codepen Link

Что я делаю неправильно?

ответ

0

См codepen

Этот JS код будет работать для вас. я создал глобальную переменную карту, потому что в вашем случае он не доступен, когда вы звоните

reset(map); 

код

расслоения плотной
var map; 

function gmap() { 
    var mapOptions = { 
     zoom: 12, 
     center: new google.maps.LatLng(13.0827, 80.2707), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById('mapcanvas'), mapOptions); 
} 
google.maps.event.addDomListener(window, 'load', gmap); 

$(document).ready(function() { 
    $('#map-acc a').click(function (e) { 
     e.preventDefault(); 
     $(this).collapse('show'); 
     resetMap(map); 
     });   

    function resetMap(m) { 
     x = m.getZoom(); 
     c = m.getCenter(); 
     google.maps.event.trigger(m, 'resize'); 
     m.setZoom(x); 
     m.setCenter(c); 
    }; 
}); 
+0

спасибо @yuyokk я хотел изменить .collapse класса .collapse .в предложите, как это сделать в jqery? – raju

+0

Я не уверен, что вам нужно. Но я думаю, вам нужно https://api.jquery.com/addclass/ – yuyokk

+0

I ilke, чтобы написать $ (this) .collapse .in ('show'); .in - это класс, добавленный в аккордеон, который является кликом пользователя, поэтому мне нравится проверять сбой класса, а затем запускать функцию сброса карты @yuyokk – raju