a canvas-based map widget