summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-03-03 15:31:14 -0800
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-03-04 15:42:07 -0800
commitb5d0a661c520716c6345aca6ea0207f5d49b6d54 (patch)
treefa65e868abd9a1b6cc5ddaf2687ce3687722f05d /platform/android/MapboxGLAndroidSDK
parent161ae804c23ff76f6c25596e811ec5861833d960 (diff)
downloadqtlocation-mapboxgl-b5d0a661c520716c6345aca6ea0207f5d49b6d54.tar.gz
[android] Add support for queryRenderedFeatures filter
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java41
-rwxr-xr-xplatform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java23
2 files changed, 52 insertions, 12 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 e3e33ec067..46c5e269c0 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
@@ -37,6 +37,7 @@ import com.mapbox.mapboxsdk.constants.MyLocationTracking;
import com.mapbox.mapboxsdk.constants.Style;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.widgets.MyLocationViewSettings;
+import com.mapbox.mapboxsdk.style.layers.Filter;
import com.mapbox.mapboxsdk.style.layers.Layer;
import com.mapbox.mapboxsdk.style.sources.Source;
import com.mapbox.services.commons.geojson.Feature;
@@ -1674,7 +1675,23 @@ public final class MapboxMap {
@NonNull
public List<Feature> queryRenderedFeatures(@NonNull PointF coordinates, @Nullable String...
layerIds) {
- return nativeMapView.queryRenderedFeatures(coordinates, layerIds);
+ return nativeMapView.queryRenderedFeatures(coordinates, layerIds, null);
+ }
+
+ /**
+ * Queries the map for rendered features
+ *
+ * @param coordinates the point to query
+ * @param filter filters the returned features
+ * @param layerIds optionally - only query these layers
+ * @return the list of feature
+ */
+ @UiThread
+ @NonNull
+ public List<Feature> queryRenderedFeatures(@NonNull PointF coordinates,
+ @Nullable Filter.Statement filter,
+ @Nullable String... layerIds) {
+ return nativeMapView.queryRenderedFeatures(coordinates, layerIds, filter);
}
/**
@@ -1686,9 +1703,25 @@ public final class MapboxMap {
*/
@UiThread
@NonNull
- public List<Feature> queryRenderedFeatures(@NonNull RectF coordinates, @Nullable String...
- layerIds) {
- return nativeMapView.queryRenderedFeatures(coordinates, layerIds);
+ public List<Feature> queryRenderedFeatures(@NonNull RectF coordinates,
+ @Nullable String... layerIds) {
+ return nativeMapView.queryRenderedFeatures(coordinates, layerIds, null);
+ }
+
+ /**
+ * Queries the map for rendered features
+ *
+ * @param coordinates the box to query
+ * @param filter filters the returned features
+ * @param layerIds optionally - only query these layers
+ * @return the list of feature
+ */
+ @UiThread
+ @NonNull
+ public List<Feature> queryRenderedFeatures(@NonNull RectF coordinates,
+ @Nullable Filter.Statement filter,
+ @Nullable String... layerIds) {
+ return nativeMapView.queryRenderedFeatures(coordinates, layerIds, filter);
}
//
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 e02a0f3d36..7c68a48c4d 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
@@ -22,6 +22,7 @@ import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.geometry.ProjectedMeters;
import com.mapbox.mapboxsdk.storage.FileSource;
import com.mapbox.mapboxsdk.style.layers.CannotAddLayerException;
+import com.mapbox.mapboxsdk.style.layers.Filter;
import com.mapbox.mapboxsdk.style.layers.Layer;
import com.mapbox.mapboxsdk.style.sources.CannotAddSourceException;
import com.mapbox.mapboxsdk.style.sources.Source;
@@ -881,27 +882,31 @@ final class NativeMapView {
// Feature querying
@NonNull
- public List<Feature> queryRenderedFeatures(PointF coordinates, String... layerIds) {
+ public List<Feature> queryRenderedFeatures(@NonNull PointF coordinates,
+ @Nullable String[] layerIds,
+ @Nullable Filter.Statement filter) {
if (isDestroyedOn("queryRenderedFeatures")) {
return new ArrayList<>();
}
Feature[] features = nativeQueryRenderedFeaturesForPoint(coordinates.x / pixelRatio,
- coordinates.y / pixelRatio, layerIds);
+ coordinates.y / pixelRatio, layerIds, filter != null ? filter.toArray() : null);
return features != null ? Arrays.asList(features) : new ArrayList<Feature>();
}
@NonNull
- public List<Feature> queryRenderedFeatures(RectF coordinates, String... layerIds) {
+ public List<Feature> queryRenderedFeatures(@NonNull RectF coordinates,
+ @Nullable String[] layerIds,
+ @Nullable Filter.Statement filter) {
if (isDestroyedOn("queryRenderedFeatures")) {
return new ArrayList<>();
}
Feature[] features = nativeQueryRenderedFeaturesForBox(
-
coordinates.left / pixelRatio,
coordinates.top / pixelRatio,
coordinates.right / pixelRatio,
coordinates.bottom / pixelRatio,
- layerIds);
+ layerIds,
+ filter != null ? filter.toArray() : null);
return features != null ? Arrays.asList(features) : new ArrayList<Feature>();
}
@@ -1139,12 +1144,14 @@ final class NativeMapView {
private native void nativeTakeSnapshot();
- private native Feature[] nativeQueryRenderedFeaturesForPoint(float x, float y, String[]
- layerIds);
+ private native Feature[] nativeQueryRenderedFeaturesForPoint(float x, float y,
+ String[] layerIds,
+ Object[] filter);
private native Feature[] nativeQueryRenderedFeaturesForBox(float left, float top,
float right, float bottom,
- String[] layerIds);
+ String[] layerIds,
+ Object[] filter);
int getWidth() {
if (isDestroyedOn("")) {