public void ReadXml(XmlElement projectElement, ProgressLoadStatusHandler loadingDelegate) { XmlNodeList colorList = projectElement.GetElementsByTagName("MapBackColor"); if (colorList != null && colorList.Count > 0) { MapBackColor = ColorTranslator.FromHtml(colorList[0].InnerText); } ClearShapeFiles(); XmlNodeList layerNodeList = projectElement.GetElementsByTagName("layers"); XmlNodeList sfList = ((XmlElement)layerNodeList[0]).GetElementsByTagName("shapefile"); if (sfList != null && sfList.Count > 0) { for (int n = 0; n < sfList.Count; n++) { EGIS.ShapeFileLib.ShapeFile sf = new EGIS.ShapeFileLib.ShapeFile(); sf.ReadXml((XmlElement)sfList[n]); //sf.MapProjectionType = this.projectionType; myShapefiles.Add(sf); if (loadingDelegate != null) { loadingDelegate(sfList.Count, n + 1); } } //set centre point to centre of shapefile and adjust zoom level to fit entire shapefile RectangleF r = ShapeFile.LLExtentToProjectedExtent(this.Extent, this.projectionType); this._centrePoint = new PointD(r.Left + r.Width / 2, r.Top + r.Height / 2); this._zoomLevel = this.ClientSize.Width / r.Width; dirtyScreenBuf = true; Refresh(); OnShapeFilesChanged(); OnZoomLevelChanged(); } }
internal static MapProject ReadXml(XmlElement projectElement, string rootPath, SFMap mapRef) { MapProject mapProject = new MapProject(); XmlNodeList colorList = projectElement.GetElementsByTagName("MapBackColor"); if (colorList != null && colorList.Count > 0) { mapProject.BackgroundColor = ColorTranslator.FromHtml(colorList[0].InnerText); } else if (mapRef != null) { mapProject.BackgroundColor = mapRef.BackColor; } //clear layers List<EGIS.ShapeFileLib.ShapeFile> myShapefiles = new List<EGIS.ShapeFileLib.ShapeFile>(); XmlNodeList layerNodeList = projectElement.GetElementsByTagName("layers"); XmlNodeList sfList = ((XmlElement)layerNodeList[0]).GetElementsByTagName("shapefile"); if (sfList != null && sfList.Count > 0) { for (int n = 0; n < sfList.Count; n++) { EGIS.ShapeFileLib.ShapeFile sf = new EGIS.ShapeFileLib.ShapeFile(); XmlElement elem = sfList[n] as XmlElement; elem.GetElementsByTagName("path")[0].InnerText = rootPath + elem.GetElementsByTagName("path")[0].InnerText; sf.ReadXml(elem); myShapefiles.Add(sf); } } //EGIS.ShapeFileLib.ShapeFile.UseMercatorProjection = false; mapProject.Layers = myShapefiles; return mapProject; }