Updated MapsforgeTileSource

This commit is contained in:
ClemensFischer 2026-03-28 08:00:31 +01:00
parent f367faa209
commit 8130f8ea9c
3 changed files with 51 additions and 47 deletions

View file

@ -83,45 +83,7 @@ namespace MapControl.MapsforgeTiles
{
if (renderThemeFuture == null)
{
lock (displayModel)
{
if (renderThemeFuture == null)
{
if (mapDataStore == null)
{
throw new InvalidOperationException("No map files loaded.");
}
Logger?.LogInformation("Loading render theme \"{theme}\".", Theme);
ZipInputStream zipInputStream = null;
XmlRenderTheme renderTheme;
if (Theme.EndsWith(".zip"))
{
zipInputStream = new ZipInputStream(new FileInputStream(Theme));
renderTheme = new ZipRenderTheme(
Path.GetFileName(Theme).Replace(".zip", ".xml"),
new ZipXmlThemeResourceProvider(zipInputStream));
}
else if (Theme.EndsWith(".xml"))
{
renderTheme = new ExternalRenderTheme(Theme);
}
else
{
renderTheme = MapsforgeThemes.valueOf(Theme.ToUpper());
}
tileCache = new InMemoryTileCache(CacheCapacity);
renderer = new DatabaseRenderer(mapDataStore, AwtGraphicFactory.INSTANCE, tileCache, null, true, false, null);
renderThemeFuture = new RenderThemeFuture(AwtGraphicFactory.INSTANCE, renderTheme, displayModel);
renderThemeFuture.run();
zipInputStream?.close();
Logger?.LogInformation("Loading render theme done.");
}
}
Initialize();
}
int[] imageBuffer = null;
@ -141,5 +103,48 @@ namespace MapControl.MapsforgeTiles
return imageBuffer;
}
private void Initialize()
{
lock (displayModel)
{
if (renderThemeFuture == null)
{
if (mapDataStore == null)
{
throw new InvalidOperationException("No map files loaded.");
}
Logger?.LogInformation("Loading render theme \"{theme}\".", Theme);
ZipInputStream zipInputStream = null;
XmlRenderTheme renderTheme;
if (Theme.EndsWith(".zip"))
{
zipInputStream = new ZipInputStream(new FileInputStream(Theme));
renderTheme = new ZipRenderTheme(
Path.GetFileName(Theme).Replace(".zip", ".xml"),
new ZipXmlThemeResourceProvider(zipInputStream));
}
else if (Theme.EndsWith(".xml"))
{
renderTheme = new ExternalRenderTheme(Theme);
}
else
{
renderTheme = MapsforgeThemes.valueOf(Theme.ToUpper());
}
tileCache = new InMemoryTileCache(CacheCapacity);
renderer = new DatabaseRenderer(mapDataStore, AwtGraphicFactory.INSTANCE, tileCache, null, true, false, null);
renderThemeFuture = new RenderThemeFuture(AwtGraphicFactory.INSTANCE, renderTheme, displayModel);
renderThemeFuture.run();
zipInputStream?.close();
Logger?.LogInformation("Loading render theme done.");
}
}
}
}
}