为什么在 onMapReady 中调用 getMapCapabilities 时会导致 NullPointerException?

Why does getMapCapabilities cause a NullPointerException when called in onMapReady?

提问人:alstr 提问时间:11/8/2023 更新时间:11/20/2023 访问量:25

问:

我正在检查我是否可以在给定设备上使用,方法是调用 。AdvancedMarkersgetMapCapabilities

@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
    MapCapabilities mapCapabilities = googleMap.getMapCapabilities();

但是,每次都会崩溃,并显示:NullPointerException

java.lang.NullPointerException: null reference
at com.google.android.gms.common.internal.Preconditions.checkNotNull(com.google.android.gms:play-services-basement@@18.1.0:1)
at com.google.android.gms.maps.model.MapCapabilities.<init>(com.google.android.gms:play-services-maps@@18.2.0:1)
at com.google.android.gms.maps.GoogleMap.getMapCapabilities(com.google.android.gms:play-services-maps@@18.2.0:1)

地图不是空的,所以我很困惑是什么不符合条件。checkNotNull

我在虚拟设备上运行,但我仍然没想到它会崩溃。

安卓 谷歌地图

评论

1赞 Yrll 11/20/2023
您是否确保在“新建地图”渲染器上运行?我刚刚在我的终端测试了getMapCapabilities方法,但我似乎看不到错误。您能否尝试提供一个最小的可重现示例,或者将其作为问题提交到公共问题跟踪器中?你可以在这里做:developers.google.com/maps/support
0赞 alstr 11/20/2023
它正在运行新的地图渲染器。我设法让它工作,如我的回答中所述,通过移动我的代码 - 但我不确定为什么。

答:

0赞 alstr 11/20/2023 #1

出于某种原因,搬出导致它工作正常。我不完全确定为什么,因为重点是地图是......准备。getMapCapabilities()onMapReadyonMapReady

我还发现,在不发生相同错误的情况下,不可能进行链接。我必须首先获得 ,然后单独检查是否有可用。map.getMapCabilities().isAdvancedMarkersAvailable()MapCababilitiesAdvancedMarkers

总而言之,这是一个有点奇怪的问题,它很可能与它在模拟器上运行的事实有关。文档并没有真正说明这一点。