We have it pretty similar to drawing app, however made the stack contain the map data of the previous verison of the map so that certain features like select and deselect aren't stored as undoable actions.
We have a mostly working one right now, we made a new class for it including the stacks of the data, almost similar to drawing app.
My group made used the same logic as in the undo redo handler in drawing app. But we removed everything GUI related. And redrew the map after the undo was called.
The Undo Redo functionality is almost similar to the one used in the drawing App.