expose LocationIndicatorLayer and an alternative rendering mode based on it

This commit is contained in:
Łukasz Paczos
2020-04-08 15:07:47 +02:00
parent d7161fca1f
commit 6bb456882a
39 changed files with 2479 additions and 635 deletions

View File

@@ -52,11 +52,25 @@ Result<jni::Local<jni::Object<>>> Converter<jni::Local<jni::Object<>>, std::vect
return result;
}
Result<jni::Local<jni::Object<>>> Converter<jni::Local<jni::Object<>>, std::vector<double>>::operator()(jni::JNIEnv& env, const std::vector<double>& value) const {
auto result = jni::Array<jni::Double>::New(env, value.size());
for (std::size_t i = 0; i < value.size(); i++) {
result.Set(env, i, jni::Box(env, value.at(i)));
}
return result;
}
Result<jni::Local<jni::Object<>>> Converter<jni::Local<jni::Object<>>, style::expression::Image>::operator()(
jni::JNIEnv& env, const style::expression::Image& value) const {
return jni::Make<jni::String>(env, value.id());
}
Result<jni::Local<jni::Object<>>> Converter<jni::Local<jni::Object<>>, mbgl::style::Rotation>::operator()(jni::JNIEnv& env, const mbgl::style::Rotation& value) const {
return jni::Box(env, value.getAngle());
}
} // namespace conversion
} // namespace style
} // namespace mbgl

View File

@@ -13,6 +13,7 @@
#include <string>
#include <array>
#include <vector>
#include <mbgl/style/rotation.hpp>
namespace mbgl {
namespace android {
@@ -72,6 +73,17 @@ struct Converter<jni::Local<jni::Object<>>, std::array<float, N>> {
}
};
template <std::size_t N>
struct Converter<jni::Local<jni::Object<>>, std::array<double, N>> {
Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const std::array<double, N>& value) const {
std::vector<double> v;
for (const double& id : value) {
v.push_back(id);
}
return convert<jni::Local<jni::Object<>>, std::vector<double>>(env, v);
}
};
template <>
struct Converter<jni::Local<jni::Object<>>, std::vector<std::string>> {
Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const std::vector<std::string>& value) const;
@@ -82,6 +94,11 @@ struct Converter<jni::Local<jni::Object<>>, std::vector<float>> {
Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const std::vector<float>& value) const;
};
template <>
struct Converter<jni::Local<jni::Object<>>, std::vector<double>> {
Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const std::vector<double>& value) const;
};
template <class T>
struct Converter<jni::Local<jni::Object<>>, T, typename std::enable_if_t<std::is_enum<T>::value>> {
Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const T& value) const {
@@ -105,6 +122,11 @@ struct Converter<jni::Local<jni::Object<>>, style::expression::Image> {
Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const style::expression::Image& value) const;
};
template <>
struct Converter<jni::Local<jni::Object<>>, mbgl::style::Rotation> {
Result<jni::Local<jni::Object<>>> operator()(jni::JNIEnv& env, const mbgl::style::Rotation& value) const;
};
} // namespace conversion
} // namespace android
} // namespace mbgl