diff options
Diffstat (limited to 'platform/android/src/jni.cpp')
-rwxr-xr-x | platform/android/src/jni.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index e79689d7ad..6f1b892c7e 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -660,7 +660,25 @@ void nativeResetNorth(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr) { nativeMapView->getMap().resetNorth(); } -void nativeUpdateMarker(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jni::jobject* marker) { +jlong nativeAddMarker(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jni::jobject* marker) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeAddMarker"); + assert(nativeMapViewPtr != 0); + NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr); + + jni::jobject* position = jni::GetField<jni::jobject*>(*env, marker, *markerPositionId); + jni::jobject* icon = jni::GetField<jni::jobject*>(*env, marker, *markerIconId); + + jni::jstring* jid = reinterpret_cast<jni::jstring*>(jni::GetField<jni::jobject*>(*env, icon, *iconIdId)); + std::string id = std_string_from_jstring(env, jid); + + jdouble latitude = jni::GetField<jdouble>(*env, position, *latLngLatitudeId); + jdouble longitude = jni::GetField<jdouble>(*env, position, *latLngLongitudeId); + + // Because Java only has int, not unsigned int, we need to bump the annotation id up to a long. + return nativeMapView->getMap().addPointAnnotation(mbgl::PointAnnotation(mbgl::LatLng(latitude, longitude), id)); +} + +void nativeUpdateMarker(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jlong markerId, jdouble lat, jdouble lon, jni::jstring* jid) { mbgl::Log::Debug(mbgl::Event::JNI, "nativeUpdateMarker"); assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr); @@ -1188,7 +1206,7 @@ void listOfflineRegions(JNIEnv *env, jni::jobject* obj, jlong defaultFileSourceP jni::SetField<jni::jobject*>(*env2, jregion, *offlineRegionOfflineManagerId, obj); jni::SetField<jlong>(*env2, jregion, *offlineRegionIdId, region.getID()); - + // Definition object mbgl::OfflineTilePyramidRegionDefinition definition = region.getDefinition(); jni::jobject* jdefinition = &jni::NewObject(*env2, *offlineRegionDefinitionClass, *offlineRegionDefinitionConstructorId); @@ -1198,7 +1216,7 @@ void listOfflineRegions(JNIEnv *env, jni::jobject* obj, jlong defaultFileSourceP jni::SetField<jdouble>(*env2, jdefinition, *offlineRegionDefinitionMaxZoomId, definition.maxZoom); jni::SetField<jfloat>(*env2, jdefinition, *offlineRegionDefinitionPixelRatioId, definition.pixelRatio); jni::SetField<jni::jobject*>(*env2, jregion, *offlineRegionDefinitionId, jdefinition); - + // Metadata object jni::jarray<jbyte>* metadata = metadata_from_native(env2, region.getMetadata()); jni::SetField<jni::jobject*>(*env2, jregion, *offlineRegionMetadataId, metadata); |