Version 1.3.10: Minor improvements in TileImageLoader. Removed SurfaceApplication from VS Solution.

This commit is contained in:
ClemensF 2013-08-29 15:49:48 +02:00
parent 09eeb11269
commit aa04fd0551
20 changed files with 53 additions and 58 deletions

View file

@ -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)]

View file

@ -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)]

View file

@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileDbCache", "Caching\FileDbCache\FileDbCache.csproj", "{EF44F661-B98A-4676-927F-85D138F82300}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SurfaceApplication", "SampleApps\SurfaceApplication\SurfaceApplication.csproj", "{6285FB9D-B7EA-469A-B464-224077967167}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageFileCache", "Caching\ImageFileCache\ImageFileCache.csproj", "{86470440-FEE2-4120-AF5A-3762FB9C536F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SilverlightApplication", "SampleApps\SilverlightApplication\SilverlightApplication.csproj", "{CBA8C535-CCA3-4F60-8D3E-0E25791CBD21}"
@ -31,10 +29,6 @@ Global
{EF44F661-B98A-4676-927F-85D138F82300}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF44F661-B98A-4676-927F-85D138F82300}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF44F661-B98A-4676-927F-85D138F82300}.Release|Any CPU.Build.0 = Release|Any CPU
{6285FB9D-B7EA-469A-B464-224077967167}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6285FB9D-B7EA-469A-B464-224077967167}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6285FB9D-B7EA-469A-B464-224077967167}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6285FB9D-B7EA-469A-B464-224077967167}.Release|Any CPU.Build.0 = Release|Any CPU
{86470440-FEE2-4120-AF5A-3762FB9C536F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{86470440-FEE2-4120-AF5A-3762FB9C536F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{86470440-FEE2-4120-AF5A-3762FB9C536F}.Release|Any CPU.ActiveCfg = Release|Any CPU

View file

@ -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)]

View file

@ -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);
}
}
}

View file

@ -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);
}

View file

@ -96,7 +96,7 @@ namespace MapControl
{
SelectTiles();
RenderTiles();
tileImageLoader.BeginGetTiles(tiles);
tileImageLoader.StartGetTiles(tiles.Where(t => !t.HasImage));
}
}

View file

@ -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()).

View file

@ -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)]

View file

@ -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)]

View file

@ -157,7 +157,7 @@
Value="{Binding Opacity, ElementName=mapImage, Mode=TwoWay}"/>
</StackPanel>
<CheckBox Margin="5" VerticalAlignment="Bottom" Content="Seamarks" Click="SeamarksClick"/>
<ComboBox Margin="5" VerticalAlignment="Bottom" Width="120" SelectedIndex="0" SelectionChanged="TileLayerSelectionChanged">
<ComboBox x:Name="tileLayerComboBox" Margin="5" VerticalAlignment="Bottom" Width="120" SelectionChanged="TileLayerSelectionChanged">
<sys:String>OpenStreetMap</sys:String>
<sys:String>OpenCycleMap</sys:String>
<sys:String>OCM Transport</sys:String>

View file

@ -20,6 +20,7 @@ namespace SilverlightApplication
public MainPage()
{
InitializeComponent();
tileLayerComboBox.SelectedIndex = 0;
var polylines = (ICollection<object>)Resources["Polylines"];
polylines.Add(
@ -134,12 +135,9 @@ namespace SilverlightApplication
private void TileLayerSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (map != null)
{
var comboBox = (ComboBox)sender;
var tileLayers = (TileLayerCollection)Resources["TileLayers"];
map.TileLayer = tileLayers[(string)comboBox.SelectedItem];
}
var comboBox = (ComboBox)sender;
var tileLayers = (TileLayerCollection)Resources["TileLayers"];
map.TileLayer = tileLayers[(string)comboBox.SelectedItem];
}
private void SeamarksClick(object sender, RoutedEventArgs e)

View file

@ -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)]

View file

