mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Version 4.15.1: Use XDocument instead of XmlDocument
This commit is contained in:
parent
a1a5cfb8d0
commit
cf9d94ca9d
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue