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 的范围内,并且该函数不可能移动相机来定位它。
无论如何,现在一切正常。
我正在为 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 的范围内,并且该函数不可能移动相机来定位它。
无论如何,现在一切正常。