diff --git a/CHANGELOG b/CHANGELOG index 30d10d4cb..b5c62d63e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,4 +14,4 @@ For a complete change history, see the SVN log. Current Version (0.5.2-dev, SVN trunk): --------------------------------------- -- file.cpp: change (r#) \ No newline at end of file +- load_map.cpp and save_map.cpp: Added xml serialization for abstract, title, minzoom, maxzoom, and queryable attributes (r787) \ No newline at end of file diff --git a/src/load_map.cpp b/src/load_map.cpp index f41cb10e7..89f51d2bb 100644 --- a/src/load_map.cpp +++ b/src/load_map.cpp @@ -312,6 +312,7 @@ namespace mapnik try { name = get_attr(lay, "name", string("Unnamed")); + // XXX if no projection is given inherit from map? [DS] std::string srs = get_attr(lay, "srs", map.srs()); @@ -323,6 +324,36 @@ namespace mapnik lyr.setActive( * status ); } + optional title = get_opt_attr(lay, "title"); + if (title) + { + lyr.set_title( * title ); + } + + optional abstract = get_opt_attr(lay, "abstract"); + if (abstract) + { + lyr.set_abstract( * abstract ); + } + + optional minZoom = get_opt_attr(lay, "minzoom"); + if (minZoom) + { + lyr.setMinZoom( * minZoom ); + } + + optional maxZoom = get_opt_attr(lay, "maxzoom"); + if (maxZoom) + { + lyr.setMaxZoom( * maxZoom ); + } + + optional queryable = get_opt_attr(lay, "queryable"); + if (queryable) + { + lyr.setQueryable( * queryable ); + } + optional clear_cache = get_opt_attr(lay, "clear_label_cache"); if (clear_cache) diff --git a/src/save_map.cpp b/src/save_map.cpp index 18696cb77..8a8916956 100644 --- a/src/save_map.cpp +++ b/src/save_map.cpp @@ -370,13 +370,40 @@ namespace mapnik { set_attr( layer_node, "name", layer.name() ); } + + if ( layer.abstract() != "" ) + { + set_attr( layer_node, "abstract", layer.abstract() ); + } + + if ( layer.title() != "" ) + { + set_attr( layer_node, "title", layer.title() ); + } + if ( layer.srs() != "" ) { set_attr( layer_node, "srs", layer.srs() ); } + set_attr/**/( layer_node, "status", layer.isActive() ); set_attr/**/( layer_node, "clear_label_cache", layer.clear_label_cache() ); + if ( layer.getMinZoom() ) + { + set_attr( layer_node, "minzoom", layer.getMinZoom() ); + } + + if ( layer.getMaxZoom() ) + { + set_attr( layer_node, "maxzoom", layer.getMaxZoom() ); + } + + if ( layer.isQueryable() ) + { + set_attr( layer_node, "queryable", layer.isQueryable() ); + } + std::vector const& style_names = layer.styles(); for (unsigned i = 0; i < style_names.size(); ++i) {