Skip to content

feat!: Add support for setOnInfoWindowCloseListener() for Markers #1541

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,10 @@ public class ClusterManager<T extends ClusterItem> implements

private OnClusterItemClickListener<T> mOnClusterItemClickListener;
private OnClusterInfoWindowClickListener<T> mOnClusterInfoWindowClickListener;
private OnClusterInfoWindowCloseListener<T> mOnClusterInfoWindowCloseListener;
private OnClusterInfoWindowLongClickListener<T> mOnClusterInfoWindowLongClickListener;
private OnClusterItemInfoWindowClickListener<T> mOnClusterItemInfoWindowClickListener;
private OnClusterItemInfoWindowCloseListener<T> mOnClusterItemInfoWindowCloseListener;
private OnClusterItemInfoWindowLongClickListener<T> mOnClusterItemInfoWindowLongClickListener;
private OnClusterClickListener<T> mOnClusterClickListener;

Expand Down Expand Up @@ -109,9 +111,11 @@ public void setRenderer(ClusterRenderer<T> renderer) {
mRenderer.onAdd();
mRenderer.setOnClusterClickListener(mOnClusterClickListener);
mRenderer.setOnClusterInfoWindowClickListener(mOnClusterInfoWindowClickListener);
mRenderer.setOnClusterInfoWindowCloseListener(mOnClusterInfoWindowCloseListener);
mRenderer.setOnClusterInfoWindowLongClickListener(mOnClusterInfoWindowLongClickListener);
mRenderer.setOnClusterItemClickListener(mOnClusterItemClickListener);
mRenderer.setOnClusterItemInfoWindowClickListener(mOnClusterItemInfoWindowClickListener);
mRenderer.setOnClusterItemInfoWindowCloseListener(mOnClusterItemInfoWindowCloseListener);
mRenderer.setOnClusterItemInfoWindowLongClickListener(mOnClusterItemInfoWindowLongClickListener);
cluster();
}
Expand Down Expand Up @@ -370,6 +374,16 @@ public void setOnClusterInfoWindowClickListener(OnClusterInfoWindowClickListener
mRenderer.setOnClusterInfoWindowClickListener(listener);
}

/**
* Sets a callback that's invoked when a Cluster info window is closed. Note: For this listener to function,
* the ClusterManager must be added as a info window click listener to the map.
*/
public void setOnClusterInfoWindowCloseListener(OnClusterInfoWindowCloseListener<T> listener) {
mOnClusterInfoWindowCloseListener = listener;
mRenderer.setOnClusterInfoWindowCloseListener(listener);
}


/**
* Sets a callback that's invoked when a Cluster info window is long-pressed. Note: For this listener to function,
* the ClusterManager must be added as a info window click listener to the map.
Expand Down Expand Up @@ -397,6 +411,16 @@ public void setOnClusterItemInfoWindowClickListener(OnClusterItemInfoWindowClick
mRenderer.setOnClusterItemInfoWindowClickListener(listener);
}


/**
* Sets a callback that's invoked when an individual ClusterItem's Info Window is closed. Note: For this
* listener to function, the ClusterManager must be added as a info window click listener to the map.
*/
public void setOnClusterItemInfoWindowCloseListener(OnClusterItemInfoWindowCloseListener<T> listener) {
mOnClusterItemInfoWindowCloseListener = listener;
mRenderer.setOnClusterItemInfoWindowCloseListener(listener);
}

/**
* Sets a callback that's invoked when an individual ClusterItem's Info Window is long-pressed. Note: For this
* listener to function, the ClusterManager must be added as a info window click listener to the map.
Expand Down Expand Up @@ -425,6 +449,13 @@ public interface OnClusterInfoWindowClickListener<T extends ClusterItem> {
void onClusterInfoWindowClick(Cluster<T> cluster);
}

/**
* Called when a Cluster's Info Window is closed.
*/
public interface OnClusterInfoWindowCloseListener<T extends ClusterItem> {
void onClusterInfoWindowClose(Cluster<T> cluster);
}

