summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/InfoWindow.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/InfoWindow.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/InfoWindow.java41
1 files changed, 31 insertions, 10 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/InfoWindow.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/InfoWindow.java
index 9c79ffcbd9..d8763e321d 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/InfoWindow.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/InfoWindow.java
@@ -53,22 +53,35 @@ public class InfoWindow {
mIsVisible = false;
mView = new WeakReference<>(view);
- // default behavior: close it when clicking on the tooltip:
- view.setOnTouchListener(new View.OnTouchListener() {
+ view.setOnClickListener(new View.OnClickListener() {
@Override
- public boolean onTouch(View v, MotionEvent e) {
- if (e.getAction() == MotionEvent.ACTION_UP) {
+ public void onClick(View v) {
+ MapboxMap mapboxMap = mMapboxMap.get();
+ if (mapboxMap != null) {
+ MapboxMap.OnInfoWindowClickListener onInfoWindowClickListener = mapboxMap.getOnInfoWindowClickListener();
boolean handledDefaultClick = false;
- MapboxMap.OnInfoWindowClickListener onInfoWindowClickListener =
- mMapboxMap.get().getOnInfoWindowClickListener();
if (onInfoWindowClickListener != null) {
- handledDefaultClick = onInfoWindowClickListener.onMarkerClick(getBoundMarker());
+ handledDefaultClick = onInfoWindowClickListener.onInfoWindowClick(getBoundMarker());
}
if (!handledDefaultClick) {
+ // default behavior: close it when clicking on the tooltip:
close();
}
}
+ }
+ });
+
+ view.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ MapboxMap mapboxMap = mMapboxMap.get();
+ if (mapboxMap != null) {
+ MapboxMap.OnInfoWindowLongClickListener listener = mapboxMap.getOnInfoWindowLongClickListener();
+ if (listener != null) {
+ listener.onInfoWindowLongClick(getBoundMarker());
+ }
+ }
return true;
}
});
@@ -179,11 +192,10 @@ public class InfoWindow {
if (mIsVisible) {
mIsVisible = false;
View view = mView.get();
- if (view != null) {
+ if (view != null && view.getParent() != null) {
((ViewGroup) view.getParent()).removeView(view);
- setBoundMarker(null);
- onClose();
}
+ onClose();
}
return this;
}
@@ -210,7 +222,12 @@ public class InfoWindow {
private void onClose() {
MapboxMap mapboxMap = mMapboxMap.get();
if (mapboxMap != null) {
+ MapboxMap.OnInfoWindowCloseListener listener = mapboxMap.getOnInfoWindowCloseListener();
+ if (listener != null) {
+ listener.onInfoWindowClose(getBoundMarker());
+ }
mapboxMap.deselectMarker(getBoundMarker());
+ setBoundMarker(null);
}
}
@@ -237,4 +254,8 @@ public class InfoWindow {
}
}
+ boolean isVisible() {
+ return mIsVisible;
+ }
+
}