[android] #3747 - InfoWindowLongClickListener
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -54,6 +54,7 @@ public class MapboxMap {
|
||||
private MapboxMap.OnMapLongClickListener mOnMapLongClickListener;
|
||||
private MapboxMap.OnMarkerClickListener mOnMarkerClickListener;
|
||||
private MapboxMap.OnInfoWindowClickListener mOnInfoWindowClickListener;
|
||||
private MapboxMap.OnInfoWindowLongClickListener mOnInfoWindowLongClickListener;
|
||||
private MapboxMap.OnFlingListener mOnFlingListener;
|
||||
private MapboxMap.OnScrollListener mOnScrollListener;
|
||||
private MapboxMap.OnMyLocationTrackingModeChangeListener mOnMyLocationTrackingModeChangeListener;
|
||||
@@ -849,6 +850,25 @@ public class MapboxMap {
|
||||
return mOnInfoWindowClickListener;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a callback that's invoked when a marker's info window is long pressed.
|
||||
*
|
||||
* @param listener The callback that's invoked when a marker's info window is long pressed. To unset the callback, use null.
|
||||
*/
|
||||
@UiThread
|
||||
public void setOnInfoWindowLongClickListener(@Nullable OnInfoWindowLongClickListener listener) {
|
||||
mOnInfoWindowLongClickListener = listener;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the InfoWindow long click listener
|
||||
*
|
||||
* @return Current active InfoWindow long Click Listener
|
||||
*/
|
||||
public OnInfoWindowLongClickListener getOnInfoWindowLongClickListener() {
|
||||
return mOnInfoWindowLongClickListener;
|
||||
}
|
||||
|
||||
//
|
||||
// User location
|
||||
//
|
||||
@@ -1133,6 +1153,21 @@ public class MapboxMap {
|
||||
boolean onMarkerClick(@NonNull Marker marker);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback interface for when the user long presses on a marker's info window.
|
||||
*
|
||||
* @see MapboxMap#setOnInfoWindowClickListener(OnInfoWindowClickListener)
|
||||
*/
|
||||
public interface OnInfoWindowLongClickListener {
|
||||
|
||||
/**
|
||||
* Called when the user makes a long-press gesture on the marker's info window.
|
||||
*
|
||||
* @param marker The marker were the info window is attached to
|
||||
*/
|
||||
void onInfoWindowLongClick(Marker marker);
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface definition for a callback to be invoked when an info window will be shown.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user