protected function load() {
        if(file_exists(WT_ROOT.WT_MODULES_DIR.Constants::MODULE_MAJ_GEODISP_NAME.'/maps/'.$this->filename)){
            $xml = simplexml_load_file(WT_ROOT.WT_MODULES_DIR.Constants::MODULE_MAJ_GEODISP_NAME.'/maps/'.$this->filename);
            if($xml){
                $this->description = trim($xml->displayName);
                $this->top_level_name = trim($xml->topLevel);
                $this->canvas = new OutlineMapCanvas(
                    trim($xml->canvas->width),
                    trim($xml->canvas->height), 
                    trim($xml->canvas->maxcolor), 
                    trim($xml->canvas->hovercolor), 
                    trim($xml->canvas->bgcolor),
                    trim($xml->canvas->bgstroke),
                    trim($xml->canvas->defaultcolor), 
                    trim($xml->canvas->defaultstroke)
                );
                foreach($xml->subdivisions->children() as $subdivision){
                    $attributes = $subdivision->attributes();
                    $key = I18N::strtolower(trim($attributes['name']));
                    if(isset($attributes['parent'])) $key .= '@'. I18N::strtolower(trim($attributes['parent']));
                    $this->subdivisions[$key] = array(
                        'id' => trim($attributes['id']),
                        'displayname' => trim($attributes['name']),
                        'coord' => trim($subdivision[0])
                    );
                }
                if(isset($xml->mappings)) {
                    foreach($xml->mappings->children() as $mappings){
                        $attributes = $mappings->attributes();
                        $this->mappings[I18N::strtolower(trim($attributes['name']))] = I18N::strtolower(trim($attributes['mapto']));
                    }
                }
                $this->is_loaded = true;
                return;
            }
        }
        throw new \Exception('The Outline Map could not be loaded from XML.');
    }