diff --git a/src/markerclusterer.test.ts b/src/markerclusterer.test.ts index 2f7580bb..af7d3837 100644 --- a/src/markerclusterer.test.ts +++ b/src/markerclusterer.test.ts @@ -253,7 +253,8 @@ describe.each(markerClasses)( clusters.forEach((cluster) => { expect(MarkerUtils.setMap).toBeCalledWith(cluster.marker, map); expect(cluster.marker?.addListener).toHaveBeenCalledWith( - "click", + // legacy Marker uses 'click' events, whereas AdvancedMarkerElement uses 'gmp-click' + MarkerUtils.isAdvancedMarker(cluster.marker!) ? "gmp-click" : "click", expect.any(Function) ); }); diff --git a/src/markerclusterer.ts b/src/markerclusterer.ts index d97ccb62..4ae81b70 100644 --- a/src/markerclusterer.ts +++ b/src/markerclusterer.ts @@ -52,6 +52,7 @@ export enum MarkerClustererEvents { CLUSTERING_BEGIN = "clusteringbegin", CLUSTERING_END = "clusteringend", CLUSTER_CLICK = "click", + GMP_CLICK = "gmp-click", } export const defaultOnClusterClickHandler: onClusterClickHandler = ( @@ -259,8 +260,15 @@ export class MarkerClusterer extends OverlayViewSafe { // Make sure all individual markers are removed from the map. cluster.markers.forEach((marker) => MarkerUtils.setMap(marker, null)); if (this.onClusterClick) { + // legacy Marker uses 'click' events, whereas AdvancedMarkerElement uses 'gmp-click' + const markerClickEventName = MarkerUtils.isAdvancedMarker( + cluster.marker + ) + ? MarkerClustererEvents.GMP_CLICK + : MarkerClustererEvents.CLUSTER_CLICK; + cluster.marker.addListener( - "click", + markerClickEventName, /* istanbul ignore next */ (event: google.maps.MapMouseEvent) => { google.maps.event.trigger(