【问题标题】:Recent MapView issue in Expo standalone AndroidExpo独立Android中最近的MapView问题
【发布时间】:2019-08-22 22:24:29
【问题描述】:

这是一个新问题,似乎与谷歌地图 API 有关 - 对我们来说是突然出现的。这似乎是不可能的,但我们的生产应用程序突然开始在我们的启动屏幕上抛出一个偶尔的错误。我们的启动屏幕主要是一个谷歌地图,即 MapView for expo。

Uncaught Error: Error using newLatLngBounds(LatLngBounds, int): Map size can't be 0. Most likely, layout has not yet occured for the map view. Either wait until layout has occurre or use newLatLngBounds(LatLngBounds, int, int, int) which allows you to specify the map's dimensions.
This only happens on our Android standalone app, through Expo it works fine.

我们遵循了适用于 Android 的文档:https://docs.expo.io/versions/v34.0.0/workflow/configuration/#android - 我们已经完成了这些步骤。据我们所知,我们已经使用不同的 API 密钥完成了两次该过程,得到了相同的结果。

我们已尝试修复建议的here,即根据尺寸设置高度和宽度、设置 flex:1 和设置 initialLocation。我们使用 onReady 来调用初始启动方法。似乎没有任何效果。

截至今天,上面的 github 链接确实有人遇到过这个问题。有什么想法可以调试吗?

【问题讨论】:

    标签: expo react-native-maps


    【解决方案1】:

    我们刚刚删除了除地图之外的所有内容,包括删除标记 - 它有效。我们发现问题仅在我们添加带有坐标的标记时才会发生,我们通过将坐标传递给地图在新的全新 expo 应用程序上重现了这个问题,这导致它在 Android 上崩溃(大部分时间,但不是全部) 当我们构建和加载 APK 时。 通过地图的onReady 属性添加标记也不能阻止崩溃。

    原来这是一个名为onLayout 的未记录方法,仅在fitToCoordinates 的文档中引用。它提到如果这个函数被提前调用然后它会导致崩溃,你可能需要使用onLayout。我们从未调用过fitToCoordinates,但显然MapView 中的其他内容确实如此。 有人提出问题here

    我们将标记创建逻辑从onReady 移至onLayout,并且成功了。

          <MapView
            testID="map"
            style={{flex: 1}}
            onMapReady={this.onMapReady}>
            {this.mapIsReady &&   <Marker
                key={id}
                coordinate={coordinate}/> }
           </MapView>
    
    

    收件人:

          <MapView
    ...
            onLayout={this.onMapReady}
    
    

    没有更多的崩溃...

    【讨论】:

    • 天才!欣赏!
    • 不客气 :-) 很高兴它帮助了某人。
    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2021-09-17
    • 2019-05-23
    • 1970-01-01
    • 2020-05-11
    相关资源
    最近更新 更多