Мне удалось добавить маркер на Google Maps с помощью общедоступного void onMapClick (LatLng point).
Я сохранил значение "point" в приватном LatLng mLatLngHOME = точке; (который будет использоваться для метода 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 ), я создал Broadcast Receiver в MainActivity.java .
В Broadcast я вызываю метод 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 = ноль и Широта / Долгота = NaN / NaN .
Как и в методе updateFlightController () , он остается в цикле
и сохраните некоторые старые значения.
Я что-то пропустил?