Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 我能';在调整窗口大小之前,请不要正确显示openlayer贴图_Angular_Typescript_Ionic Framework_Openlayers - Fatal编程技术网

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);