summaryrefslogtreecommitdiff
path: root/platform/android/src/geometry/lat_lng.cpp
blob: 0bf6ea7addc20f18ee55b77b6a4f61d1fda374f5 (plain)
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
#include "lat_lng.hpp"

namespace mbgl {
namespace android {

jni::Object<LatLng> LatLng::New(jni::JNIEnv& env, const mbgl::LatLng& latLng) {
    static auto constructor = LatLng::javaClass.GetConstructor<double, double>(env);
    return LatLng::javaClass.New(env, constructor, latLng.latitude(), latLng.longitude());
}

mbgl::Point<double> LatLng::getGeometry(jni::JNIEnv& env, jni::Object<LatLng> latLng) {
    static auto latitudeField = LatLng::javaClass.GetField<jni::jdouble>(env, "latitude");
    static auto longitudeField = LatLng::javaClass.GetField<jni::jdouble>(env, "longitude");
    return mbgl::Point<double>(latLng.Get(env, longitudeField), latLng.Get(env, latitudeField));
}

mbgl::LatLng LatLng::getLatLng(jni::JNIEnv& env, jni::Object<LatLng> latLng) {
    auto point = LatLng::getGeometry(env, latLng);
    return mbgl::LatLng(point.y, point.x);
}

void LatLng::registerNative(jni::JNIEnv& env) {
    // Lookup the class
    LatLng::javaClass = *jni::Class<LatLng>::Find(env).NewGlobalRef(env).release();
}

jni::Class<LatLng> LatLng::javaClass;


} // namespace android
} // namespace mbgl