diff --git a/MapUiTools/Shared/MapLayerMenuItem.cs b/MapUiTools/Shared/MapLayerMenuItem.cs index ad147664..37adf7c5 100644 --- a/MapUiTools/Shared/MapLayerMenuItem.cs +++ b/MapUiTools/Shared/MapLayerMenuItem.cs @@ -33,7 +33,7 @@ namespace MapControl.UiTools protected override bool GetIsChecked(MapBase map) { - return map.Children.Contains(MapLayer); + return MapLayer != null && map.Children.Contains(MapLayer); } public override async Task Execute(MapBase map) @@ -52,6 +52,8 @@ namespace MapControl.UiTools public class MapOverlayMenuItem : MapLayerMenuItem { + public int InsertOrder { get; set; } + public override async Task Execute(MapBase map) { if (MapLayer == null) @@ -67,24 +69,17 @@ namespace MapControl.UiTools } else { - var index = 1; - - foreach (var mapLayer in ParentMenuItems + var insertIndex = ParentMenuItems .OfType() - .Select(item => item.MapLayer) - .Where(mapLayer => mapLayer != null)) - { - if (mapLayer == MapLayer) - { - map.Children.Insert(index, mapLayer); - break; - } + .Where(item => item.InsertOrder <= InsertOrder && item.GetIsChecked(map)) + .Count(); - if (map.Children.Contains(mapLayer)) - { - index++; - } + if (map.MapLayer != null) + { + insertIndex++; } + + map.Children.Insert(insertIndex, MapLayer); } } } diff --git a/SampleApps/AvaloniaApp/MainWindow.axaml b/SampleApps/AvaloniaApp/MainWindow.axaml index 0a14416a..0c1d576f 100644 --- a/SampleApps/AvaloniaApp/MainWindow.axaml +++ b/SampleApps/AvaloniaApp/MainWindow.axaml @@ -187,16 +187,16 @@ map:MapPanel.BoundingBox="53.54031,8.08594,53.74871,8.43750"/> - + - + - + diff --git a/SampleApps/UniversalApp/MainPage.xaml b/SampleApps/UniversalApp/MainPage.xaml index 2c6038e9..a3adcad6 100644 --- a/SampleApps/UniversalApp/MainPage.xaml +++ b/SampleApps/UniversalApp/MainPage.xaml @@ -234,16 +234,16 @@ map:MapPanel.BoundingBox="53.54031,8.08594,53.74871,8.43750"/> - + - + - + diff --git a/SampleApps/WinUiApp/MainWindow.xaml b/SampleApps/WinUiApp/MainWindow.xaml index 61075d72..348f7691 100644 --- a/SampleApps/WinUiApp/MainWindow.xaml +++ b/SampleApps/WinUiApp/MainWindow.xaml @@ -260,16 +260,16 @@ map:MapPanel.BoundingBox="53.54031,8.08594,53.74871,8.43750"/> - + - + - + diff --git a/SampleApps/WpfApplication/MainWindow.xaml b/SampleApps/WpfApplication/MainWindow.xaml index af838300..9179cc68 100644 --- a/SampleApps/WpfApplication/MainWindow.xaml +++ b/SampleApps/WpfApplication/MainWindow.xaml @@ -239,16 +239,16 @@ map:MapPanel.BoundingBox="53.54031,8.08594,53.74871,8.43750"/> - + - + - +