internal KMLCamera(XmlElement element, KMLFile source) : base(element, source) { foreach (XmlNode oChild in element.ChildNodes) { if (oChild.NodeType != XmlNodeType.Element) continue; XmlElement oChildElement = oChild as XmlElement; if (oChildElement.Name.Equals("longitude")) { m_dLongitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("latitude")) { m_dLatitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("altitude")) { m_dAltitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("heading")) { m_dHeading = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("tilt")) { m_dTilt = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("roll")) { m_dRoll = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("altitudeMode")) { m_eAltitudeMode = (KMLAltitudeMode)Enum.Parse(typeof(KMLAltitudeMode), oChildElement.InnerText); } } }
internal KMLModel(XmlElement element, KMLPlacemark owner, KMLFile source) : base(element, owner, source) { foreach (XmlNode oChild in element.ChildNodes) { if (oChild.NodeType != XmlNodeType.Element) continue; XmlElement oChildElement = oChild as XmlElement; if (oChildElement.Name.Equals("altitudeMode")) { m_eAltitudeMode = (KMLAltitudeMode)Enum.Parse(typeof(KMLAltitudeMode), oChildElement.InnerText); } else if (oChildElement.Name.Equals("altitudeMode")) { m_oLocation = new KMLLocation(oChildElement, source); } else if (oChildElement.Name.Equals("Orientation")) { m_oOrientation = new KMLOrientation(oChildElement, source); } else if (oChildElement.Name.Equals("Scale")) { m_oScale = new KMLScale(oChildElement, source); } else if (oChildElement.Name.Equals("Link")) { m_oLink = new KMLIconOrLink(oChildElement, source); } else if (oChildElement.Name.Equals("ResourceMap")) { foreach (XmlNode oResourceChild in oChildElement.ChildNodes) { if (oResourceChild.NodeType != XmlNodeType.Element) continue; XmlElement oResourceChildElement = oResourceChild as XmlElement; if (oResourceChildElement.Name.Equals("Alias")) { String strTargetHref = String.Empty; String strSourceHref = String.Empty; foreach (XmlNode oAliasChild in oResourceChildElement.ChildNodes) { if (oAliasChild.NodeType != XmlNodeType.Element) continue; XmlElement oAliasChildElement = oAliasChild as XmlElement; if (oAliasChildElement.Name.Equals("targetHref")) strTargetHref = oAliasChildElement.InnerText; if (oAliasChildElement.Name.Equals("sourceHref")) strTargetHref = oAliasChildElement.InnerText; } if (!String.IsNullOrEmpty(strTargetHref) && !String.IsNullOrEmpty(strSourceHref)) { m_oResourceMap.Add(strSourceHref, strTargetHref); } } } } } if (m_oLocation == null) throw new ArgumentException("The KML file contains a 'Model' element without a 'Location' element."); if (m_oLink == null) throw new ArgumentException("The KML file contains a 'Model' element without a 'Link' element."); if (m_oOrientation == null) m_oOrientation = new KMLOrientation(); if (m_oScale == null) m_oScale = new KMLScale(); }
internal KMLLookAt(XmlElement element, KMLFile source) : base(element, source) { m_dRange = Double.MinValue; foreach (XmlNode oChild in element.ChildNodes) { if (oChild.NodeType != XmlNodeType.Element) continue; XmlElement oChildElement = oChild as XmlElement; if (oChildElement.Name.Equals("longitude")) { m_dLongitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("latitude")) { m_dLatitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("altitude")) { m_dAltitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("heading")) { m_dHeading = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("tilt")) { m_dTilt = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("range")) { m_dRange = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("altitudeMode")) { m_eAltitudeMode = (KMLAltitudeMode)Enum.Parse(typeof(KMLAltitudeMode), oChildElement.InnerText); } } if (m_dRange == Double.MinValue) throw new ArgumentException("The KML file contains a 'LookAt' element without a 'range' element."); }
internal KMLLineString(XmlElement element, KMLPlacemark owner, KMLFile source) : base(element, owner, source) { foreach (XmlNode oChild in element.ChildNodes) { if (oChild.NodeType != XmlNodeType.Element) continue; XmlElement oChildElement = oChild as XmlElement; if (oChildElement.Name.Equals("extrude")) { m_blExtrude = oChildElement.InnerText.Equals("1"); } else if (oChildElement.Name.Equals("tessellate")) { m_blTessellate = oChildElement.InnerText.Equals("1"); } else if (oChildElement.Name.Equals("altitudeMode")) { m_eAltitudeMode = (KMLAltitudeMode)Enum.Parse(typeof(KMLAltitudeMode), oChildElement.InnerText); } else if (oChildElement.Name.Equals("coordinates")) { String[] oTuples = oChildElement.InnerText.Replace(", ", ",").Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries); foreach (String strTuple in oTuples) { m_oCoords.Add(new KMLCoordinates(strTuple)); } } } if (m_oCoords.Count == 0) throw new ArgumentException("The KML file contains a 'LinearRing' element without a 'coordinates' element."); }
internal KMLLatLonAltBox(XmlElement element, KMLFile source) : base(element, source) { m_dNorth = Double.MinValue; m_dEast = Double.MinValue; m_dSouth = Double.MinValue; m_dWest = Double.MinValue; foreach (XmlNode oChild in element.ChildNodes) { if (oChild.NodeType != XmlNodeType.Element) continue; XmlElement oChildElement = oChild as XmlElement; if (oChildElement.Name.Equals("north")) { m_dNorth = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("east")) { m_dEast = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("south")) { m_dSouth = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("west")) { m_dWest = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("minAltitude")) { m_dMinAltitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("maxAltitude")) { m_dMaxAltitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("altitudeMode")) { m_eAltitudeMode = (KMLAltitudeMode)Enum.Parse(typeof(KMLAltitudeMode), oChildElement.InnerText); } } if (m_dNorth == Double.MinValue) throw new ArgumentException("The KML file contains a 'LatLonAltBox' element without a 'north' element."); if (m_dEast == Double.MinValue) throw new ArgumentException("The KML file contains a 'LatLonAltBox' element without a 'east' element."); if (m_dSouth == Double.MinValue) throw new ArgumentException("The KML file contains a 'LatLonAltBox' element without a 'south' element."); if (m_dWest == Double.MinValue) throw new ArgumentException("The KML file contains a 'LatLonAltBox' element without a 'west' element."); }
internal KMLGroundOverlay(XmlElement element, KMLFile source) : base(element, source) { foreach (XmlNode oChild in element.ChildNodes) { if (oChild.NodeType != XmlNodeType.Element) continue; XmlElement oChildElement = oChild as XmlElement; if (oChildElement.Name.Equals("altitude")) { m_dAltitude = Double.Parse(oChildElement.InnerText, CultureInfo.InvariantCulture); } else if (oChildElement.Name.Equals("altitudeMode")) { m_eAltitudeMode = (KMLAltitudeMode)Enum.Parse(typeof(KMLAltitudeMode), oChildElement.InnerText); } else if (oChildElement.Name.Equals("LatLonBox")) { m_oBox = new KMLLatLonBox(oChildElement, source); } } if (m_oBox == null) throw new ArgumentException("The KML file contains a 'GroundOverlay' element without a 'LatLonBox' element."); }