mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Renamed TileLayer.Name property to TileLayer.SourceName, removed TileLayerCollection.Name property.
This commit is contained in:
parent
e52698586b
commit
02b9cb4354
|
|
@ -119,7 +119,7 @@ namespace MapControl
|
||||||
{
|
{
|
||||||
BaseTileLayer = new TileLayer
|
BaseTileLayer = new TileLayer
|
||||||
{
|
{
|
||||||
Name = "OpenStreetMap",
|
SourceName = "OpenStreetMap",
|
||||||
Description = "© {y} OpenStreetMap Contributors, CC-BY-SA",
|
Description = "© {y} OpenStreetMap Contributors, CC-BY-SA",
|
||||||
TileSource = new TileSource("http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png")
|
TileSource = new TileSource("http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png")
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,9 @@ namespace MapControl
|
||||||
|
|
||||||
foreach (TileLayer tileLayer in tileLayers)
|
foreach (TileLayer tileLayer in tileLayers)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(tileLayer.Name))
|
if (string.IsNullOrWhiteSpace(tileLayer.SourceName))
|
||||||
{
|
{
|
||||||
throw new ArgumentException("TileLayer.Name property must not be null or empty.");
|
throw new ArgumentException("TileLayer.SourceName property must not be null or empty or white-space only.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Children.Insert(index++, tileLayer);
|
Children.Insert(index++, tileLayer);
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,8 @@ namespace MapControl
|
||||||
|
|
||||||
newTiles.ForEach(tile =>
|
newTiles.ForEach(tile =>
|
||||||
{
|
{
|
||||||
tileLayer.Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action)(() => tile.Image = imageTileSource.GetImage(tile.XIndex, tile.Y, tile.ZoomLevel)));
|
tileLayer.Dispatcher.BeginInvoke(DispatcherPriority.Background,
|
||||||
|
(Action)(() => tile.Image = imageTileSource.GetImage(tile.XIndex, tile.Y, tile.ZoomLevel)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -138,7 +139,6 @@ namespace MapControl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void DownloadTiles(object o)
|
private void DownloadTiles(object o)
|
||||||
{
|
{
|
||||||
Tile tile;
|
Tile tile;
|
||||||
|
|
@ -158,7 +158,7 @@ namespace MapControl
|
||||||
|
|
||||||
private string CacheKey(Tile tile)
|
private string CacheKey(Tile tile)
|
||||||
{
|
{
|
||||||
return string.Format("{0}/{1}/{2}/{3}", tileLayer.Name, tile.ZoomLevel, tile.XIndex, tile.Y);
|
return string.Format("{0}/{1}/{2}/{3}", tileLayer.SourceName, tile.ZoomLevel, tile.XIndex, tile.Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool CreateTileImage(Tile tile, byte[] buffer)
|
private bool CreateTileImage(Tile tile, byte[] buffer)
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace MapControl
|
||||||
MaxParallelDownloads = 8;
|
MaxParallelDownloads = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name { get; set; }
|
public string SourceName { get; set; }
|
||||||
public TileSource TileSource { get; set; }
|
public TileSource TileSource { get; set; }
|
||||||
public int MinZoomLevel { get; set; }
|
public int MinZoomLevel { get; set; }
|
||||||
public int MaxZoomLevel { get; set; }
|
public int MaxZoomLevel { get; set; }
|
||||||
|
|
@ -118,7 +118,8 @@ namespace MapControl
|
||||||
|
|
||||||
tiles.Sort((t1, t2) => t1.ZoomLevel - t2.ZoomLevel);
|
tiles.Sort((t1, t2) => t1.ZoomLevel - t2.ZoomLevel);
|
||||||
|
|
||||||
//System.Diagnostics.Trace.TraceInformation("{0} Tiles: {1}", tiles.Count, string.Join(", ", tiles.Select(t => t.ZoomLevel.ToString())));
|
//System.Diagnostics.Trace.TraceInformation("{0} Tiles: {1}", tiles.Count,
|
||||||
|
// string.Join(", ", System.Linq.Enumerable.Select(tiles, t => t.ZoomLevel.ToString())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RenderTiles()
|
private void RenderTiles()
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,5 @@ namespace MapControl
|
||||||
{
|
{
|
||||||
public class TileLayerCollection : ObservableCollection<TileLayer>
|
public class TileLayerCollection : ObservableCollection<TileLayer>
|
||||||
{
|
{
|
||||||
private string name;
|
|
||||||
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return !string.IsNullOrEmpty(name) ? name : (Count > 0 ? this[0].Name : string.Empty); }
|
|
||||||
set { name = value; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ namespace MapControl
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(value))
|
if (string.IsNullOrWhiteSpace(value))
|
||||||
{
|
{
|
||||||
throw new ArgumentException("The value of the UriFormat proprty must not be null or empty or white-space only.");
|
throw new ArgumentException("The value of the UriFormat property must not be null or empty or white-space only.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value.Contains("{x}") && value.Contains("{y}") && value.Contains("{z}"))
|
if (value.Contains("{x}") && value.Contains("{y}") && value.Contains("{z}"))
|
||||||
|
|
|
||||||
|
|
@ -6,42 +6,42 @@
|
||||||
Title="MainWindow" Height="600" Width="800">
|
Title="MainWindow" Height="600" Width="800">
|
||||||
<Window.Resources>
|
<Window.Resources>
|
||||||
<map:TileLayerCollection x:Key="TileLayers">
|
<map:TileLayerCollection x:Key="TileLayers">
|
||||||
<map:TileLayer Name="OpenStreetMap" Description="© {y} OpenStreetMap Contributors, CC-BY-SA"
|
<map:TileLayer SourceName="OpenStreetMap" Description="© {y} OpenStreetMap Contributors, CC-BY-SA"
|
||||||
TileSource="http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png"/>
|
TileSource="http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png"/>
|
||||||
<map:TileLayer Name="OpenCycleMap" Description="OpenCycleMap - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
<map:TileLayer SourceName="OpenCycleMap" Description="OpenCycleMap - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
||||||
TileSource="http://{c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png"/>
|
TileSource="http://{c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png"/>
|
||||||
<map:TileLayer Name="OCM Transport" Description="OpenCycleMap Transport - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
<map:TileLayer SourceName="OCM Transport" Description="OpenCycleMap Transport - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
||||||
TileSource="http://{c}.tile2.opencyclemap.org/transport/{z}/{x}/{y}.png"/>
|
TileSource="http://{c}.tile2.opencyclemap.org/transport/{z}/{x}/{y}.png"/>
|
||||||
<map:TileLayer Name="OCM Landscape" Description="OpenCycleMap Landscape - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
<map:TileLayer SourceName="OCM Landscape" Description="OpenCycleMap Landscape - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
||||||
TileSource="http://{c}.tile3.opencyclemap.org/landscape/{z}/{x}/{y}.png"/>
|
TileSource="http://{c}.tile3.opencyclemap.org/landscape/{z}/{x}/{y}.png"/>
|
||||||
<map:TileLayer Name="MapQuest OSM" Description="MapQuest OSM - © {y} MapQuest & OpenStreetMap Contributors"
|
<map:TileLayer SourceName="MapQuest OSM" Description="MapQuest OSM - © {y} MapQuest & OpenStreetMap Contributors"
|
||||||
TileSource="http://otile{n}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png"/>
|
TileSource="http://otile{n}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png"/>
|
||||||
|
|
||||||
<!-- Note: The providers of the below TileLayers do not allow access to their
|
<!-- Note: The providers of the below TileLayers do not allow access to their
|
||||||
map content without using their APIs (i.e. Google Maps API or Bing Maps API).
|
map content without using their APIs (i.e. Google Maps API or Bing Maps API).
|
||||||
Hence the declarations below are for demonstration purpose only. -->
|
Hence the declarations below are for demonstration purpose only. -->
|
||||||
|
|
||||||
<!--<map:TileLayer Name="Google Maps" Description="Google Maps - © {y} Google"
|
<!--<map:TileLayer SourceName="Google Maps" Description="Google Maps - © {y} Google"
|
||||||
TileSource="http://mt{i}.google.com/vt/x={x}&y={y}&z={z}" MaxZoomLevel="20"/>
|
TileSource="http://mt{i}.google.com/vt/x={x}&y={y}&z={z}" MaxZoomLevel="20"/>
|
||||||
<map:TileLayer Name="Google Images" Description="Google Maps - © {y} Google"
|
<map:TileLayer SourceName="Google Images" Description="Google Maps - © {y} Google"
|
||||||
TileSource="http://khm{i}.google.com/kh/v=113&x={x}&y={y}&z={z}" MaxZoomLevel="20" HasDarkBackground="True"/>
|
TileSource="http://khm{i}.google.com/kh/v=119&x={x}&y={y}&z={z}" MaxZoomLevel="20" HasDarkBackground="True"/>
|
||||||
<map:TileLayer Name="Bing Maps" Description="Bing Maps - © {y} Microsoft Corporation"
|
<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&stl=h" MaxZoomLevel="20"/>
|
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/r{q}.png?g=0&stl=h" MaxZoomLevel="20"/>
|
||||||
<map:TileLayer Name="Bing Images" Description="Bing Maps - © {y} Microsoft Corporation"
|
<map:TileLayer SourceName="Bing Images" Description="Bing Maps - © {y} Microsoft Corporation"
|
||||||
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/a{q}.jpeg?g=0" MaxZoomLevel="20" HasDarkBackground="True"/>
|
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/a{q}.jpeg?g=0" MaxZoomLevel="20" HasDarkBackground="True"/>
|
||||||
<map:TileLayer Name="Bing Hybrid" Description="Bing Maps - © {y} Microsoft Corporation"
|
<map:TileLayer SourceName="Bing Hybrid" Description="Bing Maps - © {y} Microsoft Corporation"
|
||||||
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/h{q}.jpeg?g=0&stl=h" MaxZoomLevel="20" HasDarkBackground="True"/>-->
|
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/h{q}.jpeg?g=0&stl=h" MaxZoomLevel="20" HasDarkBackground="True"/>-->
|
||||||
|
|
||||||
<!-- The TileLayer below uses an ImageTileSource, which bypasses caching of map tile images -->
|
<!-- The TileLayer below uses an ImageTileSource, which bypasses caching of map tile images -->
|
||||||
|
|
||||||
<map:TileLayer Name="OSM Uncached" Description="© {y} OpenStreetMap Contributors, CC-BY-SA">
|
<!--<map:TileLayer SourceName="OSM Uncached" Description="© {y} OpenStreetMap Contributors, CC-BY-SA">
|
||||||
<map:TileLayer.TileSource>
|
<map:TileLayer.TileSource>
|
||||||
<map:ImageTileSource UriFormat="http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png"/>
|
<map:ImageTileSource UriFormat="http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png"/>
|
||||||
</map:TileLayer.TileSource>
|
</map:TileLayer.TileSource>
|
||||||
</map:TileLayer>
|
</map:TileLayer>-->
|
||||||
</map:TileLayerCollection>
|
</map:TileLayerCollection>
|
||||||
<CollectionViewSource x:Key="TileLayersView" Source="{StaticResource TileLayers}"/>
|
<CollectionViewSource x:Key="TileLayersView" Source="{StaticResource TileLayers}"/>
|
||||||
<map:TileLayer x:Key="SeamarksTileLayer" Name="Seamarks" Description="© {y} OpenSeaMap Contributors, CC-BY-SA"
|
<map:TileLayer x:Key="SeamarksTileLayer" SourceName="Seamarks" Description="© {y} OpenSeaMap Contributors, CC-BY-SA"
|
||||||
TileSource="http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png" MinZoomLevel="10" MaxZoomLevel="18"/>
|
TileSource="http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png" MinZoomLevel="10" MaxZoomLevel="18"/>
|
||||||
<local:SampleItemCollection x:Key="Polylines"/>
|
<local:SampleItemCollection x:Key="Polylines"/>
|
||||||
<local:SampleItemCollection x:Key="Points"/>
|
<local:SampleItemCollection x:Key="Points"/>
|
||||||
|
|
@ -168,7 +168,7 @@
|
||||||
<Slider Name="headingSlider" ToolTip="Heading" Margin="4,0,4,0" Width="100" Minimum="0" Maximum="360" SmallChange="10" LargeChange="45"
|
<Slider Name="headingSlider" ToolTip="Heading" Margin="4,0,4,0" Width="100" Minimum="0" Maximum="360" SmallChange="10" LargeChange="45"
|
||||||
Value="{Binding TargetHeading, ElementName=map}"/>
|
Value="{Binding TargetHeading, ElementName=map}"/>
|
||||||
<CheckBox ToolTip="Map Overlay" Margin="4,0,4,0" VerticalAlignment="Center" Content="Seamarks" Click="SeamarksClick"/>
|
<CheckBox ToolTip="Map Overlay" Margin="4,0,4,0" VerticalAlignment="Center" Content="Seamarks" Click="SeamarksClick"/>
|
||||||
<ComboBox ToolTip="Main Tile Layer" Margin="4,0,0,0" DisplayMemberPath="Name"
|
<ComboBox ToolTip="Main Tile Layer" Margin="4,0,0,0" DisplayMemberPath="SourceName"
|
||||||
ItemsSource="{Binding Source={StaticResource TileLayersView}}"/>
|
ItemsSource="{Binding Source={StaticResource TileLayersView}}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue