diff options
author | Nicholas Hallahan <nick@theoutpost.io> | 2015-07-13 16:32:16 -0700 |
---|---|---|
committer | Nicholas Hallahan <nick@theoutpost.io> | 2015-07-13 16:32:16 -0700 |
commit | 92501e3b41338780fd9d00de36b0560b87bd30a5 (patch) | |
tree | ae1df3228646905a53deffc90f2547963cd43cb1 | |
parent | 27bd305b1bd8a792674fff65dd0fe97ee85c27d6 (diff) | |
parent | 3ab8e6c0dd614ff46683ceccf9cdbd2c38bc5294 (diff) | |
download | qtlocation-mapboxgl-92501e3b41338780fd9d00de36b0560b87bd30a5.tar.gz |
basic single marker point annotation
Merge branch 'android-annotations-poc' into android-annotations
6 files changed, 76 insertions, 4 deletions
diff --git a/android/cpp/jni.cpp b/android/cpp/jni.cpp index cfb1291bcd..f04ed94b3f 100644 --- a/android/cpp/jni.cpp +++ b/android/cpp/jni.cpp @@ -16,6 +16,7 @@ #include <mbgl/android/jni.hpp> #include <mbgl/android/native_map_view.hpp> #include <mbgl/map/map.hpp> +#include <mbgl/annotation/point_annotation.hpp> #include <mbgl/platform/event.hpp> #include <mbgl/platform/log.hpp> #include <mbgl/storage/network_status.hpp> @@ -433,6 +434,26 @@ void JNICALL nativeSetLatLng(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, j nativeMapView->getMap().setLatLng(mbgl::LatLng(latitude, longitude), std::chrono::milliseconds(duration)); } +void JNICALL nativeAddAnnotation(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jobject latLng) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeAddAnnotation"); + assert(nativeMapViewPtr != 0); + NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr); + + jdouble latitude = env->GetDoubleField(latLng, latLngLatitudeId); + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + return; + } + + jdouble longitude = env->GetDoubleField(latLng, latLngLongitudeId); + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + return; + } + + nativeMapView->getMap().addPointAnnotation(mbgl::PointAnnotation(mbgl::LatLng(latitude, longitude), std::string("default_marker"))); +} + jobject JNICALL nativeGetLatLng(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { mbgl::Log::Debug(mbgl::Event::JNI, "nativeGetLatLng"); assert(nativeMapViewPtr != 0); @@ -976,6 +997,8 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { {"nativeMoveBy", "(JDDJ)V", reinterpret_cast<void *>(&nativeMoveBy)}, {"nativeSetLatLng", "(JLcom/mapbox/mapboxgl/geometry/LatLng;J)V", reinterpret_cast<void *>(&nativeSetLatLng)}, + {"nativeAddAnnotation", "(JLcom/mapbox/mapboxgl/geometry/LatLng;)V", + reinterpret_cast<void *>(&nativeAddAnnotation)}, {"nativeGetLatLng", "(J)Lcom/mapbox/mapboxgl/geometry/LatLng;", reinterpret_cast<void *>(&nativeGetLatLng)}, {"nativeResetPosition", "(J)V", reinterpret_cast<void *>(&nativeResetPosition)}, diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java index 0f359ab100..06807dfa04 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java @@ -205,6 +205,10 @@ public class MapView extends SurfaceView { } } + public void addAnnotation(LatLng marker) { + mNativeMapView.addAnnotation(marker); + } + // // Property methods // diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java index 643fcbd720..ad86665060 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java @@ -214,6 +214,10 @@ class NativeMapView { nativeSetLatLng(mNativeMapViewPtr, latLng, duration); } + public void addAnnotation(LatLng latLng) { + nativeAddAnnotation(mNativeMapViewPtr, latLng); + } + public LatLng getLatLng() { return nativeGetLatLng(mNativeMapViewPtr); } @@ -446,6 +450,8 @@ class NativeMapView { private native void nativeSetLatLng(long nativeMapViewPtr, LatLng latLng, long duration); + private native void nativeAddAnnotation(long nativeMapViewPtr, LatLng latLng); + private native LatLng nativeGetLatLng(long nativeMapViewPtr); private native void nativeResetPosition(long nativeMapViewPtr); diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java index 65cb17462f..8bef3392c6 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java @@ -77,6 +77,9 @@ public class MainActivity extends ActionBarActivity { private float mCompassBearing; private boolean mCompassValid = false; + // Used for point annotations + private boolean mIsPointAnnotationsOn = false; + // // Lifecycle events // @@ -210,6 +213,10 @@ public class MainActivity extends ActionBarActivity { } return true; + case R.id.action_point_annotations: + // Toggle point annotations + togglePointAnnotations(!mIsPointAnnotationsOn); + default: return super.onOptionsItemSelected(item); } @@ -249,6 +256,32 @@ public class MainActivity extends ActionBarActivity { } } + /** + * Enable / Disable Point annotations. + * + * TODO: Implement updating the UI and removing point annotations from the map. + * + * @param enablePointAnnotations + */ + private void togglePointAnnotations(boolean enablePointAnnotations) { + if (enablePointAnnotations) { + if (!mIsPointAnnotationsOn) { + mIsPointAnnotationsOn = true; + addPointAnnotations(); + } + } else { + if (mIsPointAnnotationsOn) { + mIsPointAnnotationsOn = false; + + } + } + } + + private void addPointAnnotations() { + LatLng backLot = new LatLng(38.649441, -121.369064); + mMapFragment.getMap().addAnnotation(backLot); + } + // This class forwards location updates to updateLocation() private class GpsListener implements LocationListener { diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_main.xml b/android/java/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_main.xml index bf6dbbf36d..965f882545 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_main.xml +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_main.xml @@ -1,11 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> - <item android:id="@+id/action_gps" - android:icon="@drawable/ic_action_location_searching" - android:title="@string/action_gps" - app:showAsAction="ifRoom" /> <item android:id="@+id/action_debug" android:icon="@drawable/ic_action_about" android:title="@string/action_debug" app:showAsAction="ifRoom" /> + <item android:id="@+id/action_point_annotations" + android:icon="@android:drawable/ic_menu_myplaces" + android:title="@string/action_point_annotations" + app:showAsAction="ifRoom" /> + <item android:id="@+id/action_gps" + android:icon="@drawable/ic_action_location_searching" + android:title="@string/action_gps" + app:showAsAction="ifRoom" /> </menu> diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml b/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml index 901e231929..cddf228bf6 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml @@ -7,6 +7,8 @@ <string name="action_debug">Toggle debug mode</string> + <string name="action_point_annotations">Toggle point annotations</string> + <string name="label_fps">FPS:</string> <string name="compass_desc">Map compass. Click to reset the map rotation to North.</string> |