diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index a88e961dc..b796bbc0d 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -1044,11 +1044,8 @@ public class MwmActivity extends BaseMwmFragmentActivity if (isFullscreen()) setFullscreen(false); - if (LocationState.getMode() == LocationState.NOT_FOLLOW_NO_POSITION) - { - // Calls onMyPositionModeChanged(PENDING_POSITION). - LocationState.nativeSwitchToNextMode(); - } + // Calls onMyPositionModeChanged(PENDING_POSITION). + LocationState.nativeStartPendingPositionMode(); MapObject startPoint = MwmApplication.from(this).getLocationHelper().getMyPosition(); RoutingController.get().prepare(startPoint, endPoint); @@ -2016,8 +2013,7 @@ public class MwmActivity extends BaseMwmFragmentActivity { final boolean hasFineLocationPermission = LocationUtils.checkFineLocationPermission(this); - if (LocationState.getMode() == LocationState.NOT_FOLLOW_NO_POSITION) - LocationState.nativeSwitchToNextMode(); + LocationState.nativeStartPendingPositionMode(); if (requestedForRecording && hasFineLocationPermission) startTrackRecording(); @@ -2140,11 +2136,9 @@ public class MwmActivity extends BaseMwmFragmentActivity } Logger.i(LOCATION_TAG, "Location resolution has been granted, restarting location"); - if (LocationState.getMode() == LocationState.NOT_FOLLOW_NO_POSITION) - { - // Calls onMyPositionModeChanged(PENDING_POSITION). - LocationState.nativeSwitchToNextMode(); - } + + // Calls onMyPositionModeChanged(PENDING_POSITION). + LocationState.nativeStartPendingPositionMode(); } /** diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.cpp index d747c2984..5ddd5f887 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.cpp @@ -696,6 +696,12 @@ void Framework::SwitchMyPositionNextMode() m_work.SwitchMyPositionNextMode(); } +void Framework::StartPendingPositionMode() +{ + ASSERT(IsDrapeEngineCreated(), ()); + m_work.StartPendingPositionMode(); +} + void Framework::SetupWidget(gui::EWidget widget, float x, float y, dp::Anchor anchor) { m_guiPositions[widget] = gui::Position(m2::PointF(x, y), anchor); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp index 1531c0924..1feb1aa85 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp @@ -169,6 +169,7 @@ public: void SetMyPositionModeListener(location::TMyPositionModeChanged const & fn); location::EMyPositionMode GetMyPositionMode() const; void SwitchMyPositionNextMode(); + void StartPendingPositionMode(); void SetTrafficStateListener(TrafficManager::TrafficStateChangedFn const & fn); void SetTransitSchemeListener(TransitReadManager::TransitStateChangedFn const & fn); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/LocationState.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/LocationState.cpp index d89967c7c..7bae9bc4d 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/LocationState.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/LocationState.cpp @@ -31,6 +31,14 @@ JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeGet return g_framework->GetMyPositionMode(); } +// public static void nativeStartFindingPosition(); +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeStartPendingPositionMode(JNIEnv * env, + jclass clazz) +{ + ASSERT(g_framework, ()); + g_framework->StartPendingPositionMode(); +} + // public static void nativeSetListener(ModeChangeListener listener); JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeSetListener(JNIEnv * env, jclass clazz, jobject listener) diff --git a/android/sdk/src/main/java/app/organicmaps/sdk/location/LocationState.java b/android/sdk/src/main/java/app/organicmaps/sdk/location/LocationState.java index 2478a15cd..a87dff9b2 100644 --- a/android/sdk/src/main/java/app/organicmaps/sdk/location/LocationState.java +++ b/android/sdk/src/main/java/app/organicmaps/sdk/location/LocationState.java @@ -42,6 +42,7 @@ public final class LocationState public static native void nativeSwitchToNextMode(); @Value private static native int nativeGetMode(); + public static native void nativeStartPendingPositionMode(); public static native void nativeSetListener(@NonNull ModeChangeListener listener); public static native void nativeRemoveListener(); diff --git a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm index 2551a1d76..9222401c3 100644 --- a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm +++ b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm @@ -15,7 +15,7 @@ + (void)processFirstLaunch:(BOOL)hasLocation { auto &f = GetFramework(); if (!hasLocation) - f.SwitchMyPositionNextMode(); + f.StartPendingPositionMode(); else f.RunFirstLaunchAnimation(); } diff --git a/iphone/Maps/Classes/CustomAlert/DefaultAlert/MWMDefaultAlert.mm b/iphone/Maps/Classes/CustomAlert/DefaultAlert/MWMDefaultAlert.mm index 977c83e7c..69c3c79bd 100644 --- a/iphone/Maps/Classes/CustomAlert/DefaultAlert/MWMDefaultAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/DefaultAlert/MWMDefaultAlert.mm @@ -195,7 +195,7 @@ static NSString *const kDefaultAlertNibName = @"MWMDefaultAlert"; + (instancetype)disabledLocationAlert { MWMVoidBlock action = ^{ - GetFramework().SwitchMyPositionNextMode(); + GetFramework().StartPendingPositionMode(); }; return [self defaultAlertWithTitle:L(@"dialog_routing_location_turn_on") message:L(@"dialog_routing_location_unknown_turn_on")