summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortobrun <tobrun.van.nuland@gmail.com>2018-09-10 14:38:08 +0200
committertobrun <tobrun.van.nuland@gmail.com>2018-09-11 16:04:10 +0200
commitc045468d2fdec87553562748ec8760aca0032920 (patch)
tree8b4ff584e7a9dc4b4922947bd4e421d89a528f0c
parentbc55d0ff2d0cd7cfbcd92378a539dd0a81808865 (diff)
downloadqtlocation-mapboxgl-c045468d2fdec87553562748ec8760aca0032920.tar.gz
[android] - add cleanup ondestroy method, implement list of listeners
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/annotationManager.java.ejs48
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/circle/CircleManager.java46
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/Fill.java5
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/FillManager.java47
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/line/LineManager.java47
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/symbol/SymbolManager.java64
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/annotations/SymbolManagerTest.java13
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java25
8 files changed, 224 insertions, 71 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/annotationManager.java.ejs b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/annotationManager.java.ejs
index c6fe161348..d9a4deb9d4 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/annotationManager.java.ejs
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/annotationManager.java.ejs
@@ -36,11 +36,13 @@ public class <%- camelize(type) %>Manager {
public static final String ID_GEOJSON_LAYER = "mapbox-android-<%- type %>-layer";
// map integration components
+ private MapboxMap mapboxMap;
private GeoJsonSource geoJsonSource;
private <%- camelize(type) %>Layer layer;
// callback listeners
- private On<%- camelize(type) %>ClickListener <%- type %>ClickListener;
+ private List<On<%- camelize(type) %>ClickListener> <%- type %>ClickListeners = new ArrayList<>();
+ private final MapClickResolver mapClickResolver;
// internal data set
private final LongSparseArray<<%- camelize(type) %>> <%- type %>s = new LongSparseArray<>();
@@ -70,11 +72,21 @@ public class <%- camelize(type) %>Manager {
*/
@VisibleForTesting
public <%- camelize(type) %>Manager(MapboxMap mapboxMap, @NonNull GeoJsonSource geoJsonSource, <%- camelize(type) %>Layer layer) {
+ this.mapboxMap = mapboxMap;
this.geoJsonSource = geoJsonSource;
this.layer = layer;
mapboxMap.addSource(geoJsonSource);
mapboxMap.addLayer(layer);
- mapboxMap.addOnMapClickListener(new MapClickResolver(mapboxMap));
+ mapboxMap.addOnMapClickListener(mapClickResolver = new MapClickResolver(mapboxMap));
+ }
+
+ /**
+ * Cleanup <%- type %> manager, used to clear listeners
+ */
+ @UiThread
+ public void onDestroy() {
+ mapboxMap.removeOnMapClickListener(mapClickResolver);
+ <%- type %>ClickListeners.clear();
}
<% if (type === "circle" || type === "symbol") { -%>
@@ -162,21 +174,31 @@ public class <%- camelize(type) %>Manager {
}
/**
- * Set a callback to be invoked when a <%- type %> has been clicked.
- * <p>
- * To unset, use a null argument.
- * </p>
+ * Add a callback to be invoked when a <%- type %> has been clicked.
*
- * @param <%- type %>ClickListener the callback to be invoked when a <%- type %> is clicked, or null to unset
+ * @param listener the callback to be invoked when a <%- type %> is clicked
*/
- public void setOn<%- camelize(type) %>ClickListener(@Nullable On<%- camelize(type) %>ClickListener <%- type %>ClickListener) {
- this.<%- type %>ClickListener = <%- type %>ClickListener;
+ @UiThread
+ public void addOn<%- camelize(type) %>ClickListener(@NonNull On<%- camelize(type) %>ClickListener listener) {
+ <%- type %>ClickListeners.add(listener);
+ }
+
+ /**
+ * Remove a previously added callback that was to be invoked when <%- type %> has been clicked.
+ *
+ * @param listener the callback to be removed
+ */
+ @UiThread
+ public void removeOn<%- camelize(type) %>ClickListener(@NonNull On<%- camelize(type) %>ClickListener listener) {
+ if (<%- type %>ClickListeners.contains(listener)) {
+ <%- type %>ClickListeners.remove(listener);
+ }
}
private static PropertyValue<?>[] getLayerDefinition() {
return new PropertyValue[]{
<% for (const property of properties) { -%>
-<% if (supportsPropertyFunction(property)) { -%>
+<% if (supportsPropertyFunction(property) && property.name !== "fill-pattern" && property.name !== "line-pattern") { -%>
<%- camelizeWithLeadingLowercase(property.name) %>(get("<%- property.name %>")),
<% } -%><% } -%>
};
@@ -218,7 +240,7 @@ public class <%- camelize(type) %>Manager {
@Override
public void onMapClick(@NonNull LatLng point) {
- if (<%- type %>ClickListener == null) {
+ if (<%- type %>ClickListeners.isEmpty()) {
return;
}
@@ -228,7 +250,9 @@ public class <%- camelize(type) %>Manager {
long <%- type %>Id = features.get(0).getProperty(<%- camelize(type) %>.ID_KEY).getAsLong();
<%- camelize(type) %> <%- type %> = <%- type %>s.get(<%- type %>Id);
if (<%- type %> != null) {
- <%- type %>ClickListener.on<%- camelize(type) %>Click(<%- type %>s.get(<%- type %>Id));
+ for (On<%- camelize(type) %>ClickListener listener : <%- type %>ClickListeners) {
+ listener.on<%- camelize(type) %>Click(<%- type %>);
+ }
}
}
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/circle/CircleManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/circle/CircleManager.java
index 4a15b021a5..e371eaa31d 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/circle/CircleManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/circle/CircleManager.java
@@ -31,11 +31,13 @@ public class CircleManager {
public static final String ID_GEOJSON_LAYER = "mapbox-android-circle-layer";
// map integration components
+ private MapboxMap mapboxMap;
private GeoJsonSource geoJsonSource;
private CircleLayer layer;
// callback listeners
- private OnCircleClickListener circleClickListener;
+ private List<OnCircleClickListener> circleClickListeners = new ArrayList<>();
+ private final MapClickResolver mapClickResolver;
// internal data set
private final LongSparseArray<Circle> circles = new LongSparseArray<>();
@@ -65,11 +67,21 @@ public class CircleManager {
*/
@VisibleForTesting
public CircleManager(MapboxMap mapboxMap, @NonNull GeoJsonSource geoJsonSource, CircleLayer layer) {
+ this.mapboxMap = mapboxMap;
this.geoJsonSource = geoJsonSource;
this.layer = layer;
mapboxMap.addSource(geoJsonSource);
mapboxMap.addLayer(layer);
- mapboxMap.addOnMapClickListener(new MapClickResolver(mapboxMap));
+ mapboxMap.addOnMapClickListener(mapClickResolver = new MapClickResolver(mapboxMap));
+ }
+
+ /**
+ * Cleanup circle manager, used to clear listeners
+ */
+ @UiThread
+ public void onDestroy() {
+ mapboxMap.removeOnMapClickListener(mapClickResolver);
+ circleClickListeners.clear();
}
/**
@@ -123,15 +135,25 @@ public class CircleManager {
}
/**
- * Set a callback to be invoked when a circle has been clicked.
- * <p>
- * To unset, use a null argument.
- * </p>
+ * Add a callback to be invoked when a circle has been clicked.
*
- * @param circleClickListener the callback to be invoked when a circle is clicked, or null to unset
+ * @param listener the callback to be invoked when a circle is clicked
*/
- public void setOnCircleClickListener(@Nullable OnCircleClickListener circleClickListener) {
- this.circleClickListener = circleClickListener;
+ @UiThread
+ public void addOnCircleClickListener(@NonNull OnCircleClickListener listener) {
+ circleClickListeners.add(listener);
+ }
+
+ /**
+ * Remove a previously added callback that was to be invoked when circle has been clicked.
+ *
+ * @param listener the callback to be removed
+ */
+ @UiThread
+ public void removeOnCircleClickListener(@NonNull OnCircleClickListener listener) {
+ if (circleClickListeners.contains(listener)) {
+ circleClickListeners.remove(listener);
+ }
}
private static PropertyValue<?>[] getLayerDefinition() {
@@ -232,7 +254,7 @@ public class CircleManager {
@Override
public void onMapClick(@NonNull LatLng point) {
- if (circleClickListener == null) {
+ if (circleClickListeners.isEmpty()) {
return;
}
@@ -242,7 +264,9 @@ public class CircleManager {
long circleId = features.get(0).getProperty(Circle.ID_KEY).getAsLong();
Circle circle = circles.get(circleId);
if (circle != null) {
- circleClickListener.onCircleClick(circles.get(circleId));
+ for (OnCircleClickListener listener : circleClickListeners) {
+ listener.onCircleClick(circle);
+ }
}
}
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/Fill.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/Fill.java
index b9714c5e73..bd3da0c57f 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/Fill.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/Fill.java
@@ -79,11 +79,6 @@ public class Fill {
fillManager.updateSource();
}
- public void setGeometry(Geometry geometry){
- geometry = geometry;
- fillManager.updateSource();
- }
-
// Property accessors
/**
* Get the FillOpacity property
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/FillManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/FillManager.java
index 9fcdb92544..e9a5ee6680 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/FillManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/fill/FillManager.java
@@ -31,11 +31,13 @@ public class FillManager {
public static final String ID_GEOJSON_LAYER = "mapbox-android-fill-layer";
// map integration components
+ private MapboxMap mapboxMap;
private GeoJsonSource geoJsonSource;
private FillLayer layer;
// callback listeners
- private OnFillClickListener fillClickListener;
+ private List<OnFillClickListener> fillClickListeners = new ArrayList<>();
+ private final MapClickResolver mapClickResolver;
// internal data set
private final LongSparseArray<Fill> fills = new LongSparseArray<>();
@@ -65,11 +67,21 @@ public class FillManager {
*/
@VisibleForTesting
public FillManager(MapboxMap mapboxMap, @NonNull GeoJsonSource geoJsonSource, FillLayer layer) {
+ this.mapboxMap = mapboxMap;
this.geoJsonSource = geoJsonSource;
this.layer = layer;
mapboxMap.addSource(geoJsonSource);
mapboxMap.addLayer(layer);
- mapboxMap.addOnMapClickListener(new MapClickResolver(mapboxMap));
+ mapboxMap.addOnMapClickListener(mapClickResolver = new MapClickResolver(mapboxMap));
+ }
+
+ /**
+ * Cleanup fill manager, used to clear listeners
+ */
+ @UiThread
+ public void onDestroy() {
+ mapboxMap.removeOnMapClickListener(mapClickResolver);
+ fillClickListeners.clear();
}
/**
@@ -123,15 +135,25 @@ public class FillManager {
}
/**
- * Set a callback to be invoked when a fill has been clicked.
- * <p>
- * To unset, use a null argument.
- * </p>
+ * Add a callback to be invoked when a fill has been clicked.
*
- * @param fillClickListener the callback to be invoked when a fill is clicked, or null to unset
+ * @param listener the callback to be invoked when a fill is clicked
*/
- public void setOnFillClickListener(@Nullable OnFillClickListener fillClickListener) {
- this.fillClickListener = fillClickListener;
+ @UiThread
+ public void addOnFillClickListener(@NonNull OnFillClickListener listener) {
+ fillClickListeners.add(listener);
+ }
+
+ /**
+ * Remove a previously added callback that was to be invoked when fill has been clicked.
+ *
+ * @param listener the callback to be removed
+ */
+ @UiThread
+ public void removeOnFillClickListener(@NonNull OnFillClickListener listener) {
+ if (fillClickListeners.contains(listener)) {
+ fillClickListeners.remove(listener);
+ }
}
private static PropertyValue<?>[] getLayerDefinition() {
@@ -139,7 +161,6 @@ public class FillManager {
fillOpacity(get("fill-opacity")),
fillColor(get("fill-color")),
fillOutlineColor(get("fill-outline-color")),
- //fillPattern(get("fill-pattern")),
};
}
@@ -211,7 +232,7 @@ public class FillManager {
@Override
public void onMapClick(@NonNull LatLng point) {
- if (fillClickListener == null) {
+ if (fillClickListeners.isEmpty()) {
return;
}
@@ -221,7 +242,9 @@ public class FillManager {
long fillId = features.get(0).getProperty(Fill.ID_KEY).getAsLong();
Fill fill = fills.get(fillId);
if (fill != null) {
- fillClickListener.onFillClick(fills.get(fillId));
+ for (OnFillClickListener listener : fillClickListeners) {
+ listener.onFillClick(fill);
+ }
}
}
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/line/LineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/line/LineManager.java
index cb4f794520..a7865a62cb 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/line/LineManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/line/LineManager.java
@@ -31,11 +31,13 @@ public class LineManager {
public static final String ID_GEOJSON_LAYER = "mapbox-android-line-layer";
// map integration components
+ private MapboxMap mapboxMap;
private GeoJsonSource geoJsonSource;
private LineLayer layer;
// callback listeners
- private OnLineClickListener lineClickListener;
+ private List<OnLineClickListener> lineClickListeners = new ArrayList<>();
+ private final MapClickResolver mapClickResolver;
// internal data set
private final LongSparseArray<Line> lines = new LongSparseArray<>();
@@ -65,11 +67,21 @@ public class LineManager {
*/
@VisibleForTesting
public LineManager(MapboxMap mapboxMap, @NonNull GeoJsonSource geoJsonSource, LineLayer layer) {
+ this.mapboxMap = mapboxMap;
this.geoJsonSource = geoJsonSource;
this.layer = layer;
mapboxMap.addSource(geoJsonSource);
mapboxMap.addLayer(layer);
- mapboxMap.addOnMapClickListener(new MapClickResolver(mapboxMap));
+ mapboxMap.addOnMapClickListener(mapClickResolver = new MapClickResolver(mapboxMap));
+ }
+
+ /**
+ * Cleanup line manager, used to clear listeners
+ */
+ @UiThread
+ public void onDestroy() {
+ mapboxMap.removeOnMapClickListener(mapClickResolver);
+ lineClickListeners.clear();
}
/**
@@ -123,15 +135,25 @@ public class LineManager {
}
/**
- * Set a callback to be invoked when a line has been clicked.
- * <p>
- * To unset, use a null argument.
- * </p>
+ * Add a callback to be invoked when a line has been clicked.
*
- * @param lineClickListener the callback to be invoked when a line is clicked, or null to unset
+ * @param listener the callback to be invoked when a line is clicked
*/
- public void setOnLineClickListener(@Nullable OnLineClickListener lineClickListener) {
- this.lineClickListener = lineClickListener;
+ @UiThread
+ public void addOnLineClickListener(@NonNull OnLineClickListener listener) {
+ lineClickListeners.add(listener);
+ }
+
+ /**
+ * Remove a previously added callback that was to be invoked when line has been clicked.
+ *
+ * @param listener the callback to be removed
+ */
+ @UiThread
+ public void removeOnLineClickListener(@NonNull OnLineClickListener listener) {
+ if (lineClickListeners.contains(listener)) {
+ lineClickListeners.remove(listener);
+ }
}
private static PropertyValue<?>[] getLayerDefinition() {
@@ -143,7 +165,6 @@ public class LineManager {
lineGapWidth(get("line-gap-width")),
lineOffset(get("line-offset")),
lineBlur(get("line-blur")),
- linePattern(get("line-pattern")),
};
}
@@ -269,7 +290,7 @@ public class LineManager {
@Override
public void onMapClick(@NonNull LatLng point) {
- if (lineClickListener == null) {
+ if (lineClickListeners.isEmpty()) {
return;
}
@@ -279,7 +300,9 @@ public class LineManager {
long lineId = features.get(0).getProperty(Line.ID_KEY).getAsLong();
Line line = lines.get(lineId);
if (line != null) {
- lineClickListener.onLineClick(lines.get(lineId));
+ for (OnLineClickListener listener : lineClickListeners) {
+ listener.onLineClick(line);
+ }
}
}
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/symbol/SymbolManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/symbol/SymbolManager.java
index 9a12e65c1a..ad10d45c2d 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/symbol/SymbolManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/symbol/SymbolManager.java
@@ -31,11 +31,13 @@ public class SymbolManager {
public static final String ID_GEOJSON_LAYER = "mapbox-android-symbol-layer";
// map integration components
+ private MapboxMap mapboxMap;
private GeoJsonSource geoJsonSource;
private SymbolLayer layer;
// callback listeners
- private OnSymbolClickListener symbolClickListener;
+ private List<OnSymbolClickListener> symbolClickListeners = new ArrayList<>();
+ private final MapClickResolver mapClickResolver;
// internal data set
private final LongSparseArray<Symbol> symbols = new LongSparseArray<>();
@@ -65,11 +67,21 @@ public class SymbolManager {
*/
@VisibleForTesting
public SymbolManager(MapboxMap mapboxMap, @NonNull GeoJsonSource geoJsonSource, SymbolLayer layer) {
+ this.mapboxMap = mapboxMap;
this.geoJsonSource = geoJsonSource;
this.layer = layer;
mapboxMap.addSource(geoJsonSource);
mapboxMap.addLayer(layer);
- mapboxMap.addOnMapClickListener(new MapClickResolver(mapboxMap));
+ mapboxMap.addOnMapClickListener(mapClickResolver = new MapClickResolver(mapboxMap));
+ }
+
+ /**
+ * Cleanup symbol manager, used to clear listeners
+ */
+ @UiThread
+ public void onDestroy() {
+ mapboxMap.removeOnMapClickListener(mapClickResolver);
+ symbolClickListeners.clear();
}
/**
@@ -123,15 +135,25 @@ public class SymbolManager {
}
/**
- * Set a callback to be invoked when a symbol has been clicked.
- * <p>
- * To unset, use a null argument.
- * </p>
+ * Add a callback to be invoked when a symbol has been clicked.
*
- * @param symbolClickListener the callback to be invoked when a symbol is clicked, or null to unset
+ * @param listener the callback to be invoked when a symbol is clicked
*/
- public void setOnSymbolClickListener(@Nullable OnSymbolClickListener symbolClickListener) {
- this.symbolClickListener = symbolClickListener;
+ @UiThread
+ public void addOnSymbolClickListener(@NonNull OnSymbolClickListener listener) {
+ symbolClickListeners.add(listener);
+ }
+
+ /**
+ * Remove a previously added callback that was to be invoked when symbol has been clicked.
+ *
+ * @param listener the callback to be removed
+ */
+ @UiThread
+ public void removeOnSymbolClickListener(@NonNull OnSymbolClickListener listener) {
+ if (symbolClickListeners.contains(listener)) {
+ symbolClickListeners.remove(listener);
+ }
}
private static PropertyValue<?>[] getLayerDefinition() {
@@ -220,6 +242,24 @@ public class SymbolManager {
}
/**
+ * Get the SymbolZOrder property
+ *
+ * @return property wrapper value around String
+ */
+ public String getSymbolZOrder() {
+ return layer.getSymbolZOrder().value;
+ }
+
+ /**
+ * Set the SymbolZOrder property
+ *
+ * @param value property wrapper value around String
+ */
+ public void setSymbolZOrder(String value) {
+ layer.setProperties(symbolZOrder(value));
+ }
+
+ /**
* Get the IconAllowOverlap property
*
* @return property wrapper value around Boolean
@@ -628,7 +668,7 @@ public class SymbolManager {
@Override
public void onMapClick(@NonNull LatLng point) {
- if (symbolClickListener == null) {
+ if (symbolClickListeners.isEmpty()) {
return;
}
@@ -638,7 +678,9 @@ public class SymbolManager {
long symbolId = features.get(0).getProperty(Symbol.ID_KEY).getAsLong();
Symbol symbol = symbols.get(symbolId);
if (symbol != null) {
- symbolClickListener.onSymbolClick(symbols.get(symbolId));
+ for (OnSymbolClickListener listener : symbolClickListeners) {
+ listener.onSymbolClick(symbol);
+ }
}
}
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/annotations/SymbolManagerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/annotations/SymbolManagerTest.java
index 2f36e31e2b..7f1708eb82 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/annotations/SymbolManagerTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/annotations/SymbolManagerTest.java
@@ -80,6 +80,19 @@ public class SymbolManagerTest extends BaseActivityTest {
}
@Test
+ public void testSymbolZOrderAsConstant() {
+ validateTestSetup();
+ setupSymbolManager();
+ Timber.i("symbol-z-order");
+ invoke(mapboxMap, (uiController, mapboxMap) -> {
+ assertNotNull(symbolManager);
+
+ symbolManager.setSymbolZOrder(SYMBOL_Z_ORDER_VIEWPORT_Y);
+ assertEquals((String) symbolManager.getSymbolZOrder(), (String) SYMBOL_Z_ORDER_VIEWPORT_Y);
+ });
+ }
+
+ @Test
public void testIconAllowOverlapAsConstant() {
validateTestSetup();
setupSymbolManager();
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java
index 228badf0ff..34cf95e2a0 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java
@@ -38,6 +38,11 @@ public class SimpleMapActivity extends AppCompatActivity {
private static final String MAKI_ICON_CAR = "car-15";
private static final String MAKI_ICON_CAFE = "cafe-15";
+ private SymbolManager symbolManager;
+ private FillManager fillManager;
+ private CircleManager circleManager;
+ private LineManager lineManager;
+
private MapView mapView;
private Symbol symbol;
private Circle circle;
@@ -61,8 +66,8 @@ public class SimpleMapActivity extends AppCompatActivity {
private void createSymbols(MapboxMap mapboxMap) {
// create symbol manager
- SymbolManager symbolManager = new SymbolManager(mapboxMap);
- symbolManager.setOnSymbolClickListener(symbol -> Timber.e("Symbol clicked with id: %s", symbol.getId()));
+ symbolManager = new SymbolManager(mapboxMap);
+ symbolManager.addOnSymbolClickListener(symbol -> Timber.e("Symbol clicked with id: %s", symbol.getId()));
// set non data driven properties
symbolManager.setIconAllowOverlap(true);
@@ -83,8 +88,8 @@ public class SimpleMapActivity extends AppCompatActivity {
private void createCircles(MapboxMap mapboxMap) {
// create circle manager
- CircleManager circleManager = new CircleManager(mapboxMap);
- circleManager.setOnCircleClickListener(circle -> Timber.e("Symbol clicked with id: %s", circle.getId()));
+ circleManager = new CircleManager(mapboxMap);
+ circleManager.addOnCircleClickListener(circle -> Timber.e("Circle clicked with id: %s", circle.getId()));
// set non data driven properties
// circleManager.
@@ -98,8 +103,8 @@ public class SimpleMapActivity extends AppCompatActivity {
private void createLines(MapboxMap mapboxMap) {
// create line manager
- LineManager lineManager = new LineManager(mapboxMap);
- lineManager.setOnLineClickListener(line -> Timber.e("Symbol clicked with id: %s", line.getId()));
+ lineManager = new LineManager(mapboxMap);
+ lineManager.addOnLineClickListener(line -> Timber.e("Line clicked with id: %s", line.getId()));
// set non data driven properties
lineManager.setLineCap(LINE_CAP_ROUND);
@@ -117,8 +122,8 @@ public class SimpleMapActivity extends AppCompatActivity {
private void createFills(MapboxMap mapboxMap) {
// create fill manager
- FillManager fillManager = new FillManager(mapboxMap);
- fillManager.setOnFillClickListener(fill -> Timber.e("Symbol clicked with id: %s", fill.getId()));
+ fillManager = new FillManager(mapboxMap);
+ fillManager.addOnFillClickListener(fill -> Timber.e("Fill clicked with id: %s", fill.getId()));
// set non data driven properties
//fillManager.
@@ -207,6 +212,10 @@ public class SimpleMapActivity extends AppCompatActivity {
@Override
protected void onDestroy() {
super.onDestroy();
+ symbolManager.onDestroy();
+ lineManager.onDestroy();
+ circleManager.onDestroy();
+ fillManager.onDestroy();
mapView.onDestroy();
}