Google 地图 100vh 仅适用于 Android 应用平板电脑

Google maps 100vh not working on Android app tablets only

#map-canvas {height: 100vh; width: 100vw;}

<ion-view title="Truck Map">
    <ion-nav-buttons side="left">
        <button menu-toggle="left" class="button button-icon icon ion-navicon"></button>
    </ion-nav-buttons>
    <ion-content>
        <div data-tap-disabled="true">
            <div id="map-canvas"></div>
        </div>
        <button id="map_refresh_btn" class="button icon ion-refresh button-positive" ng-click="refreshMap()">
              Refresh
        </button>
    </ion-content>
</ion-view>

这是我在 angular / ionic / cordova android 和 ios 应用程序中使用的 css 和 html。出于某种原因,我还没有弄清楚,android 平板电脑无法显示带有此 css 的 google 地图,尽管它在所有 iOS 设备和所有Android 电话。如果我给它一个特定的高度和宽度(以像素为单位),地图就会显示出来,但这不是一个灵活的解决方案。任何有关原因或修复的帮助将不胜感激。

Cordova Android 使用操作系统提供的 WebView 组件。您必须确保平板电脑的 Android 版本支持视口单位:

您可以帮助自己绝对定位地图并将其设置为 100% 高度。

或者,您可以将 Cordova Android 项目迁移到支持视口单元的 CrossWalk WebView。 Ionic CLI 使这变得相对容易:

我的猜测是父 div 默认大小为 0,导致具有 map-canvas id 的子 div 也没有大小,导致地图不显示。

<div data-tap-disabled="true">
  <div id="map-canvas"></div>
</div>

除了 tap 属性外,您似乎没有将父项 div 用于任何用途。为什么不尝试将 2 div 合并为 1 并保持 css 不变?

<div id="map-canvas" data-tap-disabled="true">
</div>