diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-02-24 16:15:00 +0200 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-02-28 09:33:04 -0800 |
commit | f0de56cffae4922db80c74f751f14ac3ed572b31 (patch) | |
tree | 2e131dea7c02183a7deb382f20fb89fbf235be4f /platform | |
parent | ec1dc2622b633227321ffde962ecc7c85b751190 (diff) | |
download | qtlocation-mapboxgl-f0de56cffae4922db80c74f751f14ac3ed572b31.tar.gz |
[android] source list accessor + example
Diffstat (limited to 'platform')
7 files changed, 81 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index cf56f63469..84bc759ebe 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -291,6 +291,22 @@ public final class MapboxMap { nativeMapView.removeLayer(layer); } + /** + * Retrieve all the sources in the style + * + * @return all the sources in the current style + */ + @UiThread + public List<Source> getSources() { + return nativeMapView.getSources(); + } + + /** + * Retrieve a source by id + * + * @param sourceId the source's id + * @return the source if present in the current style + */ @Nullable @UiThread public Source getSource(@NonNull String sourceId) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index a3ec1cc3c3..1ec7f1687f 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -782,6 +782,13 @@ final class NativeMapView { nativeRemoveLayer(layer.getNativePtr()); } + public List<Source> getSources() { + if (isDestroyedOn("getSources")) { + return null; + } + return Arrays.asList(nativeGetSources()); + } + public Source getSource(@NonNull String sourceId) { if (isDestroyedOn("getSource")) { return null; @@ -1071,6 +1078,8 @@ final class NativeMapView { private native void nativeRemoveLayer(long layerId); + private native Source[] nativeGetSources(); + private native Source nativeGetSource(String sourceId); private native void nativeAddSource(long nativeSourcePtr) throws CannotAddSourceException; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java index f24e6dbf52..30d71c0ffc 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java @@ -86,6 +86,26 @@ public class RuntimeStyleTests { } @Test + public void testListSources() { + ViewUtils.checkViewIsDisplayed(R.id.mapView); + onView(withId(R.id.mapView)).perform(new BaseViewAction() { + + @Override + public void perform(UiController uiController, View view) { + MapboxMap mapboxMap = rule.getActivity().getMapboxMap(); + + List<Source> sources = mapboxMap.getSources(); + assertNotNull(sources); + assertTrue(sources.size() > 0); + for (Source source: sources) { + assertNotNull(source); + } + } + + }); + } + + @Test public void testAddRemoveSource() { ViewUtils.checkViewIsDisplayed(R.id.mapView); 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 8624feaecb..cd50dc2f00 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 @@ -154,6 +154,9 @@ public class RuntimeStyleActivity extends AppCompatActivity { case R.id.action_list_layers: listLayers(); return true; + case R.id.action_list_sources: + listSources(); + return true; case R.id.action_water_color: setWaterColor(); return true; @@ -211,6 +214,16 @@ public class RuntimeStyleActivity extends AppCompatActivity { Toast.makeText(this, builder.toString(), Toast.LENGTH_LONG).show(); } + private void listSources() { + List<Source> sources = mapboxMap.getSources(); + StringBuilder builder = new StringBuilder("Sources:"); + for (Source source : sources) { + builder.append("\n"); + builder.append(source.getId()); + } + Toast.makeText(this, builder.toString(), Toast.LENGTH_LONG).show(); + } + private void setLayerInvisible() { String[] roadLayers = new String[] {"water"}; for (String roadLayer : roadLayers) { 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 4b1f928d18..86f0b4faee 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 @@ -7,6 +7,10 @@ android:title="List all layers in the style" mapbox:showAsAction="never" /> <item + android:id="@+id/action_list_sources" + android:title="List all sources in the style" + mapbox:showAsAction="never" /> + <item android:id="@+id/action_water_color" android:title="Color the water" mapbox:showAsAction="never" /> diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp index ddc5447347..af1473ca34 100755 --- a/platform/android/src/native_map_view.cpp +++ b/platform/android/src/native_map_view.cpp @@ -799,6 +799,22 @@ void NativeMapView::removeLayer(JNIEnv&, jlong layerPtr) { } } +jni::Array<jni::Object<Source>> NativeMapView::getSources(JNIEnv& env) { + // Get the core sources + std::vector<style::Source*> sources = map->getSources(); + + // Convert + jni::Array<jni::Object<Source>> jSources = jni::Array<jni::Object<Source>>::New(env, sources.size(), Source::javaClass); + int index = 0; + for (auto source : sources) { + auto jSource = jni::Object<Source>(createJavaSourcePeer(env, *map, *source)); + jSources.Set(env, index, jSource); + jni::DeleteLocalRef(env, jSource); + index++; + } + + return jSources; +} jni::Object<Source> NativeMapView::getSource(JNIEnv& env, jni::String sourceId) { // Find the source @@ -1356,6 +1372,7 @@ void NativeMapView::registerNative(jni::JNIEnv& env) { METHOD(&NativeMapView::addLayer, "nativeAddLayer"), METHOD(&NativeMapView::removeLayerById, "nativeRemoveLayerById"), METHOD(&NativeMapView::removeLayer, "nativeRemoveLayer"), + METHOD(&NativeMapView::getSources, "nativeGetSources"), METHOD(&NativeMapView::getSource, "nativeGetSource"), METHOD(&NativeMapView::addSource, "nativeAddSource"), METHOD(&NativeMapView::removeSourceById, "nativeRemoveSourceById"), diff --git a/platform/android/src/native_map_view.hpp b/platform/android/src/native_map_view.hpp index fb6c7fa69f..b34eb2cab5 100755 --- a/platform/android/src/native_map_view.hpp +++ b/platform/android/src/native_map_view.hpp @@ -211,6 +211,8 @@ public: void removeLayer(JNIEnv&, jlong); + jni::Array<jni::Object<Source>> getSources(JNIEnv&); + jni::Object<Source> getSource(JNIEnv&, jni::String); void addSource(JNIEnv&, jni::jlong); |