diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index bea615f61..4313b1932 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -244,13 +244,12 @@ jni::jobject* std_vector_string_to_jobject(JNIEnv *env, std::vector return jlist; } -jni::jarray* std_vector_uint_to_jobject(JNIEnv *env, std::vector vector) { +jni::jarray* std_vector_uint_to_jobject(JNIEnv *env, const std::vector& vector) { jni::jarray& jarray = jni::NewArray(*env, vector.size()); std::vector v; - for (const uint32_t& id : vector) { - v.push_back(id); - } + v.reserve(vector.size()); + std::move(vector.begin(), vector.end(), std::back_inserter(v)); jni::SetArrayRegion(*env, jarray, 0, v); @@ -684,7 +683,7 @@ jni::jarray* nativeAddMarkers(JNIEnv *env, jni::jobject* obj, jlong nativ NullCheck(*env, jarray); std::size_t len = jni::GetArrayLength(*env, *jarray); - std::vector ids; + mbgl::AnnotationIDs ids; ids.reserve(len); for (std::size_t i = 0; i < len; i++) { @@ -755,7 +754,7 @@ jni::jarray* nativeAddPolylines(JNIEnv *env, jni::jobject* obj, jlong nat NullCheck(*env, jarray); std::size_t len = jni::GetArrayLength(*env, *jarray); - std::vector ids; + mbgl::AnnotationIDs ids; ids.reserve(len); for (std::size_t i = 0; i < len; i++) { @@ -782,7 +781,7 @@ jni::jarray* nativeAddPolygons(JNIEnv *env, jni::jobject* obj, jlong nati NullCheck(*env, jarray); std::size_t len = jni::GetArrayLength(*env, *jarray); - std::vector ids; + mbgl::AnnotationIDs ids; ids.reserve(len); for (std::size_t i = 0; i < len; i++) { @@ -860,10 +859,9 @@ jni::jarray* nativeQueryPointAnnotations(JNIEnv *env, jni::jobject* obj, }; // Assume only points for now - std::vector annotations = nativeMapView->getMap().queryPointAnnotations( - box); + mbgl::AnnotationIDs ids = nativeMapView->getMap().queryPointAnnotations(box); - return std_vector_uint_to_jobject(env, annotations); + return std_vector_uint_to_jobject(env, ids); } void nativeAddAnnotationIcon(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr,