mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-04-05 14:37:01 +00:00
Version 1.3.10: Minor improvements in TileImageLoader. Removed SurfaceApplication from VS Solution.
This commit is contained in:
parent
09eeb11269
commit
aa04fd0551
20 changed files with 53 additions and 58 deletions
|
|
@ -15,8 +15,8 @@ using System.Windows;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.3.9")]
|
||||
[assembly: AssemblyFileVersion("1.3.9")]
|
||||
[assembly: AssemblyVersion("1.3.10")]
|
||||
[assembly: AssemblyFileVersion("1.3.10")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -24,13 +24,16 @@ namespace MapControl
|
|||
this.tileLayer = tileLayer;
|
||||
}
|
||||
|
||||
internal void BeginGetTiles(IEnumerable<Tile> tiles)
|
||||
internal void StartGetTiles(IEnumerable<Tile> tiles)
|
||||
{
|
||||
foreach (var tile in tiles.Where(t => !t.HasImage))
|
||||
foreach (var tile in tiles)
|
||||
{
|
||||
var uri = tileLayer.TileSource.GetUri(tile.XIndex, tile.Y, tile.ZoomLevel);
|
||||
|
||||
tile.SetImageSource(new BitmapImage(uri), true);
|
||||
if (uri != null)
|
||||
{
|
||||
tile.SetImageSource(new BitmapImage(uri), tileLayer.AnimateTileOpacity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -71,9 +71,12 @@ namespace MapControl
|
|||
this.tileLayer = tileLayer;
|
||||
}
|
||||
|
||||
internal void BeginGetTiles(IEnumerable<Tile> tiles)
|
||||
internal void StartGetTiles(IEnumerable<Tile> tiles)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(BeginGetTilesAsync, new List<Tile>(tiles.Where(t => !t.HasImage)));
|
||||
if (tiles.Any())
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(GetTilesAsync, tiles.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
internal void CancelGetTiles()
|
||||
|
|
@ -87,15 +90,15 @@ namespace MapControl
|
|||
return string.Format("{0}/{1}/{2}/{3}", tileLayer.SourceName, tile.ZoomLevel, tile.XIndex, tile.Y);
|
||||
}
|
||||
|
||||
private void BeginGetTilesAsync(object newTilesList)
|
||||
private void GetTilesAsync(object tileList)
|
||||
{
|
||||
var newTiles = (List<Tile>)newTilesList;
|
||||
var tiles = (List<Tile>)tileList;
|
||||
var imageTileSource = tileLayer.TileSource as ImageTileSource;
|
||||
var animateOpacity = tileLayer.AnimateTileOpacity;
|
||||
|
||||
if (imageTileSource != null && !imageTileSource.CanLoadAsync)
|
||||
{
|
||||
foreach (var tile in newTiles)
|
||||
foreach (var tile in tiles)
|
||||
{
|
||||
tileLayer.Dispatcher.BeginInvoke(
|
||||
(Action<Tile, ImageTileSource>)((t, ts) => t.SetImageSource(ts.LoadImage(t.XIndex, t.Y, t.ZoomLevel), animateOpacity)),
|
||||
|
|
@ -108,9 +111,9 @@ namespace MapControl
|
|||
!tileLayer.TileSource.UriFormat.StartsWith("file://") &&
|
||||
!string.IsNullOrWhiteSpace(tileLayer.SourceName))
|
||||
{
|
||||
var outdatedTiles = new List<Tile>(newTiles.Count);
|
||||
var outdatedTiles = new List<Tile>(tiles.Count);
|
||||
|
||||
foreach (var tile in newTiles)
|
||||
foreach (var tile in tiles)
|
||||
{
|
||||
var key = GetCacheKey(tile);
|
||||
var buffer = Cache.Get(key) as byte[];
|
||||
|
|
@ -136,10 +139,10 @@ namespace MapControl
|
|||
}
|
||||
}
|
||||
|
||||
newTiles = outdatedTiles; // enqueue outdated tiles at last
|
||||
tiles = outdatedTiles; // enqueue outdated tiles at last
|
||||
}
|
||||
|
||||
foreach (var tile in newTiles)
|
||||
foreach (var tile in tiles)
|
||||
{
|
||||
pendingTiles.Enqueue(tile);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ namespace MapControl
|
|||
{
|
||||
SelectTiles();
|
||||
RenderTiles();
|
||||
tileImageLoader.BeginGetTiles(tiles);
|
||||
tileImageLoader.StartGetTiles(tiles.Where(t => !t.HasImage));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ namespace MapControl
|
|||
|
||||
private Func<int, int, int, Uri> getUri;
|
||||
private string uriFormat = string.Empty;
|
||||
private int hostIndex = -1;
|
||||
|
||||
public TileSource()
|
||||
{
|
||||
|
|
@ -103,7 +102,7 @@ namespace MapControl
|
|||
|
||||
private Uri GetOpenStreetMapUri(int x, int y, int zoomLevel)
|
||||
{
|
||||
hostIndex = (hostIndex + 1) % 3;
|
||||
var hostIndex = (x + y + zoomLevel) % 3;
|
||||
|
||||
return new Uri(UriFormat.
|
||||
Replace("{c}", "abc".Substring(hostIndex, 1)).
|
||||
|
|
@ -114,7 +113,7 @@ namespace MapControl
|
|||
|
||||
private Uri GetGoogleMapsUri(int x, int y, int zoomLevel)
|
||||
{
|
||||
hostIndex = (hostIndex + 1) % 4;
|
||||
var hostIndex = (x + y + zoomLevel) % 4;
|
||||
|
||||
return new Uri(UriFormat.
|
||||
Replace("{i}", hostIndex.ToString()).
|
||||
|
|
@ -125,7 +124,7 @@ namespace MapControl
|
|||
|
||||
private Uri GetMapQuestUri(int x, int y, int zoomLevel)
|
||||
{
|
||||
hostIndex = (hostIndex % 4) + 1;
|
||||
var hostIndex = (x + y + zoomLevel) % 4 + 1;
|
||||
|
||||
return new Uri(UriFormat.
|
||||
Replace("{n}", hostIndex.ToString()).
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.3.9")]
|
||||
[assembly: AssemblyFileVersion("1.3.9")]
|
||||
[assembly: AssemblyVersion("1.3.10")]
|
||||
[assembly: AssemblyFileVersion("1.3.10")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue