mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-02-20 14:44:56 +01:00
Updated MapsforgeTiles projects
This commit is contained in:
parent
105e812afa
commit
a9f0ccc78b
24
MapsforgeTiles/Avalonia/MapsforgeTileSource.Avalonia.cs
Normal file
24
MapsforgeTiles/Avalonia/MapsforgeTileSource.Avalonia.cs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
using Avalonia;
|
||||
using Avalonia.Media.Imaging;
|
||||
using Avalonia.Platform;
|
||||
using System;
|
||||
|
||||
namespace MapControl.MapsforgeTiles
|
||||
{
|
||||
public partial class MapsforgeTileSource
|
||||
{
|
||||
private static Bitmap CreateImage(int[] pixels)
|
||||
{
|
||||
var size = (int)Math.Sqrt(pixels.Length);
|
||||
|
||||
unsafe
|
||||
{
|
||||
fixed (int* ptr = pixels)
|
||||
{
|
||||
return new Bitmap(PixelFormat.Bgra8888, AlphaFormat.Opaque, (nint)ptr,
|
||||
new PixelSize(size, size), new Vector(96d, 96d), size * 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
using Avalonia;
|
||||
using Avalonia.Media;
|
||||
using Avalonia.Media.Imaging;
|
||||
using Avalonia.Platform;
|
||||
using MapsforgeWrapper;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MapControl.MapsforgeTiles
|
||||
{
|
||||
public class MapsforgeTileSource(string theme, int cacheCapacity = 200) : TileSource
|
||||
{
|
||||
private readonly TileRenderer renderer = new(theme, cacheCapacity);
|
||||
|
||||
public static void Initialize(string mapFilePath, float dpiScale)
|
||||
{
|
||||
TileRenderer.Initialize(mapFilePath, dpiScale);
|
||||
}
|
||||
|
||||
public override Task<IImage> LoadImageAsync(int zoomLevel, int column, int row)
|
||||
{
|
||||
var pixels = renderer.RenderTile(zoomLevel, column, row);
|
||||
IImage image = pixels != null ? CreateImage(pixels) : null;
|
||||
|
||||
return Task.FromResult(image);
|
||||
}
|
||||
|
||||
private static Bitmap CreateImage(int[] pixels)
|
||||
{
|
||||
var size = (int)Math.Sqrt(pixels.Length);
|
||||
|
||||
unsafe
|
||||
{
|
||||
fixed (int* ptr = pixels)
|
||||
{
|
||||
return new Bitmap(PixelFormat.Bgra8888, AlphaFormat.Opaque, (nint)ptr,
|
||||
new PixelSize(size, size), new Vector(96d, 96d), size * 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,11 +4,38 @@
|
|||
<DefineConstants>AVALONIA</DefineConstants>
|
||||
<RootNamespace>MapControl.MapsforgeTiles</RootNamespace>
|
||||
<AssemblyTitle>XAML Map Control Mapsforge Library for Avalonia</AssemblyTitle>
|
||||
<GeneratePackageOnBuild>$(GeneratePackage)</GeneratePackageOnBuild>
|
||||
<PackageId>XAML.MapControl.MapsforgeTiles.Avalonia</PackageId>
|
||||
<Title>$(AssemblyTitle)</Title>
|
||||
<Description>Mapsforge support library for XAML Map Control</Description>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\Avalonia\MapControl.Avalonia.csproj" />
|
||||
<ProjectReference Include="..\MapsforgeWrapper\MapsforgeWrapper.csproj" />
|
||||
<Compile Include="..\Shared\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\Avalonia\MapControl.Avalonia.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IKVM" Version="8.15.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<IkvmReference Include="..\target\mapsforge-0.27.0-jar-with-dependencies.jar" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(OutDir)\mapsforge.dll">
|
||||
<Pack>true</Pack>
|
||||
<PackagePath>lib\net10.0</PackagePath>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent"
|
||||
Outputs="..\target\mapsforge-0.27.0-jar-with-dependencies.jar">
|
||||
<Exec Command="mvn package" WorkingDirectory=".."/>
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="target\**" />
|
||||
<EmbeddedResource Remove="target\**" />
|
||||
<None Remove="target\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IKVM" Version="8.15.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<IkvmReference Include="target\mapsforge-0.27.0-jar-with-dependencies.jar" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
|
||||
<Exec Command="mvn package" />
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
@ -1,12 +1,17 @@
|
|||
using MapsforgeWrapper;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
#if WPF
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
#elif UWP
|
||||
using Windows.UI.Xaml.Media;
|
||||
#elif WINUI
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
#elif AVALONIA
|
||||
using ImageSource=Avalonia.Media.IImage;
|
||||
#endif
|
||||
|
||||
namespace MapControl.MapsforgeTiles
|
||||
{
|
||||
public class MapsforgeTileSource(string theme, int cacheCapacity = 200) : TileSource
|
||||
public partial class MapsforgeTileSource(string theme, int cacheCapacity = 200) : TileSource
|
||||
{
|
||||
private readonly TileRenderer renderer = new(theme, cacheCapacity);
|
||||
|
||||
|
|
@ -22,13 +27,5 @@ namespace MapControl.MapsforgeTiles
|
|||
|
||||
return Task.FromResult(image);
|
||||
}
|
||||
|
||||
private static BitmapSource CreateImage(int[] pixels)
|
||||
{
|
||||
var size = (int)Math.Sqrt(pixels.Length);
|
||||
var image = BitmapSource.Create(size, size, 96d, 96d, PixelFormats.Bgra32, null, pixels, size * 4);
|
||||
image.Freeze();
|
||||
return image;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
using org.mapsforge.core.model;
|
||||
using org.mapsforge.map.awt.graphics;
|
||||
using org.mapsforge.map.awt.graphics;
|
||||
using org.mapsforge.map.datastore;
|
||||
using org.mapsforge.map.layer.cache;
|
||||
using org.mapsforge.map.layer.renderer;
|
||||
|
|
@ -10,7 +9,7 @@ using org.mapsforge.map.rendertheme.@internal;
|
|||
using org.mapsforge.map.rendertheme.rule;
|
||||
using System.IO;
|
||||
|
||||
namespace MapsforgeWrapper
|
||||
namespace MapControl.MapsforgeTiles
|
||||
{
|
||||
public class TileRenderer
|
||||
{
|
||||
|
|
@ -68,7 +67,7 @@ namespace MapsforgeWrapper
|
|||
}
|
||||
|
||||
int[] imageBuffer = null;
|
||||
var tile = new Tile(column, row, (byte)zoomLevel, displayModel.getTileSize());
|
||||
var tile = new org.mapsforge.core.model.Tile(column, row, (byte)zoomLevel, displayModel.getTileSize());
|
||||
var job = new RendererJob(tile, dataStore, renderThemeFuture, displayModel, 1f, false, false);
|
||||
var bitmap = tileCache.get(job) ?? renderer.executeJob(job);
|
||||
|
||||
|
|
@ -6,16 +6,40 @@
|
|||
<DefineConstants>UWP</DefineConstants>
|
||||
<RootNamespace>MapControl.MapsforgeTiles</RootNamespace>
|
||||
<AssemblyTitle>XAML Map Control Mapsforge Library for UWP</AssemblyTitle>
|
||||
<GeneratePackageOnBuild>$(GeneratePackage)</GeneratePackageOnBuild>
|
||||
<PackageId>XAML.MapControl.MapsforgeTiles.UWP</PackageId>
|
||||
<Title>$(AssemblyTitle)</Title>
|
||||
<Description>Mapsforge support library for XAML Map Control</Description>
|
||||
<DisableRuntimeMarshalling>true</DisableRuntimeMarshalling>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="..\Shared\*.cs" />
|
||||
<Compile Include="..\WinUI\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\UWP\MapControl.UWP.csproj" />
|
||||
<ProjectReference Include="..\MapsforgeWrapper\MapsforgeWrapper.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IKVM" Version="8.15.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<IkvmReference Include="..\target\mapsforge-0.27.0-jar-with-dependencies.jar" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(OutDir)\mapsforge.dll">
|
||||
<Pack>true</Pack>
|
||||
<PackagePath>lib\net10.0-windows10.0.26100</PackagePath>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent"
|
||||
Outputs="..\target\mapsforge-0.27.0-jar-with-dependencies.jar">
|
||||
<Exec Command="mvn package" WorkingDirectory=".."/>
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
|
|||
17
MapsforgeTiles/WPF/MapsforgeTileSource.WPF.cs
Normal file
17
MapsforgeTiles/WPF/MapsforgeTileSource.WPF.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
using System;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
namespace MapControl.MapsforgeTiles
|
||||
{
|
||||
public partial class MapsforgeTileSource
|
||||
{
|
||||
private static BitmapSource CreateImage(int[] pixels)
|
||||
{
|
||||
var size = (int)Math.Sqrt(pixels.Length);
|
||||
var image = BitmapSource.Create(size, size, 96d, 96d, PixelFormats.Bgra32, null, pixels, size * 4);
|
||||
image.Freeze();
|
||||
return image;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,10 +5,37 @@
|
|||
<DefineConstants>WPF</DefineConstants>
|
||||
<RootNamespace>MapControl.MapsforgeTiles</RootNamespace>
|
||||
<AssemblyTitle>XAML Map Control Mapsforge Library for WPF</AssemblyTitle>
|
||||
<GeneratePackageOnBuild>$(GeneratePackage)</GeneratePackageOnBuild>
|
||||
<PackageId>XAML.MapControl.MapsforgeTiles.WPF</PackageId>
|
||||
<Title>$(AssemblyTitle)</Title>
|
||||
<Description>Mapsforge support library for XAML Map Control</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\WPF\MapControl.WPF.csproj" />
|
||||
<ProjectReference Include="..\MapsforgeWrapper\MapsforgeWrapper.csproj" />
|
||||
<Compile Include="..\Shared\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\WPF\MapControl.WPF.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IKVM" Version="8.15.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<IkvmReference Include="..\target\mapsforge-0.27.0-jar-with-dependencies.jar" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(OutDir)\mapsforge.dll">
|
||||
<Pack>true</Pack>
|
||||
<PackagePath>lib\net10.0-windows7.0</PackagePath>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent"
|
||||
Outputs="..\target\mapsforge-0.27.0-jar-with-dependencies.jar">
|
||||
<Exec Command="mvn package" WorkingDirectory=".."/>
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
|
|||
30
MapsforgeTiles/WinUI/MapsforgeTileSource.WinUI.cs
Normal file
30
MapsforgeTiles/WinUI/MapsforgeTileSource.WinUI.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
#if UWP
|
||||
using Windows.UI.Xaml.Media.Imaging;
|
||||
#elif WINUI
|
||||
using Microsoft.UI.Xaml.Media.Imaging;
|
||||
#endif
|
||||
|
||||
namespace MapControl.MapsforgeTiles
|
||||
{
|
||||
public partial class MapsforgeTileSource
|
||||
{
|
||||
private static WriteableBitmap CreateImage(int[] pixels)
|
||||
{
|
||||
var size = (int)Math.Sqrt(pixels.Length);
|
||||
var bitmap = new WriteableBitmap(size, size);
|
||||
|
||||
using var stream = bitmap.PixelBuffer.AsStream();
|
||||
using var writer = new BinaryWriter(stream);
|
||||
|
||||
foreach (var pixel in pixels)
|
||||
{
|
||||
writer.Write(pixel);
|
||||
}
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using System.Threading.Tasks;
|
||||
using MapsforgeWrapper;
|
||||
#if UWP
|
||||
using Windows.UI.Xaml.Media;
|
||||
using Windows.UI.Xaml.Media.Imaging;
|
||||
#elif WINUI
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using Microsoft.UI.Xaml.Media.Imaging;
|
||||
#endif
|
||||
|
||||
namespace MapControl.MapsforgeTiles
|
||||
{
|
||||
public class MapsforgeTileSource(string theme, int cacheCapacity = 200) : TileSource
|
||||
{
|
||||
private readonly TileRenderer renderer = new(theme, cacheCapacity);
|
||||
|
||||
public static void Initialize(string mapFilePath, float dpiScale)
|
||||
{
|
||||
TileRenderer.Initialize(mapFilePath, dpiScale);
|
||||
}
|
||||
|
||||
public override Task<ImageSource> LoadImageAsync(int zoomLevel, int column, int row)
|
||||
{
|
||||
var pixels = renderer.RenderTile(zoomLevel, column, row);
|
||||
ImageSource image = pixels != null ? CreateImage(pixels) : null;
|
||||
|
||||
return Task.FromResult(image);
|
||||
}
|
||||
|
||||
private static WriteableBitmap CreateImage(int[] pixels)
|
||||
{
|
||||
var size = (int)Math.Sqrt(pixels.Length);
|
||||
var bitmap = new WriteableBitmap(size, size);
|
||||
|
||||
using var stream = bitmap.PixelBuffer.AsStream();
|
||||
using var writer = new BinaryWriter(stream);
|
||||
|
||||
foreach (var pixel in pixels)
|
||||
{
|
||||
writer.Write(pixel);
|
||||
}
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,10 +5,37 @@
|
|||
<DefineConstants>WINUI</DefineConstants>
|
||||
<RootNamespace>MapControl.MapsforgeTiles</RootNamespace>
|
||||
<AssemblyTitle>XAML Map Control Mapsforge Library for WinUI</AssemblyTitle>
|
||||
<GeneratePackageOnBuild>$(GeneratePackage)</GeneratePackageOnBuild>
|
||||
<PackageId>XAML.MapControl.MapsforgeTiles.WinUI</PackageId>
|
||||
<Title>$(AssemblyTitle)</Title>
|
||||
<Description>Mapsforge support library for XAML Map Control</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\WinUI\MapControl.WinUI.csproj" />
|
||||
<ProjectReference Include="..\MapsforgeWrapper\MapsforgeWrapper.csproj" />
|
||||
<Compile Include="..\Shared\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\MapControl\WinUI\MapControl.WinUI.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IKVM" Version="8.15.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<IkvmReference Include="..\target\mapsforge-0.27.0-jar-with-dependencies.jar" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(OutDir)\mapsforge.dll">
|
||||
<Pack>true</Pack>
|
||||
<PackagePath>lib\net10.0-windows10.0.17763</PackagePath>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent"
|
||||
Outputs="..\target\mapsforge-0.27.0-jar-with-dependencies.jar">
|
||||
<Exec Command="mvn package" WorkingDirectory=".."/>
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
|
|||
Loading…
Reference in a new issue