code: function (center, zoom, preserveMapOffset, afterZoomAnim) {
  
  		var zoomChanged = (this._zoom !== zoom);
  
  		if (!afterZoomAnim) {
  			this.fire('movestart');
  
  			if (zoomChanged) {
  				this.fire('zoomstart');
  			}
  		}
  
  		this._zoom = zoom;
  		this._initialCenter = center;
  
  		this._initialTopLeftPoint = this._getNewTopLeftPoint(center);
  
  		if (!preserveMapOffset) {
  			L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0));
  		} else {
  			this._initialTopLeftPoint._add(this._getMapPanePos());
  		}
  
  		this._tileLayersToLoad = this._tileLayersNum;
  
  		var loading = !this._loaded;
  		this._loaded = true;
  
  		if (loading) {
  			this.fire('load');
  			this.eachLayer(this._layerAdd, this);
  		}
  
  		this.fire('viewreset', {hard: !preserveMapOffset});
  
  		this.fire('move');
  
  		if (zoomChanged || afterZoomAnim) {
  			this.fire('zoomend');
  		}
  
  		this.fire('moveend', {hard: !preserveMapOffset});
  	}
docs: private methods that modify map state