Rinomina ed evidenzia i gruppi mappa

This commit is contained in:
livio committed 2026-09-24 08:38:07 +02:00
1 parent 4da47a8835
commit a23eff6124
4 files changed
+235 -25

No files matched your search

+27 -1
View File
@@ -78,6 +78,8 @@ public sealed class MapExportService
BuildStyle("drawing", "ff1679f9", "333c92fb"),
BuildStyle("poi", "ffff7a00", "33ff7a00"),
BuildStyle("gps-trail", "ff00a5ff", "2200a5ff"));
var categoryFolders = new Dictionary<string, XElement>(StringComparer.Ordinal);
var groupFolders = new Dictionary<(string Category, string Group), XElement>();
foreach (var feature in features.EnumerateArray())
{
@@ -102,7 +104,31 @@ public sealed class MapExportService
placemark.Add(extendedData);
}
placemark.Add(BuildGeometry(geometry));
document.Add(placemark);
var categoryName = GetString(properties, "_lmeCategoryName")?.Trim();
var groupName = GetString(properties, "_lmeGroupName")?.Trim();
var parent = document;
if (!string.IsNullOrWhiteSpace(categoryName))
{
if (!categoryFolders.TryGetValue(categoryName, out var categoryFolder))
{
categoryFolder = new XElement(Kml + "Folder", new XElement(Kml + "name", categoryName));
categoryFolders[categoryName] = categoryFolder;
document.Add(categoryFolder);
}
parent = categoryFolder;
}
if (!string.IsNullOrWhiteSpace(groupName))
{
var key = (categoryName ?? string.Empty, groupName);
if (!groupFolders.TryGetValue(key, out var groupFolder))
{
groupFolder = new XElement(Kml + "Folder", new XElement(Kml + "name", groupName));
groupFolders[key] = groupFolder;
parent.Add(groupFolder);
}
parent = groupFolder;
}
parent.Add(placemark);
}
return new XDocument(new XDeclaration("1.0", "utf-8", null), new XElement(Kml + "kml", document)).ToString();