ThinkGeo.com    |     Documentation    |     Premium Support

Deserializing from XML

Hi,


I am working on a project that would allow me to keep map layer properties like the filepath of shapefile, the styles (point, line, text, area), initial zoomlevel, final zoom level, projection type etc. in an xml file and be able to create a layer based on the parameters in this xml file. Will deserialising be the apprpriate methodology for doing such kind of work or in other words can I deserialize properties like ZoomLevel, Areastyles, Linestyles, pointstyles, textstyles?


I have created a simple application without deserialization that reads the style type, shapefile path, and creates a layer based on these properties. But I can only assign one areastyles like country1 insde the code. I want to be able to get thewhat type of style to be from the xml like localroad or country2 etc. and create the layer based on what is in the xml file. 


Thanks in advance,


 


 



 Hi Rumeysa,


Thanks for your post. 


It sounds a little wired, as our GeoSerializer also work with Styles like ZoomLevel, AreaStyle… We did a little test on Web Edition and seems the deserializing works fine. here is the code:



Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));

                Map1.CurrentExtent = new RectangleShape(-125, 72, 50, -46);

                Map1.MapUnit = GeographyUnit.DecimalDegree;

 

                WorldMapKitWmsWebOverlay worldMapKitOverlay = new WorldMapKitWmsWebOverlay();

                Map1.CustomOverlays.Add(worldMapKitOverlay);

 

                ShapeFileFeatureLayer citiesLayer = new ShapeFileFeatureLayer(Server.MapPath("~/SampleData/World/capital.shp"));

                citiesLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

 

                // Draw features based on values

                ValueStyle valueStyle = new ValueStyle();

                valueStyle.ColumnName = "POP_RANK";

                valueStyle.ValueItems.Add(new ValueItem("1", PointStyles.Capital1));

                valueStyle.ValueItems.Add(new ValueItem("2", PointStyles.Capital3));

                valueStyle.ValueItems.Add(new ValueItem("3", PointStyles.City7));

                citiesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(valueStyle);

                citiesLayer.DrawingMarginPercentage = 50;

 

                string serializerFile = "c:\\simpleMap.xml";

                GeoSerializer serializer = new GeoSerializer();

                serializer.Serialize(citiesLayer, serializerFile);

                ShapeFileFeatureLayer newCitiesLayer = serializer.Deserialize(serializerFile, FileAccess.Read) as ShapeFileFeatureLayer;

                LayerOverlay staticOverlay = new LayerOverlay();

                staticOverlay.Layers.Add("CitiesLayer", newCitiesLayer);

                staticOverlay.IsBaseOverlay = false;

                Map1.CustomOverlays.Add(staticOverlay);

Can you have a look and compare with yours.


If any other questions, please feel free to let us know.


Thanks,


Gary