Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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.");
        }
Exemple #4
0
        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.");
        }
Exemple #5
0
        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.");
        }
Exemple #6
0
        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.");
        }