【问题标题】:ionic3 google map not showing in navstackionic3 谷歌地图未显示在导航堆栈中
【发布时间】:2019-03-12 14:39:34
【问题描述】:

使用带有链接的标签时,我无法在 ionic 3 应用程序中显示谷歌地图。

我有 3 个标签,在 1 个标签中我也有一个链接,谷歌地图供用户使用。

假设我当前的标签名称是AddressPage, 当我点击链接显示谷歌地图时,我会去MapPagenav.push() 并且我的 ion-header 已加载,但我在屏幕中间看不到谷歌地图,它在地图页面中间显示了我的上一页 AddressPage 内容。

我确定我在那里有谷歌地图,因为我在 ion 内容中有一个按钮,显示标记的当前纬度\lng 并且它可以工作,但地图不存在。

我使用 safari 来调试应用程序,当我将所有 ion-app 可见性设为 none 时,谷歌地图正在显示。 所以我认为它是 ionic 和 google map sdk 的一些 css 问题。

顺便说一句,当我不使用选项卡及其主页时,我可以显示地图,所以在这种情况下我只有这个问题。

任何人都可以帮助我吗? 我在 stackoverflow 和 ionic 论坛中进行了很多搜索,几乎完成了我在互联网上看到的所有内容。 从添加 css 就像添加 nav-decorator css to hide 或 ....

提前感谢您的帮助!

这是我的离子信息:

ionic (Ionic CLI)  : 4.1.2 (C:\Users\ASUS\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework    : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.0

 ionViewDidLoad() {
    this.isEdit = this.navParams.get('isEdit');
    this.loadMap();
}

这是我的地图 page.ts 代码

ionViewDidLoad() {
    this.isEdit = this.navParams.get('isEdit');
    this.loadMap();
}

//load the map
loadMap() {
    //google map options
    let mapOptions: GoogleMapOptions = {
        camera: {
            target: this.mapCenter,
            zoom: 16,
            tilt: 10,
        },
        mapTypeId: 'ROADMAP',
        controls: {
            myLocationButton: true,
            zoom: false
        },
    };
    this.map = GoogleMaps.create('map_canvas', mapOptions);
    this.showLoading(null);
    this.map.on(GoogleMapsEvent.MAP_READY)
        .subscribe((resp) => {
            this.hideLoading();

        });

}

这是我的地图页面 css

 #map_canvas {
height: 100%;
width: 100%;
  }

这是我的 map.html

<ion-header>
<ion-navbar>
    <ion-title text-center>
        انتخاب آدرس
    </ion-title>
</ion-navbar>
</ion-header>
 <ion-content>

<div id="map_canvas" >

</div>

</ion-content>

【问题讨论】:

    标签: angular google-maps ionic-framework ionic3


    【解决方案1】:

    当您使用标签时,此解决方案可让您可见并在不同标签之间隐藏谷歌地图。

    initialMapLoad: boolean = true;
    
    ngAfterViewInit(){
      this.loadMap();
    }
    
    ionViewWillEnter(){
      if (!this.initialMapLoad) {
        // reset div & *then* set visibility to smooth out reloading of map
        this.map.setDiv('map_canvas');
        this.map.setVisible(true);
      } else {
        this.initialMapLoad = false;
      }
    }
    
    ionViewWillLeave() {
      // unset div & visibility on exit
      this.map.setVisible(false);
      this.map.setDiv(null);
    }
    

    除此之外,您还可以使用 Google maps Javascript API。它在任何地方都很好用。

    如果还有问题,请随时发表评论

    【讨论】:

    • 感谢您的回复。我从一个我不记得的话题解决了这个问题。但关键是在去谷歌地图时隐藏导航堆栈。如果我最多有两个导航堆栈,第三个是谷歌地图,地图加载正常,但问题是当我有超过 3 个导航堆栈然后我使用谷歌地图时,所以我在离开谷歌地图之前隐藏所有导航堆栈。并显示他们再次上将进入。
    猜你喜欢
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 2022-01-06
    • 2021-12-06
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多