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

Commit c18640c

Browse files
committed
feat(SebmGoogleMap): support map click event
Now, you can subscribe to map click events: ``` <sebm-google-map [latitude]="lat" [longitude]="lng" (mapClick)="mapClicked($event)"> </sebm-google-map> ``` The $event is a `MapMouseEvent` type that contains the coords of the click. ``` import {MapMouseEvent} from 'angular2-google-maps/core'; mapClicked(event: MapMouseEvent) { console.log(event.coords.lat, event.coords.lng); } ```
1 parent 5ed34be commit c18640c

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

docs/api/components_directives/sebmGoogleMap.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {SebmGoogleMap} from 'angular2-google-maps/core';
1818
```
1919

2020
```html
21-
<sebm-google-map [latitude]="lat" [longitude]="lng" [zoom]="zoom">
21+
<sebm-google-map [latitude]="lat" [longitude]="lng" [zoom]="zoom" (mapClick)="mapClicked($event)">
2222
</sebm-google-map>
2323
```
2424

@@ -32,4 +32,15 @@ import {SebmGoogleMap} from 'angular2-google-maps/core';
3232

3333
### Events
3434

35-
None
35+
| Event name | Arguments | Description |
36+
|------------|---------------------------------|----------------------------------------------|
37+
| mapClick | [MapMouseEvent](#MapMouseEvent) | Gets emitted when the user clicks on the map |
38+
39+
### Event Interfaces
40+
41+
#### MapMouseEvent <a name="mapClickEvent"></a>
42+
```typescript
43+
interface MapMouseEvent {
44+
coords: LatLngLiteral // { lat: number, lng: number }
45+
};
46+
```

src/directives.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export {SebmGoogleMap} from './directives/google-map';
1+
export {SebmGoogleMap, MapMouseEvent} from './directives/google-map';
22
export {SebmGoogleMapMarker} from './directives/google-map-marker';
33
export {ANGULAR2_GOOGLE_MAPS_DIRECTIVES} from './directives-const';

src/directives/google-map.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import {Component, Input, Renderer, ElementRef} from 'angular2/core';
1+
import {Component, Input, Output, Renderer, ElementRef, EventEmitter} from 'angular2/core';
22
import {GoogleMapsAPIWrapper} from '../services/google-maps-api-wrapper';
33
import {MarkerManager} from '../services/marker-manager';
4-
import {LatLng} from '../services/google-maps-types';
4+
import {LatLng, LatLngLiteral} from '../services/google-maps-types';
55

66
/**
77
* Todo: add docs
@@ -28,6 +28,8 @@ export class SebmGoogleMap {
2828
private _zoom: number = 8;
2929
private _mapsWrapper: GoogleMapsAPIWrapper;
3030

31+
@Output() mapClick: EventEmitter<MapMouseEvent> = new EventEmitter<MapMouseEvent>();
32+
3133
constructor(elem: ElementRef, _mapsWrapper: GoogleMapsAPIWrapper, renderer: Renderer) {
3234
this._mapsWrapper = _mapsWrapper;
3335
renderer.setElementClass(elem, 'sebm-google-map-container', true);
@@ -39,6 +41,7 @@ export class SebmGoogleMap {
3941
this._mapsWrapper.createMap(el, this._latitude, this._longitude);
4042
this._handleMapCenterChange();
4143
this._handleMapZoomChange();
44+
this._handleMapClick();
4245
}
4346

4447
@Input()
@@ -93,4 +96,17 @@ export class SebmGoogleMap {
9396
this._mapsWrapper.subscribeToMapEvent<void>('zoom_changed')
9497
.subscribe(() => { this._mapsWrapper.getZoom().then((z: number) => this._zoom = z); });
9598
}
99+
100+
private _handleMapClick() {
101+
this._mapsWrapper.subscribeToMapEvent<{latLng: LatLng}>('click')
102+
.subscribe((event: {latLng: LatLng}) => {
103+
this.mapClick.emit(
104+
<MapMouseEvent>{coords: {lat: event.latLng.lat(), lng: event.latLng.lng()}});
105+
});
106+
}
96107
}
108+
109+
/**
110+
* MapMouseEvent gets emitted when the user triggers mouse events on the map.
111+
*/
112+
export interface MapMouseEvent { coords: LatLngLiteral; }

0 commit comments

Comments
 (0)