Mapbox SDK - 在点击事件期间使用 animateCamera 时应用程序崩溃

Mapbox SDK - App crashes when using animateCamera during click event

我正在为 Android 使用 Mapbox SDK,我正在做一个简单的“点击并移动”任务,但出于某种原因,每当我点击一个位置并且相机移动到该位置时,应用程序崩溃并出现以下错误。

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.mapbox.mapboxsdk.maps.MapboxMap.animateCamera(com.mapbox.mapboxsdk.camera.CameraUpdate, int)' on a null object reference

然后错误指向这一行。

mapboxMap.animateCamera(CameraUpdateFactory

mapboxMap.animateCamera(CameraUpdateFactory
            .newCameraPosition(new CameraPosition.Builder()
                    .target(new LatLng(latLng))
                    .zoom(13)
                    .build()), 1500);

LatLng 不为空。我确保验证坐标是否正在传递并且它们是。

事实上,即使我对坐标 (lat / lng) 进行硬编码,它仍然会崩溃。

注意:这发生在 moveCamera()、easeCamera() 和 animateCamera() 中。

'void com.mapbox.mapboxsdk.maps.MapboxMap.moveCamera(com.mapbox.mapboxsdk.camera.CameraUpdate)' on a null object reference

'void com.mapbox.mapboxsdk.maps.MapboxMap.easeCamera(com.mapbox.mapboxsdk.camera.CameraUpdate)' on a null object reference

但是,需要注意的一件事是,如果我将该代码放在 onMapReady() 实例中,则地图加载时相机位于坐标指向的位置,但如果我执行点击事件以触发功能移动相机到我点击的地方,它崩溃了。

我想提的另一件事是,当我单击时,相机实际上会转到该位置,但它会立即崩溃。我知道这是因为当 android studio 模拟器尝试“恢复应用程序”时,它会在地图上显示它应该去的位置。

知道为什么会这样吗?

当我执行点击事件时,正向和反向地理编码等其他功能工作正常。

我遇到的使函数无法识别地图本身并因此返回 NULL 的问题是:

@Override
    public void onMapReady(@NonNull final MapboxMap mapboxMap) {
        mapboxMap = mapboxMap; //<=== THIS HERE WAS THE PROBLEM.
                              //It should be this.mapboxMap = mapboxMap

..........

我在 activity 中将 mapboxMap 声明为全局变量,但是当地图初始化时,它会将自己分配给全局变量并将其保持在 onMapReady 的范围内,并且该函数不可能移动相机来定位它。

无论如何,现在一切正常。