直到我滚动/拖动iOS上的Google地图为灰色

时间:2019-02-20 13:47:36

标签: html5 google-maps cordova google-maps-api-3 dynamic-html

我有一个Cordova应用程序,可在其中以多个视图显示Google地图。

我正在通过以下方式在div中创建地图实例

  mapElement = document.createElement('div');
  mapElement.style.width = '100%';
  mapElement.style.height = '100%';
  mapElement.setAttribute("id", "map");
  map = new google.maps.Map(mapElement, {
    center: SYDNEY,
    zoom: 16,
    disableDefaultUI: true,
    gestureHandling: 'greedy'
  });

每当我需要显示地图时,都会将此mapElement附加到父div元素。

它似乎也可以在桌面浏览器,Android,甚至Mac上的Safari上运行。但它不适用于iPhone和iOS模拟器。

在iPhone和iOS模拟器上,只要我不触摸地图,该地图就会显示为灰色,如果我稍加拖动,它就会正确呈现。

我为我的代码创建了一个最小的解决方案 https://codepen.io/anon/pen/pGGMBq

注意:我想这似乎是由Maps API的最新更新引起的,因为几天前这种方法仍在起作用。

这是脚本

https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBXwFGK-MgYDbrQU0uLBmN372VefginLIU&libraries=geometry,drawing

我尝试过的事情

  • 使用google.maps.event.trigger(map,“ resize”);触发调整大小;
  • 使用jQuery更改容器的高度。
  • 其他一些调整

1 个答案:

答案 0 :(得分:-1)

您必须提前声明对私有数据的访问。私人数据包括相机,位置,日历,照片,麦克风等。您可以通过在应用程序的Info.plist中添加使用键以及目的字符串来做到这一点,这就是您需要做的:

在添加Geolocation插件后,您需要在config.xml文件中添加以下内容。然后将其编译在应用程序的Info.plist中:

<config-file  parent="NSLocationWhenInUseUsageDescription" platform="ios" 
target="*-Info.plist">

    <string>need location access to find things nearby</string>

<config-file>

最后,您将必须删除平台并再次添加。您可以使用以下命令执行此操作:

cordova platform rm ios
cordova platform add ios