@ -185,7 +185,7 @@
<Slider Margin="10,-10,10,-10" Width="200" Value="50" ValueChanged="ImageOpacitySliderValueChanged"/>
</StackPanel>
<CheckBox Margin="10" VerticalAlignment="Center" Content="Seamarks" Click="SeamarksClick"/>
<ComboBox Margin="10" Width="200" VerticalAlignment="Center" SelectedIndex="0" SelectionChanged="TileLayerSelectionChanged">
<ComboBox x:Name="tileLayerComboBox" Margin="10" Width="200" VerticalAlignment="Center" SelectionChanged="TileLayerSelectionChanged">
<ComboBoxItem>OpenStreetMap</ComboBoxItem>
<ComboBoxItem>OpenCycleMap</ComboBoxItem>
<ComboBoxItem>OCM Transport</ComboBoxItem>

View file

@ -23,6 +23,7 @@ namespace StoreApplication
public MainPage()
{
this.InitializeComponent();
tileLayerComboBox.SelectedIndex = 0;
var polylines = (ICollection<object>)Resources["Polylines"];
polylines.Add(
@ -143,12 +144,9 @@ namespace StoreApplication
private void TileLayerSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (map != null)
{
var comboBox = (ComboBox)sender;
var tileLayers = (TileLayerCollection)Resources["TileLayers"];
map.TileLayer = tileLayers[(string)((ComboBoxItem)comboBox.SelectedItem).Content];
}
var comboBox = (ComboBox)sender;
var tileLayers = (TileLayerCollection)Resources["TileLayers"];
map.TileLayer = tileLayers[(string)((ComboBoxItem)comboBox.SelectedItem).Content];
}
}
}

View file

@ -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)]

View file

@ -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)]

View file

@ -28,7 +28,7 @@
<!--<map:TileLayer SourceName="Google Maps" Description="Google Maps - © {y} Google"
TileSource="http://mt{i}.google.com/vt/x={x}&amp;y={y}&amp;z={z}" MaxZoomLevel="20"/>
<map:TileLayer SourceName="Google Images" Description="Google Maps - © {y} Google" Background="#FF3F3F3F" Foreground="White"
TileSource="http://khm{i}.google.com/kh/v=123&amp;x={x}&amp;y={y}&amp;z={z}" MaxZoomLevel="20"/>
TileSource="http://khm{i}.google.com/kh/v=135&amp;x={x}&amp;y={y}&amp;z={z}" MaxZoomLevel="20"/>
<map:TileLayer SourceName="Bing Maps" Description="Bing Maps - © {y} Microsoft Corporation"
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/r{q}.png?g=0&amp;stl=h" MaxZoomLevel="20"/>
<map:TileLayer SourceName="Bing Images" Description="Bing Maps - © {y} Microsoft Corporation" Background="#FF3F3F3F" Foreground="White"
@ -152,7 +152,7 @@
<!-- experimental WMS map layers -->
<!--<map:MapImageLayer Opacity="0.5"
UriFormat="http://129.206.228.72/cached/osm?SERVICE=WMS&amp;VERSION=1.1.1&amp;REQUEST=GetMap&amp;LAYERS=osm_auto:all&amp;STYLES=&amp;SRS=EPSG:900913&amp;BBOX={W},{S},{E},{N}&amp;WIDTH={X}&amp;HEIGHT={Y}&amp;FORMAT=image/png"/>-->
UriFormat="http://watzmann-geog.urz.uni-heidelberg.de/cached/osm?SERVICE=WMS&amp;VERSION=1.1.1&amp;REQUEST=GetMap&amp;LAYERS=osm_auto:all&amp;STYLES=&amp;SRS=EPSG:900913&amp;BBOX={W},{S},{E},{N}&amp;WIDTH={X}&amp;HEIGHT={Y}&amp;FORMAT=image/png"/>-->
<!--<map:MapImageLayer Opacity="0.5"
UriFormat="http://ows.terrestris.de/osm-basemap/service?SERVICE=WMS&amp;VERSION=1.1.1&amp;REQUEST=GetMap&amp;LAYERS=OSM-WMS-Deutschland&amp;STYLES=&amp;SRS=EPSG:900913&amp;BBOX={W},{S},{E},{N}&amp;WIDTH={X}&amp;HEIGHT={Y}&amp;FORMAT=image/png"/>-->

View file

@ -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)]

View file

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18046
// Runtime Version:4.0.30319.18051
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.