summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-02-24 16:15:00 +0200
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-02-28 09:33:04 -0800
commitf0de56cffae4922db80c74f751f14ac3ed572b31 (patch)
tree2e131dea7c02183a7deb382f20fb89fbf235be4f
parentec1dc2622b633227321ffde962ecc7c85b751190 (diff)
downloadqtlocation-mapboxgl-f0de56cffae4922db80c74f751f14ac3ed572b31.tar.gz
[android] source list accessor + example
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java16
-rwxr-xr-xplatform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java9
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java20
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java13
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_runtime_style.xml4
-rwxr-xr-xplatform/android/src/native_map_view.cpp17
-rwxr-xr-xplatform/android/src/native_map_view.hpp2
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);