public void AddRoute(airport[] rgap, string szName) { if (rgap == null) { return; } kml.WriteStartElement("Placemark"); try { // We've had instances where szName has invalid cahracters, so ignore any errors that arise kml.WriteElementString("name", szName); } catch (Exception ex) when(ex is ArgumentException || ex is InvalidOperationException) { } kml.WriteElementString("styleUrl", "#redPoly"); kml.WriteStartElement("LineString"); kml.WriteElementString("extrude", "0"); // don't connect to the ground kml.WriteElementString("altitudeMode", "clampToGround"); StringBuilder sbCoords = new StringBuilder(); // Altitude, in meters foreach (airport ap in rgap) { sbCoords.AppendFormat(CultureInfo.InvariantCulture, "{0},{1}\r\n", LatLong.InvariantString(ap.LatLong.Longitude), LatLong.InvariantString(ap.LatLong.Latitude)); } kml.WriteElementString("coordinates", sbCoords.ToString()); kml.WriteEndElement(); // LineString kml.WriteEndElement(); // <Placemark> }