Skip to content

Commit a670949

Browse files
authoredOct 22, 2024··
fix(google-maps): expose all clusterer types (#29905)
Exposes all the types related to the clusterer from the `google-maps` endpoint. Fixes #29901.
1 parent 5ad133d commit a670949

File tree

2 files changed

+138
-7
lines changed

2 files changed

+138
-7
lines changed
 

‎src/google-maps/public-api.ts

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export {MapMarker} from './map-marker/map-marker';
2424
export {MapAdvancedMarker} from './map-advanced-marker/map-advanced-marker';
2525
export {DeprecatedMapMarkerClusterer} from './deprecated-map-marker-clusterer/deprecated-map-marker-clusterer';
2626
export {MapMarkerClusterer} from './map-marker-clusterer/map-marker-clusterer';
27+
export * from './map-marker-clusterer/map-marker-clusterer-types';
2728
export {MapPolygon} from './map-polygon/map-polygon';
2829
export {MapPolyline} from './map-polyline/map-polyline';
2930
export {MapRectangle} from './map-rectangle/map-rectangle';

‎tools/public_api_guard/google-maps/google-maps.md

+137-7
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,55 @@ import { OnInit } from '@angular/core';
1717
import { QueryList } from '@angular/core';
1818
import { SimpleChanges } from '@angular/core';
1919

20+
// @public (undocumented)
21+
interface Algorithm_2 {
22+
calculate: ({ markers, map }: AlgorithmInput) => AlgorithmOutput;
23+
}
24+
export { Algorithm_2 as Algorithm }
25+
26+
// @public (undocumented)
27+
export interface AlgorithmInput {
28+
map: google.maps.Map;
29+
mapCanvasProjection: google.maps.MapCanvasProjection;
30+
markers: Marker[];
31+
}
32+
33+
// @public (undocumented)
34+
export interface AlgorithmOptions {
35+
// (undocumented)
36+
maxZoom?: number;
37+
}
38+
39+
// @public (undocumented)
40+
export interface AlgorithmOutput {
41+
changed?: boolean;
42+
clusters: Cluster[];
43+
}
44+
2045
// @public
2146
export type AriaLabelFn = (text: string) => string;
2247

2348
// @public
2449
export type Calculator = (markers: google.maps.Marker[], clusterIconStylesCount: number) => ClusterIconInfo;
2550

51+
// @public (undocumented)
52+
export class Cluster {
53+
constructor({ markers, position }: ClusterOptions);
54+
// (undocumented)
55+
get bounds(): google.maps.LatLngBounds | undefined;
56+
get count(): number;
57+
delete(): void;
58+
// (undocumented)
59+
marker?: Marker;
60+
// (undocumented)
61+
readonly markers?: Marker[];
62+
// (undocumented)
63+
get position(): google.maps.LatLng;
64+
// (undocumented)
65+
protected _position: google.maps.LatLng;
66+
push(marker: Marker): void;
67+
}
68+
2669
// @public
2770
export interface ClusterIconStyle {
2871
// (undocumented)
@@ -55,6 +98,36 @@ export interface ClusterIconStyle {
5598
width: number;
5699
}
57100

101+
// @public (undocumented)
102+
export interface ClusterOptions {
103+
// (undocumented)
104+
markers?: Marker[];
105+
// (undocumented)
106+
position?: google.maps.LatLng | google.maps.LatLngLiteral;
107+
}
108+
109+
// @public (undocumented)
110+
export class ClusterStats {
111+
constructor(markers: Marker[], clusters: Cluster[]);
112+
// (undocumented)
113+
readonly clusters: {
114+
count: number;
115+
markers: {
116+
mean: number;
117+
sum: number;
118+
min: number;
119+
max: number;
120+
};
121+
};
122+
// (undocumented)
123+
readonly markers: {
124+
sum: number;
125+
};
126+
}
127+
128+
// @public (undocumented)
129+
export const defaultOnClusterClickHandler: onClusterClickHandler;
130+
58131
// @public @deprecated
59132
export class DeprecatedMapMarkerClusterer implements OnInit, AfterContentInit, OnChanges, OnDestroy {
60133
constructor(...args: unknown[]);
@@ -70,7 +143,7 @@ export class DeprecatedMapMarkerClusterer implements OnInit, AfterContentInit, O
70143
set calculator(calculator: Calculator);
71144
// (undocumented)
72145
set clusterClass(clusterClass: string);
73-
readonly clusterClick: Observable<Cluster>;
146+
readonly clusterClick: Observable<Cluster_2>;
74147
readonly clusteringbegin: Observable<void>;
75148
readonly clusteringend: Observable<void>;
76149
// (undocumented)
@@ -86,7 +159,7 @@ export class DeprecatedMapMarkerClusterer implements OnInit, AfterContentInit, O
86159
// (undocumented)
87160
getClusterClass(): string;
88161
// (undocumented)
89-
getClusters(): Cluster[];
162+
getClusters(): Cluster_2[];
90163
// (undocumented)
91164
getEnableRetinaIcons(): boolean;
92165
// (undocumented)
@@ -125,8 +198,8 @@ export class DeprecatedMapMarkerClusterer implements OnInit, AfterContentInit, O
125198
set imagePath(imagePath: string);
126199
// (undocumented)
127200
set imageSizes(imageSizes: number[]);
128-
markerClusterer?: MarkerClusterer;
129-
readonly markerClustererInitialized: EventEmitter<MarkerClusterer>;
201+
markerClusterer?: MarkerClusterer_2;
202+
readonly markerClustererInitialized: EventEmitter<MarkerClusterer_2>;
130203
// (undocumented)
131204
_markers: QueryList<MapMarker>;
132205
// (undocumented)
@@ -604,11 +677,11 @@ export class MapMarker implements OnInit, OnChanges, OnDestroy, MapAnchorPoint,
604677
// @public
605678
export class MapMarkerClusterer implements OnInit, OnChanges, OnDestroy {
606679
algorithm: Algorithm_2;
607-
readonly clusterClick: EventEmitter<Cluster_2>;
680+
readonly clusterClick: EventEmitter<Cluster>;
608681
readonly clusteringbegin: Observable<void>;
609682
readonly clusteringend: Observable<void>;
610-
markerClusterer?: MarkerClusterer_2;
611-
readonly markerClustererInitialized: EventEmitter<MarkerClusterer_2>;
683+
markerClusterer?: MarkerClusterer;
684+
readonly markerClustererInitialized: EventEmitter<MarkerClusterer>;
612685
// (undocumented)
613686
_markers: QueryList<MarkerDirective>;
614687
// (undocumented)
@@ -758,6 +831,55 @@ export class MapTransitLayer implements OnInit, OnDestroy {
758831
static ɵfac: i0.ɵɵFactoryDeclaration<MapTransitLayer, never>;
759832
}
760833

834+
// @public (undocumented)
835+
export class MarkerClusterer extends google.maps.OverlayView {
836+
constructor({ map, markers, algorithmOptions, algorithm, renderer, onClusterClick, }: MarkerClustererOptions_2);
837+
// (undocumented)
838+
addMarker(marker: Marker, noDraw?: boolean): void;
839+
// (undocumented)
840+
addMarkers(markers: Marker[], noDraw?: boolean): void;
841+
// (undocumented)
842+
protected algorithm: Algorithm_2;
843+
// (undocumented)
844+
clearMarkers(noDraw?: boolean): void;
845+
// (undocumented)
846+
protected clusters: Cluster[];
847+
// (undocumented)
848+
protected idleListener: google.maps.MapsEventListener;
849+
// (undocumented)
850+
protected map: google.maps.Map | null;
851+
// (undocumented)
852+
protected markers: Marker[];
853+
// (undocumented)
854+
onAdd(): void;
855+
// (undocumented)
856+
onClusterClick: onClusterClickHandler;
857+
// (undocumented)
858+
onRemove(): void;
859+
// (undocumented)
860+
removeMarker(marker: Marker, noDraw?: boolean): boolean;
861+
// (undocumented)
862+
removeMarkers(markers: Marker[], noDraw?: boolean): boolean;
863+
// (undocumented)
864+
render(): void;
865+
// (undocumented)
866+
protected renderClusters(): void;
867+
// (undocumented)
868+
protected renderer: Renderer;
869+
// (undocumented)
870+
protected reset(): void;
871+
}
872+
873+
// @public (undocumented)
874+
export enum MarkerClustererEvents {
875+
// (undocumented)
876+
CLUSTER_CLICK = "click",
877+
// (undocumented)
878+
CLUSTERING_BEGIN = "clusteringbegin",
879+
// (undocumented)
880+
CLUSTERING_END = "clusteringend"
881+
}
882+
761883
// @public
762884
export interface MarkerClustererOptions {
763885
// (undocumented)
@@ -798,6 +920,14 @@ export interface MarkerClustererOptions {
798920
zoomOnClick?: boolean;
799921
}
800922

923+
// @public (undocumented)
924+
export type onClusterClickHandler = (event: google.maps.MapMouseEvent, cluster: Cluster, map: google.maps.Map) => void;
925+
926+
// @public (undocumented)
927+
export interface Renderer {
928+
render(cluster: Cluster, stats: ClusterStats, map: google.maps.Map): Marker;
929+
}
930+
801931
// (No @packageDocumentation comment for this package)
802932

803933
```

0 commit comments

Comments
 (0)
Please sign in to comment.