Version 4.15.1: Use XDocument instead of XmlDocument

This commit is contained in:
ClemensF 2019-11-11 20:11:35 +01:00
parent a1a5cfb8d0
commit cf9d94ca9d
2 changed files with 23 additions and 17 deletions

View file

@ -49,9 +49,9 @@ namespace MapControl.MBTiles
connection.Dispose(); connection.Dispose();
} }
public async Task<IDictionary<string, string>> ReadMetaDataAsync() public async Task<IDictionary<string, string>> ReadMetadataAsync()
{ {
var metaData = new Dictionary<string, string>(); var metadata = new Dictionary<string, string>();
try try
{ {
@ -61,7 +61,7 @@ namespace MapControl.MBTiles
while (await reader.ReadAsync()) while (await reader.ReadAsync())
{ {
metaData[(string)reader["name"]] = (string)reader["value"]; metadata[(string)reader["name"]] = (string)reader["value"];
} }
} }
} }
@ -70,10 +70,10 @@ namespace MapControl.MBTiles
Debug.WriteLine("MBTileData: " + ex.Message); Debug.WriteLine("MBTileData: " + ex.Message);
} }
return metaData; return metadata;
} }
public async Task WriteMetaDataAsync(IDictionary<string, string> metaData) public async Task WriteMetadataAsync(IDictionary<string, string> metaData)
{ {
try try
{ {

View file

@ -15,37 +15,42 @@ namespace MapControl.MBTiles
{ {
public sealed class MBTileSource : TileSource, IDisposable public sealed class MBTileSource : TileSource, IDisposable
{ {
private readonly MBTileData tileData; public MBTileData TileData { get; }
public string Name { get; } public string Name { get; }
public string Description { get; } public string Description { get; }
public string Format { get; }
public int? MinZoom { get; } public int? MinZoom { get; }
public int? MaxZoom { get; } public int? MaxZoom { get; }
private MBTileSource(MBTileData tileData, IDictionary<string, string> metaData) private MBTileSource(MBTileData tiledata, IDictionary<string, string> metadata)
{ {
this.tileData = tileData; TileData = tiledata;
string s; string s;
int minZoom; int minZoom;
int maxZoom; int maxZoom;
if (metaData.TryGetValue("name", out s)) if (metadata.TryGetValue("name", out s))
{ {
Name = s; Name = s;
} }
if (metaData.TryGetValue("description", out s)) if (metadata.TryGetValue("description", out s))
{ {
Description = s; Description = s;
} }
if (metaData.TryGetValue("minzoom", out s) && int.TryParse(s, out minZoom)) if (metadata.TryGetValue("format", out s))
{
Format = s;
}
if (metadata.TryGetValue("minzoom", out s) && int.TryParse(s, out minZoom))
{ {
MinZoom = minZoom; MinZoom = minZoom;
} }
if (metaData.TryGetValue("maxzoom", out s) && int.TryParse(s, out maxZoom)) if (metadata.TryGetValue("maxzoom", out s) && int.TryParse(s, out maxZoom))
{ {
MaxZoom = maxZoom; MaxZoom = maxZoom;
} }
@ -53,19 +58,20 @@ namespace MapControl.MBTiles
public static async Task<MBTileSource> CreateAsync(string file) public static async Task<MBTileSource> CreateAsync(string file)
{ {
var tileData = await MBTileData.CreateAsync(file); var tiledata = await MBTileData.CreateAsync(file);
var metadata = await tiledata.ReadMetadataAsync();
return new MBTileSource(tileData, await tileData.ReadMetaDataAsync()); return new MBTileSource(tiledata, metadata);
} }
public void Dispose() public void Dispose()
{ {
tileData.Dispose(); TileData.Dispose();
} }
public override async Task<ImageSource> LoadImageAsync(int x, int y, int zoomLevel) public override async Task<ImageSource> LoadImageAsync(int x, int y, int zoomLevel)
{ {
var buffer = await tileData.ReadImageBufferAsync(x, y, zoomLevel); var buffer = await TileData.ReadImageBufferAsync(x, y, zoomLevel);
return buffer != null ? await ImageLoader.LoadImageAsync(buffer) : null; return buffer != null ? await ImageLoader.LoadImageAsync(buffer) : null;
} }