mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Added Avalonia sample application
This commit is contained in:
parent
dc8df5e486
commit
192ecbf4df
|
|
@ -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}
|
||||
|
|
|
|||
8
SampleApps/AvaloniaApp/App.axaml
Normal file
8
SampleApps/AvaloniaApp/App.axaml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<Application xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="AvaloniaApp.App"
|
||||
RequestedThemeVariant="Default">
|
||||
<Application.Styles>
|
||||
<FluentTheme />
|
||||
</Application.Styles>
|
||||
</Application>
|
||||
27
SampleApps/AvaloniaApp/App.axaml.cs
Normal file
27
SampleApps/AvaloniaApp/App.axaml.cs
Normal file
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
34
SampleApps/AvaloniaApp/AvaloniaApp.csproj
Normal file
34
SampleApps/AvaloniaApp/AvaloniaApp.csproj
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||
<DefineConstants>AVALONIA</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<AvaloniaResource Include="..\Shared\10_535_330.jpg" Link="10_535_330.jpg">
|
||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||
</AvaloniaResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="..\Shared\etna.kml" Link="etna.kml">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\Avalonia\MapControl.Avalonia.csproj" />
|
||||
<ProjectReference Include="..\..\MapUiTools\Avalonia\MapUiTools.Avalonia.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Avalonia" Version="11.0.10" />
|
||||
<PackageReference Include="Avalonia.Desktop" Version="11.0.10" />
|
||||
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.10" />
|
||||
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.10" />
|
||||
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.10" />
|
||||
<PackageReference Include="Markdown.Avalonia.Tight" Version="11.0.2" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
113
SampleApps/AvaloniaApp/MainWindow.axaml
Normal file
113
SampleApps/AvaloniaApp/MainWindow.axaml
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
<Window xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:md="clr-namespace:Markdown.Avalonia;assembly=Markdown.Avalonia"
|
||||
xmlns:map="clr-namespace:MapControl;assembly=MapControl.Avalonia"
|
||||
xmlns:tools="clr-namespace:MapControl.UiTools;assembly=MapUiTools.Avalonia"
|
||||
xmlns:local="clr-namespace:AvaloniaApp"
|
||||
x:Class="AvaloniaApp.MainWindow"
|
||||
Title="MainWindow">
|
||||
<Grid>
|
||||
<map:Map x:Name="map" Center="53.5,8.2" ZoomLevel="11" DoubleTapped="OnMapDoubleTapped">
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Background="#AFFFFFFF"
|
||||
DataContext="{Binding MapLayer, ElementName=map}">
|
||||
<ProgressBar Width="100" Height="8" Margin="4,2" VerticalAlignment="Center"
|
||||
Maximum="1" Value="{Binding LoadingProgress}">
|
||||
<ProgressBar.Styles>
|
||||
<Style Selector="ProgressBar[Value=0]">
|
||||
<Setter Property="IsIndeterminate" Value="True"/>
|
||||
</Style>
|
||||
<Style Selector="ProgressBar[Value=1]">
|
||||
<Setter Property="IsVisible" Value="False"/>
|
||||
</Style>
|
||||
</ProgressBar.Styles>
|
||||
</ProgressBar>
|
||||
|
||||
<LayoutTransformControl Margin="4,2">
|
||||
<LayoutTransformControl.LayoutTransform>
|
||||
<ScaleTransform ScaleX="0.7" ScaleY="0.7"/>
|
||||
</LayoutTransformControl.LayoutTransform>
|
||||
<md:MarkdownScrollViewer Markdown="{Binding Description}"/>
|
||||
</LayoutTransformControl>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Margin="6">
|
||||
<tools:MapLayersMenuButton x:Name="mapLayersMenuButton"
|
||||
Margin="2" ToolTip.Tip="Map Layers and Overlays" Map="{Binding ElementName=map}">
|
||||
<tools:MapLayerItem Text="OpenStreetMap">
|
||||
<map:MapTileLayer
|
||||
TileSource="https://tile.openstreetmap.org/{z}/{x}/{y}.png"
|
||||
SourceName="OpenStreetMap"
|
||||
Description="© [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="OpenStreetMap German">
|
||||
<map:MapTileLayer
|
||||
TileSource="https://{s}.tile.openstreetmap.de/{z}/{x}/{y}.png"
|
||||
SourceName="OpenStreetMap German"
|
||||
Description="© [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="OpenStreetMap French">
|
||||
<map:MapTileLayer
|
||||
TileSource="http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png"
|
||||
SourceName="OpenStreetMap French"
|
||||
Description="© [OpenStreetMap France](https://www.openstreetmap.fr/mentions-legales/) © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="OpenTopoMap">
|
||||
<map:MapTileLayer
|
||||
TileSource="https://tile.opentopomap.org/{z}/{x}/{y}.png"
|
||||
SourceName="OpenTopoMap"
|
||||
Description="© [OpenTopoMap](https://opentopomap.org/) © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="TopPlusOpen WMTS">
|
||||
<map:WmtsTileLayer
|
||||
CapabilitiesUri="https://sgx.geodatenzentrum.de/wmts_topplus_open/1.0.0/WMTSCapabilities.xml"
|
||||
SourceName="TopPlusOpen"
|
||||
Description="© [BKG](https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wmts-topplusopen-wmts-topplus-open.html)"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="TopPlusOpen WMS">
|
||||
<map:WmsImageLayer
|
||||
ServiceUri="https://sgx.geodatenzentrum.de/wms_topplus_open"
|
||||
Description="© [BKG](https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wms-topplusopen-mit-layer-fur-normalausgabe-und-druck-wms-topplus-open.html)"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="TopPlusOpen WMS Tiles">
|
||||
<map:MapTileLayer
|
||||
SourceName="TopPlusOpen"
|
||||
Description="© [BKG](https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wms-topplusopen-mit-layer-fur-normalausgabe-und-druck-wms-topplus-open.html)">
|
||||
<map:MapTileLayer.TileSource>
|
||||
<map:BoundingBoxTileSource UriTemplate="https://sgx.geodatenzentrum.de/wms_topplus_open?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:3857&LAYERS=web&STYLES=&FORMAT=image/png&WIDTH=256&HEIGHT=256&BBOX={west},{south},{east},{north}"/>
|
||||
</map:MapTileLayer.TileSource>
|
||||
</map:MapTileLayer>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="OpenStreetMap WMS">
|
||||
<map:WmsImageLayer
|
||||
ServiceUri="http://ows.terrestris.de/osm/service"
|
||||
Description="© [terrestris GmbH & Co. KG](http://ows.terrestris.de/) © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayersMenuButton.MapOverlays>
|
||||
<tools:MapLayerItem Text="Seamarks">
|
||||
<map:MapTileLayer
|
||||
TileSource="http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png"
|
||||
SourceName="Seamarks"
|
||||
MinZoomLevel="9" MaxZoomLevel="18"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="Sample Image">
|
||||
<Image Source="avares://AvaloniaApp/10_535_330.jpg" Stretch="Fill"
|
||||
map:MapPanel.BoundingBox="53.54031,8.08594,53.74871,8.43750"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="Mount Etna KML">
|
||||
<map:GroundOverlay SourcePath="etna.kml"/>
|
||||
</tools:MapLayerItem>
|
||||
</tools:MapLayersMenuButton.MapOverlays>
|
||||
</tools:MapLayersMenuButton>
|
||||
|
||||
<tools:MapProjectionsMenuButton x:Name="mapProjectionsMenuButton"
|
||||
Margin="2" ToolTip.Tip="Map Projections" Map="{Binding ElementName=map}">
|
||||
<tools:MapProjectionItem Text="Web Mercator" Projection="EPSG:3857"/>
|
||||
<tools:MapProjectionItem Text="Equirectangular" Projection="EPSG:4326"/>
|
||||
<tools:MapProjectionItem Text="ETRS89 / UTM zone 32N" Projection="EPSG:25832"/>
|
||||
<tools:MapProjectionItem Text="WGS84 / Auto UTM" Projection="AUTO2:42001"/>
|
||||
</tools:MapProjectionsMenuButton>
|
||||
</StackPanel>
|
||||
</map:Map>
|
||||
</Grid>
|
||||
</Window>
|
||||
76
SampleApps/AvaloniaApp/MainWindow.axaml.cs
Normal file
76
SampleApps/AvaloniaApp/MainWindow.axaml.cs
Normal file
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
24
SampleApps/AvaloniaApp/Program.cs
Normal file
24
SampleApps/AvaloniaApp/Program.cs
Normal file
|
|
@ -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<App>()
|
||||
.UsePlatformDetect()
|
||||
.WithInterFont()
|
||||
.LogToTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -114,6 +114,7 @@
|
|||
<map:Map x:Name="map" ManipulationMode="All"
|
||||
Center="53.5,8.2"
|
||||
MinZoomLevel="2" MaxZoomLevel="21" ZoomLevel="11"
|
||||
DoubleTapped="MapDoubleTapped"
|
||||
PointerPressed="MapPointerPressed"
|
||||
PointerReleased="MapPointerReleased"
|
||||
PointerMoved="MapPointerMoved"
|
||||
|
|
|
|||
|
|
@ -87,6 +87,11 @@ namespace SampleApplication
|
|||
map.TargetHeading = 0d;
|
||||
}
|
||||
|
||||
private void MapDoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
|
||||
{
|
||||
map.TargetCenter = map.ViewToLocation(e.GetPosition(map));
|
||||
}
|
||||
|
||||
private async void MapPointerPressed(object sender, PointerRoutedEventArgs e)
|
||||
{
|
||||
if (e.Pointer.PointerDeviceType == PointerDeviceType.Mouse)
|
||||
|
|
|
|||
|
|
@ -36,14 +36,14 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.240428000" />
|
||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1" />
|
||||
<Manifest Include="$(ApplicationManifest)" />
|
||||
<ProjectReference Include="..\..\MapControl\WinUI\MapControl.WinUI.csproj" />
|
||||
<ProjectReference Include="..\..\MapUiTools\WinUI\MapUiTools.WinUI.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\WinUI\MapControl.WinUI.csproj" />
|
||||
<ProjectReference Include="..\..\MapUiTools\WinUI\MapUiTools.WinUI.csproj" />
|
||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.240428000" />
|
||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1" />
|
||||
<Manifest Include="$(ApplicationManifest)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
|
||||
|
|
|
|||
|
|
@ -183,8 +183,7 @@
|
|||
|
||||
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Margin="6">
|
||||
<tools:MapLayersMenuButton x:Name="mapLayersMenuButton"
|
||||
Margin="2" ToolTip="Map Layers and Overlays"
|
||||
Map="{Binding ElementName=map}">
|
||||
Margin="2" ToolTip="Map Layers and Overlays" Map="{Binding ElementName=map}">
|
||||
<tools:MapLayerItem Text="OpenStreetMap">
|
||||
<map:MapTileLayer
|
||||
TileSource="https://tile.openstreetmap.org/{z}/{x}/{y}.png"
|
||||
|
|
@ -220,6 +219,15 @@
|
|||
ServiceUri="https://sgx.geodatenzentrum.de/wms_topplus_open"
|
||||
Description="© [BKG](https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wms-topplusopen-mit-layer-fur-normalausgabe-und-druck-wms-topplus-open.html)"/>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="TopPlusOpen WMS Tiles">
|
||||
<map:MapTileLayer
|
||||
SourceName="TopPlusOpen"
|
||||
Description="© [BKG](https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wms-topplusopen-mit-layer-fur-normalausgabe-und-druck-wms-topplus-open.html)">
|
||||
<map:MapTileLayer.TileSource>
|
||||
<map:BoundingBoxTileSource UriTemplate="https://sgx.geodatenzentrum.de/wms_topplus_open?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:3857&LAYERS=web&STYLES=&FORMAT=image/png&WIDTH=256&HEIGHT=256&BBOX={west},{south},{east},{north}"/>
|
||||
</map:MapTileLayer.TileSource>
|
||||
</map:MapTileLayer>
|
||||
</tools:MapLayerItem>
|
||||
<tools:MapLayerItem Text="OpenStreetMap WMS">
|
||||
<map:WmsImageLayer
|
||||
ServiceUri="http://ows.terrestris.de/osm/service"
|
||||
|
|
@ -249,8 +257,7 @@
|
|||
</tools:MapLayersMenuButton>
|
||||
|
||||
<tools:MapProjectionsMenuButton x:Name="mapProjectionsMenuButton"
|
||||
Margin="2" ToolTip="Map Projections"
|
||||
Map="{Binding ElementName=map}">
|
||||
Margin="2" ToolTip="Map Projections" Map="{Binding ElementName=map}">
|
||||
<tools:MapProjectionItem Text="Web Mercator" Projection="EPSG:3857"/>
|
||||
<tools:MapProjectionItem Text="Equirectangular" Projection="EPSG:4326"/>
|
||||
<tools:MapProjectionItem Text="ETRS89 / UTM zone 32N" Projection="EPSG:25832"/>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<Version>10.0.0</Version>
|
||||
<Authors>Clemens Fischer</Authors>
|
||||
<Copyright>Copyright © 2024 Clemens Fischer</Copyright>
|
||||
<DefineConstants></DefineConstants>
|
||||
<DefineConstants>WPF</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
Loading…
Reference in a new issue