Angular 我能';在调整窗口大小之前,请不要正确显示openlayer贴图
我这样设置地图:Angular 我能';在调整窗口大小之前,请不要正确显示openlayer贴图,angular,typescript,ionic-framework,openlayers,Angular,Typescript,Ionic Framework,Openlayers,我这样设置地图: this.map = new Map({ target: 'map', layers: [new TileLayer({source: new OSM()}) ], view: new View({ center: [0, 0], zoom: 16, }) }); 打开页面时,我看到: 因此,我打开控制台使页面变小,并加载地图: 你知道怎么修吗?我帮我解决了这个问题。这实际上是一个时间问题。解决方案如下:我在html元素上插入了一个ng
this.map = new Map({
target: 'map',
layers: [new TileLayer({source: new OSM()})
],
view: new View({
center: [0, 0],
zoom: 16,
})
});
打开页面时,我看到:
因此,我打开控制台使页面变小,并加载地图:
你知道怎么修吗?我帮我解决了这个问题。这实际上是一个时间问题。解决方案如下:我在html元素上插入了一个ng if。并在一秒钟超时后设置地图的目标 html:
一年多前,我回答了一个类似的问题。看看这个问题
在这里,您将找到两种解决方案,一种是使用组件的
OnInit
方法加上ViewChild
来获取绑定地图的参考元素。另一个方案使用AfterViewInit
我正在更新窗口,然后它就可以工作了
setTimeout(() => {
oMap.updateSize();
}, 0);
这似乎是一个计时问题,您可以添加映射为bound的组件的代码吗?实际上,我在oninit钩子中设置了映射
this.map = new Map({
view: new View({
center: [0, 0],
zoom: 16,
minZoom: 2,
maxZoom: 19
}),
layers: [
new TileLayer({
source: new OSM()
}),
]
});
this.loaded = true;
setTimeout(() => {
this.map.setTarget(document.getElementById('map'));
}, 1000);
setTimeout(() => {
oMap.updateSize();
}, 0);