getCoordinateAtM(m, extrapolate, interpolate) {
    if (
      (this.layout != 'XYM' && this.layout != 'XYZM') ||
      this.flatCoordinates.length === 0
    ) {
      return null;
    }
    extrapolate = extrapolate !== undefined ? extrapolate : false;
    interpolate = interpolate !== undefined ? interpolate : false;
    return lineStringsCoordinateAtM(
      this.flatCoordinates,
      0,
      this.ends_,
      this.stride,
      m,
      extrapolate,
      interpolate,
    );
  }
Returns the coordinate at `m` using linear interpolation, or `null` if no
such coordinate exists.

`extrapolate` controls extrapolation beyond the range of Ms in the
MultiLineString. If `extrapolate` is `true` then Ms less than the first
M will return the first coordinate and Ms greater than the last M will
return the last coordinate.

`interpolate` controls interpolation between consecutive LineStrings
within the MultiLineString. If `interpolate` is `true` the coordinates
will be linearly interpolated between the last coordinate of one LineString
and the first coordinate of the next LineString.  If `interpolate` is
`false` then the function will return `null` for Ms falling between
LineStrings.

@param {number} m M.
@param {boolean} [extrapolate] Extrapolate. Default is `false`.
@param {boolean} [interpolate] Interpolate. Default is `false`.
@return {import("../coordinate.js").Coordinate|null} Coordinate.
@api