首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ionic-Framework (4) -Openlayer贴图不工作/可见

Ionic-Framework (4) -Openlayer贴图不工作/可见
EN

Stack Overflow用户
提问于 2019-01-09 16:31:02
回答 1查看 1.8K关注 0票数 3

我尝试将Openlayers与Ionic结合使用,但贴图在setTimeout之前不可见。

以下是我的工作代码:

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';

import OlMap from 'ol/map';
import OlOSM from 'ol/source/osm';
import OlTileLayer from 'ol/layer/tile';
import OlView from 'ol/view';
import OlProj from 'ol/proj';

@Component({
  selector: 'app-tab1',
  template: '<ion-content><div id="map" class="map"></div></ion-content>',
  styleUrls: ['tab1.page.scss']
})
export class Tab1Page implements OnInit {
  map: OlMap;
  ngOnInit() {
    const layer = new OlTileLayer({
      source: new OlOSM({ url: 'https://{a- b}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png' })
    });

    setTimeout(() => this.map = new OlMap({
      target: 'map',
      layers: [layer],
      view: new OlView({ zoom: 13, center: OlProj.fromLonLat([42, 10]) }),
      controls: []
    }), 0);
  }
}

app.module.ts:

代码语言:javascript
复制
@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})

但是如果我不使用setTimeout地图是不可见的.

我也尝试过将代码放在NgAfterViewInit中,但这也不起作用。

对我来说,使用setTimeout似乎是一种肮脏的变通方法。有没有人知道为什么会出现这个问题,或者如何以更好的方式解决它?

(我对Angular和BrowserAnimationsModule也有类似的行为。see here)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 06:08:06

使用我最近在您提到的答案中发布的答案创建一个组件

https://stackoverflow.com/a/54281422/2701198

然后在页面中使用该组件。

希望能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54105934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档