Version 4.15.1: Simplified MBTiles.

This commit is contained in:
ClemensF 2019-11-14 23:21:08 +01:00
parent cf9d94ca9d
commit 08e1823e06
2 changed files with 21 additions and 84 deletions

View file

@ -38,63 +38,43 @@ namespace MapControl.MBTiles
private async Task FilePropertyChanged(string file) private async Task FilePropertyChanged(string file)
{ {
var mbTileSource = TileSource as MBTileSource; (TileSource as MBTileSource)?.Dispose();
if (mbTileSource != null) ClearValue(TileSourceProperty);
{ ClearValue(SourceNameProperty);
if (file == null) ClearValue(DescriptionProperty);
{ ClearValue(MinZoomLevelProperty);
ClearValue(TileSourceProperty); ClearValue(MaxZoomLevelProperty);
if (mbTileSource.Name != null)
{
ClearValue(SourceNameProperty);
}
if (mbTileSource.Description != null)
{
ClearValue(DescriptionProperty);
}
if (mbTileSource.MinZoom.HasValue)
{
ClearValue(MinZoomLevelProperty);
}
if (mbTileSource.MaxZoom.HasValue)
{
ClearValue(MaxZoomLevelProperty);
}
}
mbTileSource.Dispose();
}
if (file != null) if (file != null)
{ {
mbTileSource = await MBTileSource.CreateAsync(file); var tiledata = await MBTileData.CreateAsync(file);
var metadata = await tiledata.ReadMetadataAsync();
string s;
int minZoom;
int maxZoom;
if (mbTileSource.Name != null) if (metadata.TryGetValue("name", out s))
{ {
SourceName = mbTileSource.Name; SourceName = s;
} }
if (mbTileSource.Description != null) if (metadata.TryGetValue("description", out s))
{ {
Description = mbTileSource.Description; Description = s;
} }
if (mbTileSource.MinZoom.HasValue) if (metadata.TryGetValue("minzoom", out s) && int.TryParse(s, out minZoom))
{ {
MinZoomLevel = mbTileSource.MinZoom.Value; MinZoomLevel = minZoom;
} }
if (mbTileSource.MaxZoom.HasValue) if (metadata.TryGetValue("maxzoom", out s) && int.TryParse(s, out maxZoom))
{ {
MaxZoomLevel = mbTileSource.MaxZoom.Value; MaxZoomLevel = maxZoom;
} }
TileSource = mbTileSource; TileSource = new MBTileSource(tiledata);
} }
} }
} }

View file

@ -3,7 +3,6 @@
// Licensed under the Microsoft Public License (Ms-PL) // Licensed under the Microsoft Public License (Ms-PL)
using System; using System;
using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
#if WINDOWS_UWP #if WINDOWS_UWP
using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media;
@ -16,52 +15,10 @@ namespace MapControl.MBTiles
public sealed class MBTileSource : TileSource, IDisposable public sealed class MBTileSource : TileSource, IDisposable
{ {
public MBTileData TileData { get; } public MBTileData TileData { get; }
public string Name { get; }
public string Description { get; }
public string Format { get; }
public int? MinZoom { get; }
public int? MaxZoom { get; }
private MBTileSource(MBTileData tiledata, IDictionary<string, string> metadata) public MBTileSource(MBTileData tiledata)
{ {
TileData = tiledata; TileData = tiledata;
string s;
int minZoom;
int maxZoom;
if (metadata.TryGetValue("name", out s))
{
Name = s;
}
if (metadata.TryGetValue("description", out s))
{
Description = s;
}
if (metadata.TryGetValue("format", out s))
{
Format = s;
}
if (metadata.TryGetValue("minzoom", out s) && int.TryParse(s, out minZoom))
{
MinZoom = minZoom;
}
if (metadata.TryGetValue("maxzoom", out s) && int.TryParse(s, out maxZoom))
{
MaxZoom = maxZoom;
}
}
public static async Task<MBTileSource> CreateAsync(string file)
{
var tiledata = await MBTileData.CreateAsync(file);
var metadata = await tiledata.ReadMetadataAsync();
return new MBTileSource(tiledata, metadata);
} }
public void Dispose() public void Dispose()