无法让OpenLayers 3地图显示在Bootstrap模式中

Alf*_*nse 3 javascript jquery twitter-bootstrap-3 openlayers-3

当试图在模态中显示ol3地图时,看起来有一个奇怪的错误.地图位于模态中,但不显示.然后手动调整窗口大小会强制显示.这是一个尝试看看我的意思的链接.单击每个地图中的设置下拉菜单.点击"获取功能信息".这将切换模态中的地图(但不显示).调整窗口大小.瞧!

我尝试了很多方法来使用javascript和jQuery来触发调整大小事件:

$('#featinfo').on('shown.bs.modal', function () {
ol.Map.event.trigger(map5, "resize"); //borrowed from google.maps.event. How to do this in ol3?
});
Run Code Online (Sandbox Code Playgroud)

救命?

小智 6

我有同样的问题.在模态打开后,您需要强制加载地图.尝试在地图中使用一个函数:

function loadMap () {
    var map = new ol.Map({
        controls: ol.control.defaults({
            attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
                collapsible: false
            })
        }).extend([mousePositionControl]),
        layers: [
            new ol.layer.Tile({
                source: new ol.source.OSM()
            })
        ],
        target: 'map',
        view: new ol.View({
            center: [0, 0],
            zoom: 2
        })
    });
}
Run Code Online (Sandbox Code Playgroud)

并且,一旦打开模态,shown.bs.modal就会被触发

<script>
    $('#GazModal').on('shown.bs.modal', function () {
        loadMap();
     })
</script>
Run Code Online (Sandbox Code Playgroud)


Tat*_*ran 5

你有没有尝试过:

map.updateSize();
Run Code Online (Sandbox Code Playgroud)

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时对自己的帖子发表评论,一旦您拥有足够的[声誉](http://stackoverflow.com/help/whats-reputation),您就会能够[对任何帖子发表评论](http://stackoverflow.com/help/privileges/comment)。 (2认同)