设置首页位置-DJI Android Mobile SDK

时间:2018-11-05 14:26:05

标签: java android location dji-sdk

我已经成功使用公共void onMapClick(LatLng point)在Google Maps上添加了一个标记。

我将“ point”的值存储到私有LatLng mLatLngHOME = point中; (将用于方法 initFlightController()来设置家庭位置)。

private void initFlightController() {

    if (isFlightControllerSupported()) {
        mFlightController = ((Aircraft) DJISDKManager.getInstance().getProduct()).getFlightController();
        mFlightController.setStateCallback(new FlightControllerState.Callback() {
            @Override
            public void onUpdate(FlightControllerState djiFlightControllerCurrentState) {

                    djiFlightControllerCurrentState.setHomeLocation(new LocationCoordinate2D(mLatLngHOME.latitude, mLatLngHOME.longitude));
            }
        });
    }
}

private boolean isFlightControllerSupported() {
    return DJISDKManager.getInstance().getProduct() != null &&
            DJISDKManager.getInstance().getProduct() instanceof Aircraft &&
            ((Aircraft) DJISDKManager.getInstance().getProduct()).getFlightController() != null;
}

使用DJI演示应用程序( DJIDemoApplication.java MApplication.java ),我在 MainActivity中创建了广播接收器 .java

在广播中,我调用方法 updateFlightController(),在其中显示一些Toast消息:

private void updateFlightController() {

    if (isFlightControllerSupported()) {
        mFlightController = ((Aircraft) DJISDKManager.getInstance().getProduct()).getFlightController();
        mFlightController.setStateCallback(new FlightControllerState.Callback() {
            @Override
            public void onUpdate(FlightControllerState djiFlightControllerCurrentState) {

                    // TEST
                    showToast("mLatLngHOME = " + mLatLngHOME);
                    showToast("Latitude / Longitude = " + mLatLngHOME.latitude + " / " + mLatLngHOME.longitude);
            }
        });
    }
}

问题是,它们显示 mLatLngHOME = null 纬度/经度= NaN / NaN

  

就像在 updateFlightController()方法中一样,它保持循环   并保留一些旧值。

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

这似乎不是DJI SDK的问题,因为您所使用的类和要点并非源自DJI产品。

答案 1 :(得分:0)

mLatLngHOME变量永远不会在FlightController的onUpdate()的{​​{1}}方法中更新,因此,它肯定会保留旧值。请检查以下代码以供参考:

setStateCallback

有关使用DJIFlightController的更多详细信息,您可以查看本教程:https://developer.dji.com/mobile-sdk/documentation/android-tutorials/GSDemo-Google-Map.html#locating-aircraft-on-google-map