private bool IsContainerVisible(string path, bool defaultVisibility)
{
// VisibleLayers not set --> use the default visibility defined in the KML document
if (VisibleLayers == null || !VisibleLayers.Any())
return defaultVisibility;
// Check whether VisibleLayers contains the full path
if (path == null || VisibleLayers.Contains(path))
return true;
// Global wildcard to set all layers as visible
if (VisibleLayers.Contains("*"))
return true;
// look for a wildcard defined at a sublevel (e.g. VisibleLayers="myFolder/*" makes visible all paths beginning by myFolder/)
IEnumerable<string> subpaths = path.Select((c, ind) => c == '/' ? path.Substring(0, ind) : null).Where(subpath => subpath != null);
return subpaths.Any(subpath => VisibleLayers.Contains(subpath + "/*"));
}