diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/CircleActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/CircleActivity.java index f79bab1c8..c99a65df3 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/CircleActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/CircleActivity.java @@ -54,14 +54,20 @@ protected void onCreate(Bundle savedInstanceState) { // create circle manager circleManager = new CircleManager(mapView, mapboxMap, style); - circleManager.addClickListener(circle -> Toast.makeText(CircleActivity.this, - String.format("Circle clicked %s", circle.getId()), - Toast.LENGTH_SHORT - ).show()); - circleManager.addLongClickListener(circle -> Toast.makeText(CircleActivity.this, - String.format("Circle long clicked %s", circle.getId()), - Toast.LENGTH_SHORT - ).show()); + circleManager.addClickListener(circle -> { + Toast.makeText(CircleActivity.this, + String.format("Circle clicked %s", circle.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); + circleManager.addLongClickListener(circle -> { + Toast.makeText(CircleActivity.this, + String.format("Circle long clicked %s", circle.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); // create a fixed circle CircleOptions circleOptions = new CircleOptions() diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillActivity.java index 154007ef2..75be7a1cc 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillActivity.java @@ -49,15 +49,21 @@ protected void onCreate(Bundle savedInstanceState) { mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(2)); fillManager = new FillManager(mapView, mapboxMap, style); - fillManager.addClickListener(fill -> Toast.makeText(FillActivity.this, - String.format("Fill clicked %s with title: %s", fill.getId(), getTitleFromFill(fill)), - Toast.LENGTH_SHORT - ).show()); - - fillManager.addLongClickListener(fill -> Toast.makeText(FillActivity.this, - String.format("Fill long clicked %s with title: %s", fill.getId(), getTitleFromFill(fill)), - Toast.LENGTH_SHORT - ).show()); + fillManager.addClickListener(fill -> { + Toast.makeText(FillActivity.this, + String.format("Fill clicked %s with title: %s", fill.getId(), getTitleFromFill(fill)), + Toast.LENGTH_SHORT + ).show(); + return false; + }); + + fillManager.addLongClickListener(fill -> { + Toast.makeText(FillActivity.this, + String.format("Fill long clicked %s with title: %s", fill.getId(), getTitleFromFill(fill)), + Toast.LENGTH_SHORT + ).show(); + return false; + }); // create a fixed fill List innerLatLngs = new ArrayList<>(); diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillChangeActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillChangeActivity.java index 40a1eb086..528d7c960 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillChangeActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillChangeActivity.java @@ -80,10 +80,13 @@ protected void onCreate(Bundle savedInstanceState) { public void onMapReady(@NonNull MapboxMap map) { map.setStyle(new Style.Builder().fromUri(Style.MAPBOX_STREETS), style -> { fillManager = new FillManager(mapView, map, style, "aerialway"); - fillManager.addClickListener(fill -> Toast.makeText( + fillManager.addClickListener(fill -> { + Toast.makeText( FillChangeActivity.this, "Clicked: " + fill.getId(), - Toast.LENGTH_SHORT).show()); + Toast.LENGTH_SHORT).show(); + return false; + }); fill = fillManager.create(new FillOptions() .withLatLngs(STAR_SHAPE_POINTS) diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java index 0d13e69f5..be12245e9 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java @@ -46,14 +46,20 @@ protected void onCreate(Bundle savedInstanceState) { mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(2)); lineManager = new LineManager(mapView, mapboxMap, style); - lineManager.addClickListener(line -> Toast.makeText(LineActivity.this, - String.format("Line clicked %s", line.getId()), - Toast.LENGTH_SHORT - ).show()); - lineManager.addLongClickListener(line -> Toast.makeText(LineActivity.this, - String.format("Line long clicked %s", line.getId()), - Toast.LENGTH_SHORT - ).show()); + lineManager.addClickListener(line -> { + Toast.makeText(LineActivity.this, + String.format("Line clicked %s", line.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); + lineManager.addLongClickListener(line -> { + Toast.makeText(LineActivity.this, + String.format("Line long clicked %s", line.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); // create a fixed line List latLngs = new ArrayList<>(); diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java index 5a7b00987..c0c90840e 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java @@ -73,10 +73,13 @@ protected void onCreate(Bundle savedInstanceState) { lineManager = new LineManager(mapView, mapboxMap, style); lines = lineManager.create(getAllPolylines()); - lineManager.addClickListener(line -> Toast.makeText( - LineChangeActivity.this, - "Clicked: " + line.getId(), - Toast.LENGTH_SHORT).show()); + lineManager.addClickListener(line -> { + Toast.makeText( + LineChangeActivity.this, + "Clicked: " + line.getId(), + Toast.LENGTH_SHORT).show(); + return false; + }); LineManager dottedLineManger = new LineManager(mapView, mapboxMap, style); dottedLineManger.create(new LineOptions() diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/SymbolActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/SymbolActivity.java index 69d1e8449..e2c86b027 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/SymbolActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/SymbolActivity.java @@ -82,15 +82,20 @@ protected void onCreate(Bundle savedInstanceState) { // create symbol manager GeoJsonOptions geoJsonOptions = new GeoJsonOptions().withTolerance(0.4f); symbolManager = new SymbolManager(mapView, mapboxMap, style, null, geoJsonOptions); - symbolManager.addClickListener(symbol -> Toast.makeText(SymbolActivity.this, - String.format("Symbol clicked %s", symbol.getId()), - Toast.LENGTH_SHORT - ).show()); - symbolManager.addLongClickListener(symbol -> + symbolManager.addClickListener(symbol -> { Toast.makeText(SymbolActivity.this, - String.format("Symbol long clicked %s", symbol.getId()), - Toast.LENGTH_SHORT - ).show()); + String.format("Symbol clicked %s", symbol.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); + symbolManager.addLongClickListener(symbol -> { + Toast.makeText(SymbolActivity.this, + String.format("Symbol long clicked %s", symbol.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); // set non data driven properties symbolManager.setIconAllowOverlap(true); diff --git a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java index a86998aee..c87662944 100644 --- a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java +++ b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java @@ -377,7 +377,9 @@ public boolean onMapClick(@NonNull LatLng point) { T annotation = queryMapForFeatures(point); if (annotation != null) { for (U clickListener : clickListeners) { - clickListener.onAnnotationClick(annotation); + if (clickListener.onAnnotationClick(annotation)) { + return true; + } } } return false; @@ -392,7 +394,9 @@ public boolean onMapLongClick(@NonNull LatLng point) { T annotation = queryMapForFeatures(point); if (annotation != null) { for (V clickListener : longClickListeners) { - clickListener.onAnnotationLongClick(annotation); + if (clickListener.onAnnotationLongClick(annotation)) { + return true; + } } } return false; diff --git a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationClickListener.java b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationClickListener.java index f19d55472..164eeb284 100644 --- a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationClickListener.java +++ b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationClickListener.java @@ -11,7 +11,8 @@ public interface OnAnnotationClickListener { * Called when an annotation has been clicked * * @param t the annotation clicked. + * @return True if this click should be consumed and not passed further to other listeners registered afterwards, + * false otherwise. */ - void onAnnotationClick(T t); - + boolean onAnnotationClick(T t); } diff --git a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationLongClickListener.java b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationLongClickListener.java index 5103e7c84..e2beaec02 100644 --- a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationLongClickListener.java +++ b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationLongClickListener.java @@ -11,7 +11,8 @@ public interface OnAnnotationLongClickListener { * Called when an annotation has been long clicked * * @param t the annotation long clicked. + * @return True if this click should be consumed and not passed further to other listeners registered afterwards, + * false otherwise. */ - void onAnnotationLongClick(T t); - + boolean onAnnotationLongClick(T t); }