1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#include "offline_region_definition.hpp"
#include "../geometry/lat_lng_bounds.hpp"
namespace mbgl {
namespace android {
// OfflineRegionDefinition //
jni::Class<OfflineRegionDefinition> OfflineRegionDefinition::javaClass;
void OfflineRegionDefinition::registerNative(jni::JNIEnv& env) {
javaClass = *jni::Class<OfflineRegionDefinition>::Find(env).NewGlobalRef(env).release();
}
// OfflineTilePyramidRegionDefinition //
jni::Object<OfflineTilePyramidRegionDefinition> OfflineTilePyramidRegionDefinition::New(jni::JNIEnv& env, mbgl::OfflineTilePyramidRegionDefinition definition) {
//Convert objects
auto styleURL = jni::Make<jni::String>(env, definition.styleURL);
auto bounds = LatLngBounds::New(env, definition.bounds);
static auto constructor = javaClass.GetConstructor<jni::String, jni::Object<LatLngBounds>, jni::jdouble, jni::jdouble, jni::jfloat>(env);
auto jdefinition = javaClass.New(env, constructor, styleURL, bounds, definition.minZoom, definition.maxZoom, definition.pixelRatio);
//Delete References
jni::DeleteLocalRef(env, styleURL);
jni::DeleteLocalRef(env, bounds);
return jdefinition;
}
mbgl::OfflineTilePyramidRegionDefinition OfflineTilePyramidRegionDefinition::getDefinition(jni::JNIEnv& env, jni::Object<OfflineTilePyramidRegionDefinition> jDefinition) {
// Field references
static auto styleURLF = javaClass.GetField<jni::String>(env, "styleURL");
static auto boundsF = javaClass.GetField<jni::Object<LatLngBounds>>(env, "bounds");
static auto minZoomF = javaClass.GetField<jni::jdouble>(env, "minZoom");
static auto maxZoomF = javaClass.GetField<jni::jdouble>(env, "maxZoom");
static auto pixelRatioF = javaClass.GetField<jni::jfloat>(env, "pixelRatio");
// Get objects
auto jStyleURL = jDefinition.Get(env, styleURLF);
auto jBounds = jDefinition.Get(env, boundsF);
// Create definition
mbgl::OfflineTilePyramidRegionDefinition definition(
jni::Make<std::string>(env, jStyleURL),
LatLngBounds::getLatLngBounds(env, jBounds),
jDefinition.Get(env, minZoomF),
jDefinition.Get(env, maxZoomF),
jDefinition.Get(env, pixelRatioF)
);
// Delete references
jni::DeleteLocalRef(env, jStyleURL);
jni::DeleteLocalRef(env, jBounds);
return definition;
}
jni::Class<OfflineTilePyramidRegionDefinition> OfflineTilePyramidRegionDefinition::javaClass;
void OfflineTilePyramidRegionDefinition::registerNative(jni::JNIEnv& env) {
javaClass = *jni::Class<OfflineTilePyramidRegionDefinition>::Find(env).NewGlobalRef(env).release();
}
} // namespace android
} // namespace mbgl
|