首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新PointAnnotation位置android

更新PointAnnotation位置android
EN

Stack Overflow用户
提问于 2022-06-01 14:26:10
回答 1查看 91关注 0票数 0

我试图在Mapbox地图上显示DJI无人机的位置,并不断更新它的位置。这就是我要做的。

代码语言:javascript
复制
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造成的(也许是因为相机动画),所以我想找一种不同的方法来更新无人机的位置。希望有人能帮我谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-06-05 21:36:43

尝试在ui线程上运行。我不知道mapbox的具体情况,但是来自dji的回调没有在ui线程上运行,所以我首先尝试一下。否则,你会得到各种奇怪的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72463515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档