diff --git a/MapControlExtended.sln b/MapControlExtended.sln index 5f48a774..84779ac6 100644 --- a/MapControlExtended.sln +++ b/MapControlExtended.sln @@ -47,9 +47,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MapUiTools.WPF", "MapUiTool EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Caches", "Caches", "{69E6CD1A-5619-4549-95FF-2FD126F1A5D2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileDbCache", "Caches\FileDbCache\FileDbCache.csproj", "{E5A7A66A-36EC-4775-850A-A64253DF0383}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FileDbCache", "Caches\FileDbCache\FileDbCache.csproj", "{E5A7A66A-36EC-4775-850A-A64253DF0383}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLiteCache", "Caches\SQLiteCache\SQLiteCache.csproj", "{FDD70FB5-3B6D-43DF-8C2E-04100315C8BC}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLiteCache", "Caches\SQLiteCache\SQLiteCache.csproj", "{FDD70FB5-3B6D-43DF-8C2E-04100315C8BC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MapControl.Avalonia", "MapControl\Avalonia\MapControl.Avalonia.csproj", "{0D621538-3DAD-4D3A-BB2C-220B6C580E51}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvaloniaApp", "SampleApps\AvaloniaApp\AvaloniaApp.csproj", "{68629CA3-4599-4737-B44C-40B513DD1385}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MapUiTools.Avalonia", "MapUiTools\Avalonia\MapUiTools.Avalonia.csproj", "{3D61474F-2F72-47E2-87AA-2881AB552D1A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -367,6 +373,54 @@ Global {FDD70FB5-3B6D-43DF-8C2E-04100315C8BC}.Release|x64.Build.0 = Release|Any CPU {FDD70FB5-3B6D-43DF-8C2E-04100315C8BC}.Release|x86.ActiveCfg = Release|Any CPU {FDD70FB5-3B6D-43DF-8C2E-04100315C8BC}.Release|x86.Build.0 = Release|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Debug|arm64.ActiveCfg = Debug|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Debug|arm64.Build.0 = Debug|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Debug|x64.ActiveCfg = Debug|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Debug|x64.Build.0 = Debug|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Debug|x86.ActiveCfg = Debug|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Debug|x86.Build.0 = Debug|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Release|Any CPU.Build.0 = Release|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Release|arm64.ActiveCfg = Release|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Release|arm64.Build.0 = Release|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Release|x64.ActiveCfg = Release|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Release|x64.Build.0 = Release|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Release|x86.ActiveCfg = Release|Any CPU + {0D621538-3DAD-4D3A-BB2C-220B6C580E51}.Release|x86.Build.0 = Release|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Debug|Any CPU.Build.0 = Debug|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Debug|arm64.ActiveCfg = Debug|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Debug|arm64.Build.0 = Debug|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Debug|x64.ActiveCfg = Debug|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Debug|x64.Build.0 = Debug|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Debug|x86.ActiveCfg = Debug|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Debug|x86.Build.0 = Debug|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Release|Any CPU.ActiveCfg = Release|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Release|Any CPU.Build.0 = Release|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Release|arm64.ActiveCfg = Release|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Release|arm64.Build.0 = Release|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Release|x64.ActiveCfg = Release|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Release|x64.Build.0 = Release|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Release|x86.ActiveCfg = Release|Any CPU + {68629CA3-4599-4737-B44C-40B513DD1385}.Release|x86.Build.0 = Release|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Debug|arm64.ActiveCfg = Debug|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Debug|arm64.Build.0 = Debug|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Debug|x64.ActiveCfg = Debug|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Debug|x64.Build.0 = Debug|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Debug|x86.ActiveCfg = Debug|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Debug|x86.Build.0 = Debug|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Release|Any CPU.Build.0 = Release|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Release|arm64.ActiveCfg = Release|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Release|arm64.Build.0 = Release|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Release|x64.ActiveCfg = Release|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Release|x64.Build.0 = Release|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Release|x86.ActiveCfg = Release|Any CPU + {3D61474F-2F72-47E2-87AA-2881AB552D1A}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -390,6 +444,9 @@ Global {12430DAE-DC53-4C37-95D5-B8923B5FD3D7} = {90C681E9-12AE-4B5F-932D-7EF5D35D8436} {E5A7A66A-36EC-4775-850A-A64253DF0383} = {69E6CD1A-5619-4549-95FF-2FD126F1A5D2} {FDD70FB5-3B6D-43DF-8C2E-04100315C8BC} = {69E6CD1A-5619-4549-95FF-2FD126F1A5D2} + {0D621538-3DAD-4D3A-BB2C-220B6C580E51} = {52AECE49-F314-4F76-98F2-FA800F07824B} + {68629CA3-4599-4737-B44C-40B513DD1385} = {8F2103C2-78AF-4810-8FB9-67572F50C8FC} + {3D61474F-2F72-47E2-87AA-2881AB552D1A} = {90C681E9-12AE-4B5F-932D-7EF5D35D8436} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {458346DD-B23F-4FDC-8F9D-A10F1882A4DB} diff --git a/SampleApps/AvaloniaApp/App.axaml b/SampleApps/AvaloniaApp/App.axaml new file mode 100644 index 00000000..1a489672 --- /dev/null +++ b/SampleApps/AvaloniaApp/App.axaml @@ -0,0 +1,8 @@ + + + + + diff --git a/SampleApps/AvaloniaApp/App.axaml.cs b/SampleApps/AvaloniaApp/App.axaml.cs new file mode 100644 index 00000000..ed180dba --- /dev/null +++ b/SampleApps/AvaloniaApp/App.axaml.cs @@ -0,0 +1,27 @@ +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; + +namespace AvaloniaApp +{ + public partial class App : Application + { + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + desktop.MainWindow = new MainWindow + { + //DataContext = new MainViewModel() + }; + } + + base.OnFrameworkInitializationCompleted(); + } + } +} \ No newline at end of file diff --git a/SampleApps/AvaloniaApp/AvaloniaApp.csproj b/SampleApps/AvaloniaApp/AvaloniaApp.csproj new file mode 100644 index 00000000..c2d0e41c --- /dev/null +++ b/SampleApps/AvaloniaApp/AvaloniaApp.csproj @@ -0,0 +1,34 @@ + + + WinExe + net8.0 + true + AVALONIA + + + + + Never + + + + + + Always + + + + + + + + + + + + + + + + + diff --git a/SampleApps/AvaloniaApp/MainWindow.axaml b/SampleApps/AvaloniaApp/MainWindow.axaml new file mode 100644 index 00000000..da4c42e3 --- /dev/null +++ b/SampleApps/AvaloniaApp/MainWindow.axaml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SampleApps/AvaloniaApp/MainWindow.axaml.cs b/SampleApps/AvaloniaApp/MainWindow.axaml.cs new file mode 100644 index 00000000..b31ea1a3 --- /dev/null +++ b/SampleApps/AvaloniaApp/MainWindow.axaml.cs @@ -0,0 +1,76 @@ +using Avalonia.Controls; +using Avalonia.Input; +using Avalonia.Media; +using MapControl; +using MapControl.UiTools; +using System; +using System.IO; + +namespace AvaloniaApp +{ + public partial class MainWindow : Window + { + static MainWindow() + { + //TileImageLoader.Cache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder); + + var bingMapsApiKeyPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MapControl", "BingMapsApiKey.txt"); + + if (File.Exists(bingMapsApiKeyPath)) + { + BingMapsTileLayer.ApiKey = File.ReadAllText(bingMapsApiKeyPath)?.Trim(); + } + } + + public MainWindow() + { + InitializeComponent(); + + if (!string.IsNullOrEmpty(BingMapsTileLayer.ApiKey)) + { + mapLayersMenuButton.MapLayers.Add(new MapLayerItem + { + Text = "Bing Maps Road", + Layer = new BingMapsTileLayer + { + Mode = BingMapsTileLayer.MapMode.Road, + SourceName = "Bing Maps Road", + Description = "© [Microsoft](http://www.bing.com/maps/)" + } + }); + + mapLayersMenuButton.MapLayers.Add(new MapLayerItem + { + Text = "Bing Maps Aerial", + Layer = new BingMapsTileLayer + { + Mode = BingMapsTileLayer.MapMode.Aerial, + SourceName = "Bing Maps Aerial", + Description = "© [Microsoft](http://www.bing.com/maps/)", + MapForeground = Brushes.White, + MapBackground = Brushes.Black + } + }); + + mapLayersMenuButton.MapLayers.Add(new MapLayerItem + { + Text = "Bing Maps Aerial with Labels", + Layer = new BingMapsTileLayer + { + Mode = BingMapsTileLayer.MapMode.AerialWithLabels, + SourceName = "Bing Maps Hybrid", + Description = "© [Microsoft](http://www.bing.com/maps/)", + MapForeground = Brushes.White, + MapBackground = Brushes.Black + } + }); + } + } + + private void OnMapDoubleTapped(object sender, TappedEventArgs e) + { + map.TargetCenter = map.ViewToLocation(e.GetPosition(map)); + } + } +} diff --git a/SampleApps/AvaloniaApp/Program.cs b/SampleApps/AvaloniaApp/Program.cs new file mode 100644 index 00000000..daecab48 --- /dev/null +++ b/SampleApps/AvaloniaApp/Program.cs @@ -0,0 +1,24 @@ +using Avalonia; +using System; + +namespace AvaloniaApp +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + } + + public static AppBuilder BuildAvaloniaApp() + { + return AppBuilder + .Configure() + .UsePlatformDetect() + .WithInterFont() + .LogToTrace(); + } + } +} diff --git a/SampleApps/WinUiApp/MainWindow.xaml b/SampleApps/WinUiApp/MainWindow.xaml index 519c76cb..57e40a31 100644 --- a/SampleApps/WinUiApp/MainWindow.xaml +++ b/SampleApps/WinUiApp/MainWindow.xaml @@ -114,6 +114,7 @@ - - - + + - - + + +