I think that the answer is the same as the one to your recent post about canvases : use separate layers for different jobs. Imagine this -
1. You have several map layers, based on full screen panels. The bottom layer probably contains an imageView on which you have loaded your underlying map tile.
2. Above this you can have as many "layers" as you like. Each layer is a transparent panel with associated canvas. Each layer has a specific role - one might carry annotations, another might carry line drawings, and different layers could contain drawings for different feature types. We could call these "feature layers". Or you could just stuff everything on one panel/canvas.
3. The second-from-top layer is a final panel/canvas pair - this is your "working layer".
3. The top layer is simply a transparent panel. Its job is to pick up touch events.
Now, if the user want to draw a line he presses some button which is labelled "Draw arc". He makes three touch-downs on the top panel, but the arc is drawn on the canvas of the "working layer". If the user is happy then he presses another button that says "Done" and the line is copied to the appropriate feature layer, and the working layer is cleared. But the benefit of having the working layer is that, if the line is misdrawn then another "Erase" button can quickly clear that canvas ready for a second go.
Things get more complicated if you want to be able to pan the underlying map, but it is just a matter of doing the sums and redrawing the overlays with new coordinates. The maths in the main is only addition and subtraction. And there is nothing wrong with having a separate canvas for every drawn line - that would make it easy to delete or modify individual features, although there are probably better ways to manage that if you are writing a serious mapping application.