':param **opts: options to pass to the Map for server-side processing'

def __init__(self, **opts):

    self.setup = False
    self.callback = None
    self.opts = opts
    self.id = map_id = opts.get('id', 'default_map')
    self.options = {}
    components = [DIV(DIV(_class='map_loader'), _id=('%s_panel' % map_id))]
    self.components = components
    for c in components:
        self._setnode(c)
    _class = 'map_wrapper'
    if opts.get('window'):
        _class = ('%s    fullscreen' % _class)
    if opts.get('print_mode'):
        _class = ('%s    print' % _class)
    self.attributes = {'_class': _class, '_id': map_id}
    self.parent = None
    if opts.get('color_picker'):
        s3 = current.response.s3
        if s3.debug:
            style = 'plugins/spectrum.css'
        else:
            style = 'plugins/spectrum.min.css'
        if (style not in s3.stylesheets):
            s3.stylesheets.append(style)
