private void AddMultiGeometry(bool sky, KmlPlacemark placemark, float width, Color polyColor, Color lineColor, KmlMultiGeometry geo) { foreach (KmlGeometry childGeo in geo.Children) { if (childGeo is KmlPoint) { KmlPoint point = (KmlPoint)childGeo; placemark.Point = (KmlPoint)childGeo; AddPlacemark(placemark); } else if (childGeo is KmlLineList) { AddLines(sky, childGeo as KmlLineList, width, lineColor, lineColor, false); } else if (childGeo is KmlPolygon) { KmlPolygon child = (KmlPolygon)childGeo; if (child.OuterBoundary != null) { AddLines(sky, child.OuterBoundary as KmlLineList, width, polyColor, lineColor, child.extrude); // to do 3d work and subtract inner rings } } else if (childGeo is KmlMultiGeometry) { AddMultiGeometry(sky, placemark, width, polyColor, lineColor, childGeo as KmlMultiGeometry); } } }
public override void LoadDetails(XmlNode node, KmlRoot owner) { base.LoadDetails(node, owner); foreach (XmlNode child in node.ChildNodes) { KmlFeature newChild = null; switch (child.Name) { case "NetworkLink": newChild = new KmlNetworkLink(); break; case "Placemark": newChild = new KmlPlacemark(); break; case "PhotoOverlay": newChild = new KmlPhotoOverlay(); break; case "ScreenOverlay": newChild = new KmlScreenOverlay(); break; case "GroundOverlay": newChild = new KmlGroundOverlay(); break; case "Folder": newChild = new KmlFolder(); break; case "Document": newChild = new KmlDocument(); break; } if (newChild != null) { newChild.sky = this.sky; newChild.LoadDetails(child, owner); if (children == null) { children = new List<KmlFeature>(); } children.Add(newChild); } } }
public void AddPlacemark(KmlPlacemark placemark) { Placemarks.Add(placemark); }
public void LoadDetails(XmlNode node) { foreach (XmlNode child in node.ChildNodes) { KmlFeature newChild = null; switch (child.Name) { case "NetworkLink": newChild = new KmlNetworkLink(); break; case "Placemark": newChild = new KmlPlacemark(); break; case "PhotoOverlay": newChild = new KmlPhotoOverlay(); break; case "ScreenOverlay": newChild = new KmlScreenOverlay(); break; case "GroundOverlay": newChild = new KmlGroundOverlay(); break; case "Folder": newChild = new KmlFolder(); break; case "Document": newChild = Document = new KmlDocument(); break; } if (newChild != null) { newChild.sky = this.sky; newChild.LoadDetails(child, this); children.Add(newChild); } } lastUpdate = DateTime.Now; }