Skip to content
This repository was archived by the owner on Jun 23, 2025. It is now read-only.

Commit fec8b01

Browse files
DimaNikishinsebholstein
authored andcommitted
feat(AgmMarker): add clickable support
Setting marker clickable property Closes #994
1 parent 128c8f3 commit fec8b01

4 files changed

Lines changed: 27 additions & 6 deletions

File tree

src/core/directives/marker.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ export class AgmMarker implements OnDestroy, OnChanges, AfterContentInit {
9292
*/
9393
@Input() zIndex: number = 1;
9494

95+
/**
96+
* If true, the marker can be clicked. Default value is true.
97+
*/
98+
// tslint:disable-next-line:no-input-rename
99+
@Input('markerClickable') clickable: boolean = true;
100+
95101
/**
96102
* This event emitter gets emitted when the user clicks on the marker.
97103
*/
@@ -173,6 +179,9 @@ export class AgmMarker implements OnDestroy, OnChanges, AfterContentInit {
173179
if (changes['zIndex']) {
174180
this._markerManager.updateZIndex(this);
175181
}
182+
if (changes['clickable']) {
183+
this._markerManager.updateClickable(this);
184+
}
176185
}
177186

178187
private _addEventListeners() {

src/core/services/google-maps-types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export interface Marker extends MVCObject {
3333
setVisible(visible: boolean): void;
3434
setZIndex(zIndex: number): void;
3535
getLabel(): MarkerLabel;
36+
setClickable(clickable: boolean): void;
3637
}
3738

3839
export interface MarkerOptions {
@@ -45,6 +46,7 @@ export interface MarkerOptions {
4546
opacity?: number;
4647
visible?: boolean;
4748
zIndex?: number;
49+
clickable: boolean;
4850
}
4951

5052
export interface MarkerLabel {

src/core/services/managers/marker-manager.spec.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ describe('MarkerManager', () => {
3838
opacity: 1,
3939
visible: true,
4040
zIndex: 1,
41-
title: undefined
41+
title: undefined,
42+
clickable: true
4243
});
4344
}));
4445
});
@@ -84,7 +85,8 @@ describe('MarkerManager', () => {
8485
opacity: 1,
8586
visible: true,
8687
zIndex: 1,
87-
title: undefined
88+
title: undefined,
89+
clickable: true
8890
});
8991
const iconUrl = 'http://angular-maps.com/icon.png';
9092
newMarker.iconUrl = iconUrl;
@@ -116,7 +118,8 @@ describe('MarkerManager', () => {
116118
visible: true,
117119
opacity: 1,
118120
zIndex: 1,
119-
title: undefined
121+
title: undefined,
122+
clickable: true
120123
});
121124
const opacity = 0.4;
122125
newMarker.opacity = opacity;
@@ -149,7 +152,8 @@ describe('MarkerManager', () => {
149152
visible: false,
150153
opacity: 1,
151154
zIndex: 1,
152-
title: undefined
155+
title: undefined,
156+
clickable: true
153157
});
154158
newMarker.visible = true;
155159
return markerManager.updateVisible(newMarker).then(
@@ -180,7 +184,8 @@ describe('MarkerManager', () => {
180184
visible: false,
181185
opacity: 1,
182186
zIndex: 1,
183-
title: undefined
187+
title: undefined,
188+
clickable: true
184189
});
185190
const zIndex = 10;
186191
newMarker.zIndex = zIndex;

src/core/services/managers/marker-manager.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ export class MarkerManager {
6161
return this._markers.get(marker).then((m: Marker) => m.setZIndex(marker.zIndex));
6262
}
6363

64+
updateClickable(marker: AgmMarker): Promise<void> {
65+
return this._markers.get(marker).then((m: Marker) => m.setClickable(marker.clickable));
66+
}
67+
6468
addMarker(marker: AgmMarker) {
6569
const markerPromise = this._mapsWrapper.createMarker({
6670
position: {lat: marker.latitude, lng: marker.longitude},
@@ -70,7 +74,8 @@ export class MarkerManager {
7074
opacity: marker.opacity,
7175
visible: marker.visible,
7276
zIndex: marker.zIndex,
73-
title: marker.title
77+
title: marker.title,
78+
clickable: marker.clickable
7479
});
7580
this._markers.set(marker, markerPromise);
7681
}

0 commit comments

Comments
 (0)