Rinomina ed evidenzia i gruppi mappa
This commit is contained in:
1 parent
4da47a8835
commit
a23eff6124
4 files changed
+235
-25
No files matched your search
@@ -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();
|
||||
|
||||
Reference in new issue
Block a user