From 9077d9910f8a8bc0ce7510595b09ddb63e425002 Mon Sep 17 00:00:00 2001 From: Guardiola31337 Date: Mon, 3 Sep 2018 17:08:03 +0200 Subject: [PATCH] [LLP] prevent from showing the location layer on every location update - now location layer show method is called only once (when the first valid fix is received) --- .../plugins/locationlayer/LocationLayer.java | 4 ++++ .../plugins/locationlayer/LocationLayerPlugin.java | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayer.java b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayer.java index 0e7ce37a0..3f09cc94f 100644 --- a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayer.java +++ b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayer.java @@ -168,6 +168,10 @@ void hide() { } } + boolean isHidden() { + return isHidden; + } + void updateForegroundOffset(double tilt) { JsonArray foregroundJsonArray = new JsonArray(); foregroundJsonArray.add(0f); diff --git a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java index f599b8bf7..d6f57bdea 100644 --- a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java +++ b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java @@ -830,9 +830,7 @@ private void updateLocation(final Location location, boolean fromLastLocation) { return; } - if (isEnabled && isPluginStarted) { - locationLayer.show(); - } + showLocationLayerIfHidden(); if (!fromLastLocation) { staleStateManager.updateLatestLocationTime(); @@ -844,6 +842,13 @@ private void updateLocation(final Location location, boolean fromLastLocation) { lastLocation = location; } + private void showLocationLayerIfHidden() { + boolean isLocationLayerHidden = locationLayer.isHidden(); + if (isEnabled && isPluginStarted && isLocationLayerHidden) { + locationLayer.show(); + } + } + private void updateCompassHeading(float heading) { pluginAnimatorCoordinator.feedNewCompassBearing(heading, mapboxMap.getCameraPosition()); }