Skip to content

Commit a832b37

Browse files
authored
Merge pull request #47 from VincentH-Net/mapsui-5-0
Add Mapsui 5.0 support for Uno WinUI, and add a Mapsui page to examples
2 parents a921ca0 + aa50397 commit a832b37

28 files changed

+1458
-16
lines changed

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ No XAML / HTML / JavaScript / CSS required. No engine or layers to get in your w
4848
>[![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/CSharpMarkup.WinUI.Uno.Extensions.Navigation?color=gold&label=CSharpMarkup.WinUI.Uno.Extensions.Navigation&style=plastic)](https://www.nuget.org/packages/CSharpMarkup.WinUI.Uno.Extensions.Navigation)<br />
4949
>[![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/CSharpMarkup.WinUI.Uno.Extensions.Navigation.Toolkit?color=gold&label=CSharpMarkup.WinUI.Uno.Extensions.Navigation.Toolkit&style=plastic)](https://www.nuget.org/packages/CSharpMarkup.WinUI.Uno.Extensions.Navigation.Toolkit)<br />
5050
>[![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/CSharpMarkup.WinUI.LiveChartsCore.SkiaSharpView?color=gold&label=CSharpMarkup.WinUI.LiveChartsCore.SkiaSharpView&style=plastic)](https://www.nuget.org/packages/CSharpMarkup.WinUI.LiveChartsCore.SkiaSharpView)<br />
51-
>[![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/CSharpMarkup.WinUI.ScottPlot?color=gold&label=CSharpMarkup.WinUI.ScottPlot&style=plastic)](https://www.nuget.org/packages/CSharpMarkup.WinUI.ScottPlot)
51+
>[![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/CSharpMarkup.WinUI.ScottPlot?color=gold&label=CSharpMarkup.WinUI.ScottPlot&style=plastic)](https://www.nuget.org/packages/CSharpMarkup.WinUI.ScottPlot)<br />
52+
>[![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/CSharpMarkup.WinUI.Mapsui?color=gold&label=CSharpMarkup.WinUI.Mapsui&style=plastic)](https://www.nuget.org/packages/CSharpMarkup.WinUI.Mapsui)
5253
>
5354
>[![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/CSharpMarkup.WPF?color=gold&label=CSharpMarkup.WPF&style=plastic)](https://www.nuget.org/packages/CSharpMarkup.WPF)
5455
>
@@ -64,6 +65,13 @@ No XAML / HTML / JavaScript / CSS required. No engine or layers to get in your w
6465
*Looking for C# Markup 1? Find it [here](https://github.com/VincentH-Net/CSharpForMarkup/tree/csharpformarkup1-archive)*
6566

6667
# News
68+
*July 14, 2025*
69+
> ## Mapsui 5 support added!
70+
[Mapsui 5](https://mapsui.com/v5/) - currently in beta, and one of the best OSS .NET libraries for maps - now has full support in C# Markup 3.1 for Uno Platform 6.0!
71+
72+
An [example page using Mapsui](/src/CSharpMarkup.WinUI.Examples/WinUICsMarkupExamples.Presentation/Example) is added to the example app in this repo, demonstrating how to use Mapsui with C# Markup 2.
73+
Browse [Live Mapsui 5.0 samples](https://scottplot.net/cookbook/5.0/) to experience the possibilities; see the [samples source](https://github.com/Mapsui/Mapsui/tree/main/Samples/Mapsui.Samples.Common) for how.
74+
6775
*July 4, 2025*
6876
> ## ScottPlot 5 support added!
6977
[ScottPlot.NET](https://scottplot.net/) - one of the best OSS .NET libraries for graphs and charts - now has full support in C# Markup 3.1 for Uno Platform 6.0!

src/CSharpMarkup.WinUI.Examples/Directory.Packages.props

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,21 @@
55
See https://aka.platform.uno/using-uno-sdk for more information.
66
See https://aka.platform.uno/using-uno-sdk#implicit-packages for more information regarding the Implicit Packages.
77
-->
8-
<ItemGroup>
9-
</ItemGroup>
8+
<PropertyGroup>
9+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
10+
</PropertyGroup>
1011
<ItemGroup>
1112
<PackageVersion Include="CSharpMarkup.WinUI" Version="3.1.2" />
1213
<PackageVersion Include="CSharpMarkup.WinUI.LiveChartsCore.SkiaSharpView" Version="3.1.2" />
14+
<PackageVersion Include="CSharpMarkup.WinUI.Mapsui" Version="3.1.2-beta.17.3" />
1315
<PackageVersion Include="CSharpMarkup.WinUI.ScottPlot" Version="3.1.2" />
1416
<PackageVersion Include="CSharpMarkup.WinUI.Uno.Extensions.Navigation" Version="3.1.2" />
1517
<PackageVersion Include="CSharpMarkup.WinUI.Uno.Extensions.Navigation.Toolkit" Version="3.1.2" />
1618
<PackageVersion Include="CSharpMarkup.WinUI.Uno.Toolkit" Version="3.1.2" />
19+
20+
<!-- Pinned to the version that Uno SDK implicitly references, to prevent PRI errors when building the Windows target.
21+
Update versions when updating Uno SDK. -->
22+
<PackageVersion Include="Uno.Toolkit.WinUI" Version="7.0.7" />
23+
<PackageVersion Include="Uno.Extensions.Navigation.Toolkit.WinUI" Version="6.0.12" />
1724
</ItemGroup>
18-
</Project>
25+
</Project>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using Mui = CSharpMarkup.WinUI.Mapsui.Helpers;
2+
3+
namespace WinUICsMarkupExamples.Presentation.Example;
4+
5+
partial class MapsuiPage
6+
{
7+
enum Row { Header, Body }
8+
9+
public void BuildUI() => Content (
10+
Grid (
11+
Rows (
12+
(Row.Header, Auto),
13+
(Row.Body , Star)
14+
),
15+
16+
NavigationBar(
17+
TextBlock("Mapsui"),
18+
AppBarButton() .Icon("Images/forward") .Bind(vm?.ForwardCommand)
19+
) .Grid_Row(Row.Header),
20+
21+
Mui.MapControl() .Invoke(CenterOnLocation)
22+
.Grid_Row(Row.Body) .HVStretch()
23+
)
24+
);
25+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using Mapsui;
2+
using Mapsui.Extensions;
3+
using Mapsui.Projections;
4+
using Mapsui.Tiling;
5+
using MuiUI = Mapsui.UI.WinUI;
6+
7+
namespace WinUICsMarkupExamples.Presentation.Example;
8+
9+
[UIBindable]
10+
public sealed partial class MapsuiPage : BasePage<MapsuiViewModel>, IBuildUI
11+
{
12+
public MapsuiPage() => BuildUI();
13+
14+
void CenterOnLocation(MuiUI.MapControl control)
15+
{
16+
var map = new Map();
17+
map.Layers.Add(OpenStreetMap.CreateTileLayer());
18+
19+
// Get the lon lat coordinates from somewhere (Mapsui can not help you there)
20+
var centerOfLondonOntario = new MPoint(-81.2497, 42.9837);
21+
// OSM uses spherical mercator coordinates. So transform the lon lat coordinates to spherical mercator
22+
var sphericalMercatorCoordinate = SphericalMercator.FromLonLat(centerOfLondonOntario.X, centerOfLondonOntario.Y).ToMPoint();
23+
// Set the center of the viewport to the coordinate. The UI will refresh automatically
24+
// Additionally you might want to set the resolution, this could depend on your specific purpose
25+
map.Navigator.CenterOnAndZoomTo(sphericalMercatorCoordinate, map.Navigator.Resolutions[9]);
26+
27+
control.Map = map;
28+
}
29+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace WinUICsMarkupExamples.Presentation.Example;
2+
3+
public partial class MapsuiViewModel(INavigator navigator) : BaseViewModel
4+
{
5+
[RelayCommand] public async Task Forward() => await navigator.NavigateViewModelAsync<FlutterViewModel>(this);
6+
}

src/CSharpMarkup.WinUI.Examples/WinUICsMarkupExamples.Presentation/Example/Routes.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,21 @@ public static void Register(IViewRegistry views, IRouteRegistry routes)
77
views.Register(
88
new ViewMap(ViewModel: typeof(ShellViewModel)),
99
new ViewMap<SearchPage, SearchViewModel>(),
10-
new ViewMap<FlutterPage, FlutterViewModel>(),
1110
new ViewMap<LiveCharts2Page, LiveCharts2ViewModel>(),
12-
new ViewMap<ScottPlotPage, ScottPlotViewModel>()
11+
new ViewMap<ScottPlotPage, ScottPlotViewModel>(),
12+
new ViewMap<MapsuiPage, MapsuiViewModel>(),
13+
new ViewMap<FlutterPage, FlutterViewModel>()
1314
);
1415

1516
routes.Register(
1617
new RouteMap("", View: views.FindByViewModel<ShellViewModel>(),
1718
Nested: new RouteMap[]
1819
{
1920
new RouteMap("Search", View: views.FindByViewModel<SearchViewModel>(), IsDefault:true),
20-
new RouteMap("Flutter", View: views.FindByViewModel<FlutterViewModel>()),
2121
new RouteMap("LiveCharts", View: views.FindByViewModel<LiveCharts2ViewModel>()),
22-
new RouteMap("ScottPlot", View: views.FindByViewModel<ScottPlotViewModel>())
22+
new RouteMap("ScottPlot", View: views.FindByViewModel<ScottPlotViewModel>()),
23+
new RouteMap("Mapsui", View: views.FindByViewModel<MapsuiViewModel>()),
24+
new RouteMap("Flutter", View: views.FindByViewModel<FlutterViewModel>())
2325
}
2426
)
2527
);

src/CSharpMarkup.WinUI.Examples/WinUICsMarkupExamples.Presentation/Example/ScottPlotPage.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ public void BuildUI() => Content (
1313
(Row.Body , Star)
1414
),
1515

16-
NavigationBar(
17-
TextBlock("ScottPlot"),
18-
AppBarButton() .Icon("Images/forward") .Bind(vm?.ForwardCommand)
19-
) .Grid_Row(Row.Header),
16+
NavigationBar (
17+
TextBlock("ScottPlot"),
18+
AppBarButton() .Icon("Images/forward") .Bind(vm?.ForwardCommand)
19+
) .Grid_Row(Row.Header),
2020

21-
WinUIPlot() .Invoke(ExampleGraph)
22-
.Grid_Row(Row.Body) .HVStretch()
21+
WinUIPlot() .Invoke(ExampleGraph)
22+
.Grid_Row(Row.Body) .HVStretch()
2323
)
2424
);
2525
}

src/CSharpMarkup.WinUI.Examples/WinUICsMarkupExamples.Presentation/Example/ScottPlotViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ namespace WinUICsMarkupExamples.Presentation.Example;
22

33
public partial class ScottPlotViewModel(INavigator navigator) : BaseViewModel
44
{
5-
[RelayCommand] public async Task Forward() => await navigator.NavigateViewModelAsync<FlutterViewModel>(this);
5+
[RelayCommand] public async Task Forward() => await navigator.NavigateViewModelAsync<MapsuiViewModel>(this);
66
}

src/CSharpMarkup.WinUI.Examples/WinUICsMarkupExamples.Presentation/WinUICsMarkupExamples.Presentation.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<ItemGroup>
2424
<PackageReference Include="CSharpMarkup.WinUI" />
2525
<PackageReference Include="CSharpMarkup.WinUI.LiveChartsCore.SkiaSharpView" />
26+
<PackageReference Include="CSharpMarkup.WinUI.Mapsui" />
2627
<PackageReference Include="CSharpMarkup.WinUI.Uno.Extensions.Navigation" />
2728
<PackageReference Include="CSharpMarkup.WinUI.Uno.Extensions.Navigation.Toolkit" />
2829
<PackageReference Include="CSharpMarkup.WinUI.Uno.Toolkit" />

src/CSharpMarkup.WinUI.Examples/WinUICsMarkupExamples.sln

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
1313
Directory.Build.props = Directory.Build.props
1414
Directory.Build.targets = Directory.Build.targets
1515
Directory.Packages.props = Directory.Packages.props
16+
global.json = global.json
1617
EndProjectSection
1718
EndProject
1819
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUICsMarkupExamples.Presentation", "WinUICsMarkupExamples.Presentation\WinUICsMarkupExamples.Presentation.csproj", "{6A227F5E-A4B8-488C-9624-DF9BCB547B2B}"

0 commit comments

Comments
 (0)