_onRotateStart(e) {
    // prevent that the limit Markers are calculated new
    this._preventRenderingMarkers(true);
    this._rotationOriginLatLng = this._getRotationCenter().clone();
    this._rotationOriginPoint = _toPoint(this._map, this._rotationOriginLatLng);
    this._rotationStartPoint = _toPoint(this._map, e.target.getLatLng());
    // we need to store the initial latlngs so we can always re-calc from the origin latlngs
    this._initialRotateLatLng = copyLatLngs(this._layer);
    this._startAngle = this.getAngle();

    const originLatLngs = copyLatLngs(
      this._rotationLayer,
      this._rotationLayer.pm._rotateOrgLatLng
    );

    this._fireRotationStart(this._rotationLayer, originLatLngs);
    this._fireRotationStart(this._map, originLatLngs);
  }
We create a temporary polygon with the same latlngs as the layer that we want to rotate.
Why polygon? Because then we have the correct center also for polylines with `layer.getCenter()`.
We reference the origin layer as `_rotationLayer`. The rotate listeners (`_onRotate...()`) are only applied to the temp polygon and from there we need to rotate the `_rotationLayer` too.