gpt4 book ai didi

javascript - 在隐藏元素中绘制 OpenLayers 3 map

转载 作者:数据小太阳 更新时间:2023-10-29 04:11:33 25 4
gpt4 key购买 nike

我正在编写一个页面,您可以在其中查看有关区域和 map 的详细信息。详细信息在一个选项卡上, map 在另一个选项卡上。 HTML 的相关部分如下,类来自 Bootstrap .

<div class="col-xs-8">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab-details" data-toggle="tab">Details</a></li>
<li><a href="#tab-map" data-toggle="tab">Map</a></li>
</ul>
<div class="tab-content">
<div id="tab-details" class="tab-pane fade in active"></div>
<div id="tab-map" class="tab-pane fade">
<div id="map-container" class="map"></div>
</div>
</div>
</div>

图 block 层来自 OSM,矢量图层通过提供 KML 文件的 URL 加载。它使用 OpenLayers 3.0.0 执行此操作如下:

function ShowMap() {
var area = $('#AreaCode').val();
$('#map-container').empty();
if (area != null && area != '') {
var kmlUrl = '/kml?code=' + area;
var tile = new ol.layer.Tile({ source: new ol.source.OSM() });
var vectorSource = new ol.source.KML({ url: kmlUrl, projection: 'EPSG:3857' });
var vector = new ol.layer.Vector({ source: vectorSource });
vector.setOpacity(.3);
var map = new ol.Map({
target: 'map-container',
layers: [tile, vector],
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

vector.addEventListener("change", function(event) {
map.getView().fitExtent(vectorSource.getExtent(), map.getSize());
});
}
}

$('#tab-map-link').on('shown.bs.tab', function(event) {
ShowMap();
});

这会在单击 map 选项卡时呈现 map ,从而导致一小段延迟。即使未选择选项卡,是否有任何加载方式?如果我尝试这样做并且在选择 map 选项卡时不重绘,那么当我切换到 map 选项卡时 Canvas 是空白的并且只显示放大和缩小按钮。

有没有办法在不可见的元素中渲染 map ?

最佳答案

你可以在一个隐藏的容器中初始化 map ,然后,当标签被激活时,你可以在 map 上调用 updateSize:

map.updateSize()

关于javascript - 在隐藏元素中绘制 OpenLayers 3 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com