diff options
Diffstat (limited to 'platform')
5 files changed, 34 insertions, 3 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java index f49d80d704..20fa2e7d52 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java @@ -197,6 +197,9 @@ public class RuntimeStyleActivity extends AppCompatActivity { case R.id.action_numeric_filter: styleNumericFillLayer(); return true; + case R.id.action_bring_water_to_front: + bringWaterToFront(); + return true; default: return super.onOptionsItemSelected(item); } @@ -572,6 +575,16 @@ public class RuntimeStyleActivity extends AppCompatActivity { }, 2000); } + private void bringWaterToFront() { + Layer water = mapboxMap.getLayer("water"); + if (water != null) { + mapboxMap.removeLayer(water); + mapboxMap.addLayerAt(water, mapboxMap.getLayers().size() - 1); + } else { + Toast.makeText(this, "No water layer in this style", Toast.LENGTH_SHORT).show(); + } + } + private static class DefaultCallback implements MapboxMap.CancelableCallback { @Override diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_runtime_style.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_runtime_style.xml index 5c77179272..e3d7c8cfa0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_runtime_style.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_runtime_style.xml @@ -66,4 +66,8 @@ android:id="@+id/action_numeric_filter" android:title="@string/apply_numeric_fill_filter" mapbox:showAsAction="never" /> + <item + android:id="@+id/action_bring_water_to_front" + android:title="@string/bring_water_to_front" + mapbox:showAsAction="never" /> </menu> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml index 6d94c03529..e3cdc06dc1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml @@ -79,6 +79,7 @@ <string name="apply_filtered_fill">Apply filtered fill</string> <string name="apply_filtered_line">Apply filtered line</string> <string name="apply_numeric_fill_filter">Apply numeric fill filter</string> + <string name="bring_water_to_front">Bring water to front</string> <string name="toggle_text_size">Toggle text size</string> <string name="toggle_text_field_contents">Toggle text field contents</string> <string name="toggle_text_font">Toggle text font</string> diff --git a/platform/android/src/android_renderer_frontend.cpp b/platform/android/src/android_renderer_frontend.cpp index 2a03d9de9e..8b4a25a4d9 100644 --- a/platform/android/src/android_renderer_frontend.cpp +++ b/platform/android/src/android_renderer_frontend.cpp @@ -4,6 +4,7 @@ #include <mbgl/renderer/renderer.hpp> #include <mbgl/renderer/renderer_observer.hpp> #include <mbgl/storage/file_source.hpp> +#include <mbgl/util/async_task.hpp> #include <mbgl/util/thread.hpp> #include <mbgl/util/run_loop.hpp> @@ -56,7 +57,11 @@ private: AndroidRendererFrontend::AndroidRendererFrontend(MapRenderer& mapRenderer_) : mapRenderer(mapRenderer_) - , mapRunLoop(util::RunLoop::Get()) { + , mapRunLoop(util::RunLoop::Get()) + , updateAsyncTask(std::make_unique<util::AsyncTask>([this]() { + mapRenderer.update(std::move(updateParams)); + mapRenderer.requestRender(); + })) { } AndroidRendererFrontend::~AndroidRendererFrontend() = default; @@ -73,8 +78,8 @@ void AndroidRendererFrontend::setObserver(RendererObserver& observer) { } void AndroidRendererFrontend::update(std::shared_ptr<UpdateParameters> params) { - mapRenderer.update(std::move(params)); - mapRenderer.requestRender(); + updateParams = std::move(params); + updateAsyncTask->send(); } void AndroidRendererFrontend::reduceMemoryUse() { diff --git a/platform/android/src/android_renderer_frontend.hpp b/platform/android/src/android_renderer_frontend.hpp index b61904e388..9bd64e4819 100644 --- a/platform/android/src/android_renderer_frontend.hpp +++ b/platform/android/src/android_renderer_frontend.hpp @@ -18,6 +18,12 @@ namespace mbgl { class RenderedQueryOptions; class SourceQueryOptions; +namespace util { + +class AsyncTask; + +} // namespace util + namespace android { class AndroidRendererFrontend : public RendererFrontend { @@ -44,6 +50,8 @@ public: private: MapRenderer& mapRenderer; util::RunLoop* mapRunLoop; + std::unique_ptr<util::AsyncTask> updateAsyncTask; + std::shared_ptr<UpdateParameters> updateParams; }; } // namespace android |