summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Hallahan <nick@theoutpost.io>2015-07-13 16:32:16 -0700
committerNicholas Hallahan <nick@theoutpost.io>2015-07-13 16:32:16 -0700
commit92501e3b41338780fd9d00de36b0560b87bd30a5 (patch)
treeae1df3228646905a53deffc90f2547963cd43cb1
parent27bd305b1bd8a792674fff65dd0fe97ee85c27d6 (diff)
parent3ab8e6c0dd614ff46683ceccf9cdbd2c38bc5294 (diff)
downloadqtlocation-mapboxgl-92501e3b41338780fd9d00de36b0560b87bd30a5.tar.gz
basic single marker point annotation
Merge branch 'android-annotations-poc' into android-annotations
-rw-r--r--android/cpp/jni.cpp23
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java4
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java6
-rw-r--r--android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java33
-rw-r--r--android/java/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_main.xml12
-rw-r--r--android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml2
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>