/**
* Called when a Cluster's Info Window is long clicked.
*/
Expand Down Expand Up @@ -456,6 +487,13 @@ public interface OnClusterItemInfoWindowClickListener<T extends ClusterItem> {
void onClusterItemInfoWindowClick(T item);
}

/**
* Called when an individual ClusterItem's Info Window is closed.
*/
public interface OnClusterItemInfoWindowCloseListener<T extends ClusterItem> {
void onClusterItemInfoWindowClose(T item);
}

/**
* Called when an individual ClusterItem's Info Window is long clicked.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,16 @@ public interface ClusterRenderer<T extends ClusterItem> {

void setOnClusterInfoWindowClickListener(ClusterManager.OnClusterInfoWindowClickListener<T> listener);

void setOnClusterInfoWindowCloseListener(ClusterManager.OnClusterInfoWindowCloseListener<T> listener);

void setOnClusterInfoWindowLongClickListener(ClusterManager.OnClusterInfoWindowLongClickListener<T> listener);

void setOnClusterItemClickListener(ClusterManager.OnClusterItemClickListener<T> listener);

void setOnClusterItemInfoWindowClickListener(ClusterManager.OnClusterItemInfoWindowClickListener<T> listener);

void setOnClusterItemInfoWindowCloseListener(ClusterManager.OnClusterItemInfoWindowCloseListener<T> listener);

void setOnClusterItemInfoWindowLongClickListener(ClusterManager.OnClusterItemInfoWindowLongClickListener<T> listener);

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,11 @@ public void setAnimationType(AnimationType type) {

private ClusterManager.OnClusterClickListener<T> mClickListener;
private ClusterManager.OnClusterInfoWindowClickListener<T> mInfoWindowClickListener;
private ClusterManager.OnClusterInfoWindowCloseListener<T> mInfoWindowCloseListener;
private ClusterManager.OnClusterInfoWindowLongClickListener<T> mInfoWindowLongClickListener;
private ClusterManager.OnClusterItemClickListener<T> mItemClickListener;
private ClusterManager.OnClusterItemInfoWindowClickListener<T> mItemInfoWindowClickListener;
private ClusterManager.OnClusterItemInfoWindowCloseListener<T> mItemInfoWindowCloseListener;
private ClusterManager.OnClusterItemInfoWindowLongClickListener<T> mItemInfoWindowLongClickListener;

public ClusterRendererMultipleItems(Context context, GoogleMap map, ClusterManager<T> clusterManager) {
Expand Down Expand Up @@ -205,6 +207,13 @@ public void onAdd() {
}
});

mClusterManager.getMarkerCollection().setOnInfoWindowCloseListener(marker -> {
RendererLogger.d("ClusterRenderer", "Info window closed for marker: " + marker);
if (mItemInfoWindowCloseListener != null) {
mItemInfoWindowCloseListener.onClusterItemInfoWindowClose(mMarkerCache.get(marker));
}
});

mClusterManager.getMarkerCollection().setOnInfoWindowLongClickListener(marker -> {
RendererLogger.d("ClusterRenderer", "Info window long-clicked for marker: " + marker);
if (mItemInfoWindowLongClickListener != null) {
Expand All @@ -223,6 +232,13 @@ public void onAdd() {
}
});

mClusterManager.getClusterMarkerCollection().setOnInfoWindowCloseListener(marker -> {
RendererLogger.d("ClusterRenderer", "Info window closed for cluster marker: " + marker);
if (mInfoWindowCloseListener != null) {
mInfoWindowCloseListener.onClusterInfoWindowClose(mClusterMarkerCache.get(marker));
}
});

mClusterManager.getClusterMarkerCollection().setOnInfoWindowLongClickListener(marker -> {
RendererLogger.d("ClusterRenderer", "Info window long-clicked for cluster marker: " + marker);
if (mInfoWindowLongClickListener != null) {
Expand All @@ -236,9 +252,11 @@ public void onAdd() {
public void onRemove() {
mClusterManager.getMarkerCollection().setOnMarkerClickListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowClickListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowCloseListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowLongClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnMarkerClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowCloseListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowLongClickListener(null);
}

Expand Down Expand Up @@ -591,6 +609,11 @@ public void setOnClusterInfoWindowClickListener(ClusterManager.OnClusterInfoWind
mInfoWindowClickListener = listener;
}

@Override
public void setOnClusterInfoWindowCloseListener(ClusterManager.OnClusterInfoWindowCloseListener<T> listener) {
mInfoWindowCloseListener = listener;
}

@Override
public void setOnClusterInfoWindowLongClickListener(ClusterManager.OnClusterInfoWindowLongClickListener<T> listener) {
mInfoWindowLongClickListener = listener;
Expand All @@ -606,6 +629,11 @@ public void setOnClusterItemInfoWindowClickListener(ClusterManager.OnClusterItem
mItemInfoWindowClickListener = listener;
}

@Override
public void setOnClusterItemInfoWindowCloseListener(ClusterManager.OnClusterItemInfoWindowCloseListener<T> listener) {
mItemInfoWindowCloseListener = listener;
}

@Override
public void setOnClusterItemInfoWindowLongClickListener(ClusterManager.OnClusterItemInfoWindowLongClickListener<T> listener) {
mItemInfoWindowLongClickListener = listener;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,11 @@ public class DefaultAdvancedMarkersClusterRenderer<T extends ClusterItem> implem

private ClusterManager.OnClusterClickListener<T> mClickListener;
private ClusterManager.OnClusterInfoWindowClickListener<T> mInfoWindowClickListener;
private ClusterManager.OnClusterInfoWindowCloseListener<T> mInfoWindowCloseListener;
private ClusterManager.OnClusterInfoWindowLongClickListener<T> mInfoWindowLongClickListener;
private ClusterManager.OnClusterItemClickListener<T> mItemClickListener;
private ClusterManager.OnClusterItemInfoWindowClickListener<T> mItemInfoWindowClickListener;
private ClusterManager.OnClusterItemInfoWindowCloseListener<T> mItemInfoWindowCloseListener;
private ClusterManager.OnClusterItemInfoWindowLongClickListener<T> mItemInfoWindowLongClickListener;

public DefaultAdvancedMarkersClusterRenderer(Context context, GoogleMap map, ClusterManager<T> clusterManager) {
Expand Down Expand Up @@ -162,6 +164,15 @@ public void onInfoWindowClick(@NonNull Marker marker) {
}
});

mClusterManager.getMarkerCollection().setOnInfoWindowCloseListener(new GoogleMap.OnInfoWindowCloseListener() {
@Override
public void onInfoWindowClose(@NonNull Marker marker) {
if (mItemInfoWindowCloseListener != null) {
mItemInfoWindowCloseListener.onClusterItemInfoWindowClose(mMarkerCache.get(marker));
}
}
});

mClusterManager.getMarkerCollection().setOnInfoWindowLongClickListener(marker -> {
if (mItemInfoWindowLongClickListener != null) {
mItemInfoWindowLongClickListener.onClusterItemInfoWindowLongClick(mMarkerCache.get(marker));
Expand All @@ -177,6 +188,12 @@ public void onInfoWindowClick(@NonNull Marker marker) {
}
});

mClusterManager.getClusterMarkerCollection().setOnInfoWindowCloseListener(marker -> {
if (mInfoWindowCloseListener != null) {
mInfoWindowCloseListener.onClusterInfoWindowClose(mClusterMarkerCache.get(marker));
}
});

mClusterManager.getClusterMarkerCollection().setOnInfoWindowLongClickListener(marker -> {
if (mInfoWindowLongClickListener != null) {
mInfoWindowLongClickListener.onClusterInfoWindowLongClick(mClusterMarkerCache.get(marker));
Expand All @@ -188,9 +205,11 @@ public void onInfoWindowClick(@NonNull Marker marker) {
public void onRemove() {
mClusterManager.getMarkerCollection().setOnMarkerClickListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowClickListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowCloseListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowLongClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnMarkerClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowCloseListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowLongClickListener(null);
}

Expand Down Expand Up @@ -543,6 +562,11 @@ public void setOnClusterInfoWindowClickListener(ClusterManager.OnClusterInfoWind
mInfoWindowClickListener = listener;
}

@Override
public void setOnClusterInfoWindowCloseListener(ClusterManager.OnClusterInfoWindowCloseListener<T> listener) {
mInfoWindowCloseListener = listener;
}

@Override
public void setOnClusterInfoWindowLongClickListener(ClusterManager.OnClusterInfoWindowLongClickListener<T> listener) {
mInfoWindowLongClickListener = listener;
Expand All @@ -558,6 +582,11 @@ public void setOnClusterItemInfoWindowClickListener(ClusterManager.OnClusterItem
mItemInfoWindowClickListener = listener;
}

@Override
public void setOnClusterItemInfoWindowCloseListener(ClusterManager.OnClusterItemInfoWindowCloseListener<T> listener) {
mItemInfoWindowCloseListener = listener;
}

@Override
public void setOnClusterItemInfoWindowLongClickListener(ClusterManager.OnClusterItemInfoWindowLongClickListener<T> listener) {
mItemInfoWindowLongClickListener = listener;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,11 @@ public class DefaultClusterRenderer<T extends ClusterItem> implements ClusterRen

private ClusterManager.OnClusterClickListener<T> mClickListener;
private ClusterManager.OnClusterInfoWindowClickListener<T> mInfoWindowClickListener;
private ClusterManager.OnClusterInfoWindowCloseListener<T> mInfoWindowCloseListener;
private ClusterManager.OnClusterInfoWindowLongClickListener<T> mInfoWindowLongClickListener;
private ClusterManager.OnClusterItemClickListener<T> mItemClickListener;
private ClusterManager.OnClusterItemInfoWindowClickListener<T> mItemInfoWindowClickListener;
private ClusterManager.OnClusterItemInfoWindowCloseListener<T> mItemInfoWindowCloseListener;
private ClusterManager.OnClusterItemInfoWindowLongClickListener<T> mItemInfoWindowLongClickListener;

public DefaultClusterRenderer(Context context, GoogleMap map, ClusterManager<T> clusterManager) {
Expand All @@ -153,6 +155,12 @@ public void onAdd() {
}
});

mClusterManager.getMarkerCollection().setOnInfoWindowCloseListener(marker -> {
if (mItemInfoWindowCloseListener != null) {
mItemInfoWindowCloseListener.onClusterItemInfoWindowClose(mMarkerCache.get(marker));
}
});

mClusterManager.getMarkerCollection().setOnInfoWindowLongClickListener(marker -> {
if (mItemInfoWindowLongClickListener != null) {
mItemInfoWindowLongClickListener.onClusterItemInfoWindowLongClick(mMarkerCache.get(marker));
Expand All @@ -168,6 +176,12 @@ public void onAdd() {
}
});

mClusterManager.getClusterMarkerCollection().setOnInfoWindowCloseListener(marker -> {
if (mInfoWindowCloseListener != null) {
mInfoWindowCloseListener.onClusterInfoWindowClose(mClusterMarkerCache.get(marker));
}
});

mClusterManager.getClusterMarkerCollection().setOnInfoWindowLongClickListener(marker -> {
if (mInfoWindowLongClickListener != null) {
mInfoWindowLongClickListener.onClusterInfoWindowLongClick(mClusterMarkerCache.get(marker));
Expand All @@ -179,9 +193,11 @@ public void onAdd() {
public void onRemove() {
mClusterManager.getMarkerCollection().setOnMarkerClickListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowClickListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowCloseListener(null);
mClusterManager.getMarkerCollection().setOnInfoWindowLongClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnMarkerClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowClickListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowCloseListener(null);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowLongClickListener(null);
}

Expand Down Expand Up @@ -534,6 +550,11 @@ public void setOnClusterInfoWindowClickListener(ClusterManager.OnClusterInfoWind
mInfoWindowClickListener = listener;
}

@Override
public void setOnClusterInfoWindowCloseListener(ClusterManager.OnClusterInfoWindowCloseListener<T> listener) {
mInfoWindowCloseListener = listener;
}

@Override
public void setOnClusterInfoWindowLongClickListener(ClusterManager.OnClusterInfoWindowLongClickListener<T> listener) {
mInfoWindowLongClickListener = listener;
Expand All @@ -549,6 +570,11 @@ public void setOnClusterItemInfoWindowClickListener(ClusterManager.OnClusterItem
mItemInfoWindowClickListener = listener;
}

@Override
public void setOnClusterItemInfoWindowCloseListener(ClusterManager.OnClusterItemInfoWindowCloseListener<T> listener) {
mItemInfoWindowCloseListener = listener;
}

@Override
public void setOnClusterItemInfoWindowLongClickListener(ClusterManager.OnClusterItemInfoWindowLongClickListener<T> listener) {
mItemInfoWindowLongClickListener = listener;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
*/
public class MarkerManager extends MapObjectManager<Marker, MarkerManager.Collection> implements
GoogleMap.OnInfoWindowClickListener,
GoogleMap.OnInfoWindowCloseListener,
GoogleMap.OnMarkerClickListener,
GoogleMap.OnMarkerDragListener,
GoogleMap.InfoWindowAdapter,
Expand All @@ -47,6 +48,7 @@ public MarkerManager(GoogleMap map) {
void setListenersOnUiThread() {
if (mMap != null) {
mMap.setOnInfoWindowClickListener(this);
mMap.setOnInfoWindowCloseListener(this);
mMap.setOnInfoWindowLongClickListener(this);
mMap.setOnMarkerClickListener(this);
mMap.setOnMarkerDragListener(this);
Expand Down Expand Up @@ -84,6 +86,14 @@ public void onInfoWindowClick(@NonNull Marker marker) {
}
}

@Override
public void onInfoWindowClose(@NonNull Marker marker) {
Collection collection = mAllObjects.get(marker);
if (collection != null && collection.mInfoWindowCloseListener != null) {
collection.mInfoWindowCloseListener.onInfoWindowClose(marker);
}
}

@Override
public void onInfoWindowLongClick(@NonNull Marker marker) {
Collection collection = mAllObjects.get(marker);
Expand Down Expand Up @@ -132,6 +142,7 @@ protected void removeObjectFromMap(Marker object) {

public class Collection extends MapObjectManager.Collection {
private GoogleMap.OnInfoWindowClickListener mInfoWindowClickListener;
private GoogleMap.OnInfoWindowCloseListener mInfoWindowCloseListener;
private GoogleMap.OnInfoWindowLongClickListener mInfoWindowLongClickListener;
private GoogleMap.OnMarkerClickListener mMarkerClickListener;
private GoogleMap.OnMarkerDragListener mMarkerDragListener;
Expand Down Expand Up @@ -187,6 +198,10 @@ public void setOnInfoWindowClickListener(GoogleMap.OnInfoWindowClickListener inf
mInfoWindowClickListener = infoWindowClickListener;
}

public void setOnInfoWindowCloseListener(GoogleMap.OnInfoWindowCloseListener infoWindowCloseListener) {
mInfoWindowCloseListener = infoWindowCloseListener;
}

public void setOnInfoWindowLongClickListener(GoogleMap.OnInfoWindowLongClickListener infoWindowLongClickListener) {
mInfoWindowLongClickListener = infoWindowLongClickListener;
}
Expand Down
Loading