/// <summary> /// Retrieves link for "normal" style icon, from given style map /// </summary> /// <param name="kml">kml file where the style map is in</param> /// <param name="styleMap">style map to search</param> /// <returns>style URL, or null when style couldn't be retrieved</returns> private static string GetStyleMapNormalStyleIconLink(KmlFile kml, StyleMapCollection styleMap) { var normalStyle = styleMap.First(x => x.State.HasValue && x.State.Value == StyleState.Normal); if (normalStyle != null) { string normalStyleUrl = normalStyle.StyleUrl.ToString(); if (normalStyleUrl.StartsWith("#")) { var iconStyle = kml.FindStyle(normalStyleUrl.Substring(1)); if (iconStyle != null && iconStyle is Style icon) { return(icon.Icon.Icon.Href.ToString()); } } } return(null); }
/// <summary> /// Gets style icon from StyleUrl property of placemark /// </summary> /// <param name="kml">kml file where the placemark is in</param> /// <param name="placemark">placemark to check</param> /// <returns>style URL, or empty string when style couldn't be retrieved</returns> private static string GetStyleIconFromStyleUrl(KmlFile kml, Placemark placemark) { string styleUrl = placemark.StyleUrl.ToString(); if (styleUrl.StartsWith("#")) { var style = kml.FindStyle(styleUrl.Substring(1)); if (style != null && style is StyleMapCollection styleMap) { string link = GetStyleMapNormalStyleIconLink(kml, styleMap); if (!string.IsNullOrEmpty(link)) { return(link); } } } return(string.Empty); }