From faea24de0f467dbc009af07b44ca0125eddd7fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Wed, 12 Apr 2017 20:40:42 +0200 Subject: [PATCH] feat(AgmMap): recentering for triggerResize When you call the triggerResize method of AgmMap, the map gets recentered automaticaly. Closes #789 Closes #976 BREAKING CHANGES Recentering of the map after a triggerResize call is now the default behavoir. You can create the previous behavoir with triggerResize(false). --- src/core/directives/map.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/core/directives/map.ts b/src/core/directives/map.ts index edf74ff5d..484c88f4a 100644 --- a/src/core/directives/map.ts +++ b/src/core/directives/map.ts @@ -395,15 +395,22 @@ export class AgmMap implements OnChanges, OnInit, OnDestroy { /** * Triggers a resize event on the google map instance. + * When recenter is true, the of the google map gets called with the current lat/lng values or fitBounds value to recenter the map. * Returns a promise that gets resolved after the event was triggered. */ - triggerResize(): Promise { + triggerResize(recenter: boolean = true): Promise { // Note: When we would trigger the resize event and show the map in the same turn (which is a // common case for triggering a resize event), then the resize event would not // work (to show the map), so we trigger the event in a timeout. return new Promise((resolve) => { - setTimeout( - () => { return this._mapsWrapper.triggerMapEvent('resize').then(() => resolve()); }); + setTimeout(() => { + return this._mapsWrapper.triggerMapEvent('resize').then(() => { + if (recenter) { + this.fitBounds != null ? this._fitBounds() : this._setCenter(); + } + resolve(); + }); + }); }); } @@ -423,6 +430,10 @@ export class AgmMap implements OnChanges, OnInit, OnDestroy { if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') { return; } + this._setCenter(); + } + + private _setCenter() { let newCenter = { lat: this.latitude, lng: this.longitude,