summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun Van Nuland <tobrun.van.nuland@gmail.com>2017-08-21 13:51:36 +0200
committerTobrun Van Nuland <tobrun.van.nuland@gmail.com>2017-09-14 12:02:49 +0200
commita22825e2c31286a11881880881edb86adc249be1 (patch)
tree9577e626b42968a06959552525b05f25f718675f
parent6d6a30a0c4975077b0dccd52f088fa53d27b3198 (diff)
downloadqtlocation-mapboxgl-a22825e2c31286a11881880881edb86adc249be1.tar.gz
[android] - optional geometry conversion for query rendered features
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java17
-rwxr-xr-xplatform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java8
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/feature/QueryRenderedFeaturesExecutionTimeTest.java44
-rwxr-xr-xplatform/android/src/native_map_view.cpp7
-rwxr-xr-xplatform/android/src/native_map_view.hpp3
5 files changed, 71 insertions, 8 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 0d1d0e03b5..f9eec0c2cb 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
@@ -1936,9 +1936,22 @@ public final class MapboxMap {
* @return the list of feature
*/
@NonNull
+ public List<Feature> queryRenderedFeatures(@NonNull PointF coordinates, boolean withGeometry, @Nullable String...
+ layerIds) {
+ return nativeMapView.queryRenderedFeatures(coordinates, layerIds, null, withGeometry);
+ }
+
+ /**
+ * Queries the map for rendered features
+ *
+ * @param coordinates the point to query
+ * @param layerIds optionally - only query these layers
+ * @return the list of feature
+ */
+ @NonNull
public List<Feature> queryRenderedFeatures(@NonNull PointF coordinates, @Nullable String...
layerIds) {
- return nativeMapView.queryRenderedFeatures(coordinates, layerIds, null);
+ return nativeMapView.queryRenderedFeatures(coordinates, layerIds, null, true);
}
/**
@@ -1953,7 +1966,7 @@ public final class MapboxMap {
public List<Feature> queryRenderedFeatures(@NonNull PointF coordinates,
@Nullable Filter.Statement filter,
@Nullable String... layerIds) {
- return nativeMapView.queryRenderedFeatures(coordinates, layerIds, filter);
+ return nativeMapView.queryRenderedFeatures(coordinates, layerIds, filter, true);
}
/**
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 4f5037e4b3..2bc94f26ab 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
@@ -820,12 +820,13 @@ final class NativeMapView {
@NonNull
public List<Feature> queryRenderedFeatures(@NonNull PointF coordinates,
@Nullable String[] layerIds,
- @Nullable Filter.Statement filter) {
+ @Nullable Filter.Statement filter,
+ boolean withGeometry) {
if (isDestroyedOn("queryRenderedFeatures")) {
return new ArrayList<>();
}
Feature[] features = nativeQueryRenderedFeaturesForPoint(coordinates.x / pixelRatio,
- coordinates.y / pixelRatio, layerIds, filter != null ? filter.toArray() : null);
+ coordinates.y / pixelRatio, layerIds, filter != null ? filter.toArray() : null, withGeometry);
return features != null ? Arrays.asList(features) : new ArrayList<Feature>();
}
@@ -1095,7 +1096,8 @@ final class NativeMapView {
private native Feature[] nativeQueryRenderedFeaturesForPoint(float x, float y,
String[] layerIds,
- Object[] filter);
+ Object[] filter,
+ boolean withGeometry);
private native Feature[] nativeQueryRenderedFeaturesForBox(float left, float top,
float right, float bottom,
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/feature/QueryRenderedFeaturesExecutionTimeTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/feature/QueryRenderedFeaturesExecutionTimeTest.java
new file mode 100644
index 0000000000..534291d8ab
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/feature/QueryRenderedFeaturesExecutionTimeTest.java
@@ -0,0 +1,44 @@
+package com.mapbox.mapboxsdk.testapp.feature;
+
+import android.graphics.PointF;
+import android.support.test.espresso.UiController;
+
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+import com.mapbox.mapboxsdk.testapp.action.MapboxMapAction;
+import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest;
+import com.mapbox.mapboxsdk.testapp.activity.style.CircleLayerActivity;
+
+import org.junit.Test;
+
+import timber.log.Timber;
+
+public class QueryRenderedFeaturesExecutionTimeTest extends BaseActivityTest {
+
+ @Override
+ protected Class getActivityClass() {
+ return CircleLayerActivity.class;
+ }
+
+ @Test
+ public void testQueryRenderedFeaturesExecutionTime() {
+ validateTestSetup();
+ MapboxMapAction.invoke(mapboxMap, new MapboxMapAction.OnInvokeActionListener() {
+ @Override
+ public void onInvokeAction(UiController uiController, MapboxMap mapboxMap) {
+ PointF point = new PointF(519.4336f, 1086.6211f);
+
+ long startTime = System.currentTimeMillis();
+ mapboxMap.queryRenderedFeatures(point, true);
+ long stopTime = System.currentTimeMillis();
+ long elapsedTime = stopTime - startTime;
+ Timber.e("Execution time with testQueryRenderedFeaturesExecutionTime: %s", elapsedTime);
+
+ startTime = System.currentTimeMillis();
+ mapboxMap.queryRenderedFeatures(point, false);
+ stopTime = System.currentTimeMillis();
+ elapsedTime = stopTime - startTime;
+ Timber.e("Execution time with testQueryRenderedFeaturesWithoutGeometryExecutionTime: %s", elapsedTime);
+ }
+ });
+ }
+}
diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp
index d859d929d3..bb37f18095 100755
--- a/platform/android/src/native_map_view.cpp
+++ b/platform/android/src/native_map_view.cpp
@@ -771,7 +771,8 @@ jni::Array<jlong> NativeMapView::queryPointAnnotations(JNIEnv& env, jni::Object<
jni::Array<jni::Object<geojson::Feature>> NativeMapView::queryRenderedFeaturesForPoint(JNIEnv& env, jni::jfloat x, jni::jfloat y,
jni::Array<jni::String> layerIds,
- jni::Array<jni::Object<>> jfilter) {
+ jni::Array<jni::Object<>> jfilter,
+ jni::jboolean jwithGeometry) {
using namespace mbgl::android::conversion;
using namespace mbgl::android::geojson;
@@ -781,9 +782,11 @@ jni::Array<jni::Object<geojson::Feature>> NativeMapView::queryRenderedFeaturesFo
}
mapbox::geometry::point<double> point = {x, y};
+ bool withGeometry = jwithGeometry;
+
return *convert<jni::Array<jni::Object<Feature>>, std::vector<mbgl::Feature>>(
env,
- rendererFrontend->queryRenderedFeatures(point, { layers, toFilter(env, jfilter) }));
+ rendererFrontend->queryRenderedFeatures(point, { layers, toFilter(env, jfilter), withGeometry}));
}
jni::Array<jni::Object<geojson::Feature>> NativeMapView::queryRenderedFeaturesForBox(JNIEnv& env, jni::jfloat left, jni::jfloat top,
diff --git a/platform/android/src/native_map_view.hpp b/platform/android/src/native_map_view.hpp
index 24c88f4e3f..cf1af14383 100755
--- a/platform/android/src/native_map_view.hpp
+++ b/platform/android/src/native_map_view.hpp
@@ -216,7 +216,8 @@ public:
jni::Array<jni::Object<geojson::Feature>> queryRenderedFeaturesForPoint(JNIEnv&, jni::jfloat, jni::jfloat,
jni::Array<jni::String>,
- jni::Array<jni::Object<>> jfilter);
+ jni::Array<jni::Object<>> jfilter,
+ jni::jboolean jwithGeometry);
jni::Array<jni::Object<geojson::Feature>> queryRenderedFeaturesForBox(JNIEnv&, jni::jfloat, jni::jfloat, jni::jfloat,
jni::jfloat, jni::Array<jni::String>,