我已经成功使用公共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()方法中一样,它保持循环 并保留一些旧值。
我错过了什么吗?
答案 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