我试图在Mapbox地图上显示DJI无人机的位置,并不断更新它的位置。这就是我要做的。
private void addDroneMarker(double latitude, double longitude){
Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.aircraft_icon)).getBitmap();
AnnotationPlugin annotationAPI = AnnotationPluginImplKt.getAnnotations(mapView);
pointAnnotationManager = PointAnnotationManagerKt.createPointAnnotationManager(annotationAPI, new AnnotationConfig());
PointAnnotationOptions pointAnnotationOptions = new PointAnnotationOptions()
.withPoint(Point.fromLngLat(longitude, latitude))
.withIconImage(bitmap);
dronePoint = pointAnnotationManager.create(pointAnnotationOptions);
}
private void updateDroneMarker(double latitude, double longitude){
dronePoint.setPoint(Point.fromLngLat(longitude, latitude));
pointAnnotationManager.update(dronePoint);
}
private void initFlightController(){
BaseProduct product = FPVApplication.getProductInstance();
if (product != null && product.isConnected()) {
if (product instanceof Aircraft) {
mFlightController = ((Aircraft) product).getFlightController();
}
}
if (mFlightController != null) {
mFlightController.setStateCallback(new FlightControllerState.Callback() {
@Override
public void onUpdate(FlightControllerState djiFlightControllerCurrentState) {
droneLocationLat = djiFlightControllerCurrentState.getAircraftLocation().getLatitude();
droneLocationLng = djiFlightControllerCurrentState.getAircraftLocation().getLongitude();
updateDroneMarker(droneLocationLat, droneLocationLng);
}
});
}
}当地图加载时,我创建了无人机注释,每次无人机从回调中给我一个新的位置,我就更新它的位置。但我的问题是,有时当我移动地图时,它会给我一个错误
Error while setting camera options : std::exception
此错误可能导致应用程序因致命错误而崩溃。
Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x787c881d0c in tid 17420 (RenderThread), pid 17347
我意识到这个错误是由UpdateDroneMarker造成的(也许是因为相机动画),所以我想找一种不同的方法来更新无人机的位置。希望有人能帮我谢谢。
发布于 2022-06-05 21:36:43
尝试在ui线程上运行。我不知道mapbox的具体情况,但是来自dji的回调没有在ui线程上运行,所以我首先尝试一下。否则,你会得到各种奇怪的错误。
https://stackoverflow.com/questions/72463515
复制相似问题