mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-01-23 00:50:16 +01:00
Removed default User-Agent header.
Using a library's default User-Agent violates OpenStreetMap's tile usage policy: https://operations.osmfoundation.org/policies/tiles/
This commit is contained in:
parent
8124d5714a
commit
66a51906ef
|
|
@ -23,19 +23,15 @@ namespace MapControl
|
|||
|
||||
/// <summary>
|
||||
/// The System.Net.Http.HttpClient instance used to download images.
|
||||
/// An application should add a unique User-Agent value to the DefaultRequestHeaders of this
|
||||
/// HttpClient instance (or the Headers of a HttpRequestMessage used in a HttpMessageHandler).
|
||||
/// Failing to set a unique User-Agent value is a violation of OpenStreetMap's tile usage policy
|
||||
/// (see https://operations.osmfoundation.org/policies/tiles/) and results in blocked access
|
||||
/// to their tile servers.
|
||||
/// </summary>
|
||||
public static HttpClient HttpClient
|
||||
{
|
||||
get
|
||||
{
|
||||
if (field == null)
|
||||
{
|
||||
field = new HttpClient { Timeout = TimeSpan.FromSeconds(10) };
|
||||
field.DefaultRequestHeaders.Add("User-Agent", $"XAML-Map-Control/{typeof(ImageLoader).Assembly.GetName().Version}");
|
||||
}
|
||||
|
||||
return field;
|
||||
}
|
||||
get => field ??= new HttpClient { Timeout = TimeSpan.FromSeconds(10) };
|
||||
set;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@
|
|||
</tools:MapLayerMenuItem>
|
||||
<tools:MapLayerMenuItem Text="OpenStreetMap WMS">
|
||||
<map:WmsImageLayer
|
||||
ServiceUri="http://ows.terrestris.de/osm/service"
|
||||
ServiceUri="https://ows.terrestris.de/osm/service"
|
||||
Description="© [terrestris GmbH & Co. KG](http://ows.terrestris.de/) © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerMenuItem>
|
||||
|
||||
|
|
|
|||
|
|
@ -13,12 +13,14 @@ namespace SampleApplication
|
|||
{
|
||||
public MainWindow()
|
||||
{
|
||||
ImageLoader.HttpClient.DefaultRequestHeaders.Add("User-Agent", "XAML Map Control Avalonia Sample Application");
|
||||
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddDebug().SetMinimumLevel(LogLevel.Information));
|
||||
ImageLoader.LoggerFactory = loggerFactory;
|
||||
|
||||
//var tileCache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder, loggerFactory);
|
||||
//TileImageLoader.Cache = tileCache;
|
||||
//Closed += (s, e) => tileCache.Dispose();
|
||||
var tileCache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder, loggerFactory);
|
||||
TileImageLoader.Cache = tileCache;
|
||||
Closed += (s, e) => tileCache.Dispose();
|
||||
|
||||
InitializeComponent();
|
||||
AddTestLayers();
|
||||
|
|
@ -95,7 +97,7 @@ namespace SampleApplication
|
|||
|
||||
if (start != null)
|
||||
{
|
||||
measurementLine.Locations = LocationCollection.OrthodromeLocations(start, location);
|
||||
measurementLine.Locations = LocationCollection.GeodesicLocations(start, location);
|
||||
mouseLocation.Text += GetDistanceText(location.GetDistance(start));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -210,7 +210,7 @@
|
|||
</tools:MapLayerMenuItem>
|
||||
<tools:MapLayerMenuItem Text="OpenStreetMap WMS">
|
||||
<map:WmsImageLayer
|
||||
ServiceUri="http://ows.terrestris.de/osm/service"
|
||||
ServiceUri="https://ows.terrestris.de/osm/service"
|
||||
Description="© [terrestris GmbH & Co. KG](http://ows.terrestris.de/) © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerMenuItem>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,12 +16,14 @@ namespace SampleApplication
|
|||
{
|
||||
public MainPage()
|
||||
{
|
||||
ImageLoader.HttpClient.DefaultRequestHeaders.Add("User-Agent", "XAML Map Control UWP Sample Application");
|
||||
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddDebug().SetMinimumLevel(LogLevel.Information));
|
||||
ImageLoader.LoggerFactory = loggerFactory;
|
||||
|
||||
//var tileCache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder, loggerFactory);
|
||||
//TileImageLoader.Cache = tileCache;
|
||||
//Unloaded += (s, e) => tileCache.Dispose();
|
||||
var tileCache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder, loggerFactory);
|
||||
TileImageLoader.Cache = tileCache;
|
||||
Unloaded += (s, e) => tileCache.Dispose();
|
||||
|
||||
InitializeComponent();
|
||||
AddTestLayers();
|
||||
|
|
@ -93,7 +95,7 @@ namespace SampleApplication
|
|||
|
||||
if (start != null)
|
||||
{
|
||||
measurementLine.Locations = LocationCollection.OrthodromeLocations(start, location);
|
||||
measurementLine.Locations = LocationCollection.GeodesicLocations(start, location);
|
||||
mouseLocation.Text += GetDistanceText(location.GetDistance(start));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@
|
|||
</tools:MapLayerMenuItem>
|
||||
<tools:MapLayerMenuItem Text="OpenStreetMap WMS">
|
||||
<map:WmsImageLayer
|
||||
ServiceUri="http://ows.terrestris.de/osm/service"
|
||||
ServiceUri="https://ows.terrestris.de/osm/service"
|
||||
Description="© [terrestris GmbH & Co. KG](http://ows.terrestris.de/) © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerMenuItem>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,12 +16,14 @@ namespace SampleApplication
|
|||
{
|
||||
public MainWindow()
|
||||
{
|
||||
ImageLoader.HttpClient.DefaultRequestHeaders.Add("User-Agent", "XAML Map Control WinUI Sample Application");
|
||||
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddDebug().SetMinimumLevel(LogLevel.Information));
|
||||
ImageLoader.LoggerFactory = loggerFactory;
|
||||
|
||||
//var tileCache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder, loggerFactory);
|
||||
//TileImageLoader.Cache = tileCache;
|
||||
//Closed += (s, e) => tileCache.Dispose();
|
||||
var tileCache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder, loggerFactory);
|
||||
TileImageLoader.Cache = tileCache;
|
||||
Closed += (s, e) => tileCache.Dispose();
|
||||
|
||||
InitializeComponent();
|
||||
AddTestLayers();
|
||||
|
|
@ -94,7 +96,7 @@ namespace SampleApplication
|
|||
|
||||
if (start != null)
|
||||
{
|
||||
measurementLine.Locations = LocationCollection.OrthodromeLocations(start, location);
|
||||
measurementLine.Locations = LocationCollection.GeodesicLocations(start, location);
|
||||
mouseLocation.Text += GetDistanceText(location.GetDistance(start));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@
|
|||
</tools:MapLayerMenuItem>
|
||||
<tools:MapLayerMenuItem Text="OpenStreetMap WMS">
|
||||
<map:WmsImageLayer
|
||||
ServiceUri="http://ows.terrestris.de/osm/service"
|
||||
ServiceUri="https://ows.terrestris.de/osm/service"
|
||||
Description="© [terrestris GmbH & Co. KG](http://ows.terrestris.de/) © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)"/>
|
||||
</tools:MapLayerMenuItem>
|
||||
|
||||
|
|
|
|||
|
|
@ -10,16 +10,43 @@ using System.Windows.Input;
|
|||
|
||||
namespace SampleApplication
|
||||
{
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
class HttpHandler : DelegatingHandler
|
||||
{
|
||||
public HttpHandler()
|
||||
#if NET
|
||||
: base(new SocketsHttpHandler())
|
||||
#else
|
||||
: base(new HttpClientHandler())
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
|
||||
{
|
||||
Debug.WriteLine(request.RequestUri);
|
||||
|
||||
return base.SendAsync(request, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
var httpClient = new HttpClient(new HttpHandler()) { Timeout = TimeSpan.FromSeconds(10) };
|
||||
httpClient.DefaultRequestHeaders.Add("User-Agent", "XAML Map Control Avalonia Sample Application");
|
||||
ImageLoader.HttpClient = httpClient;
|
||||
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddDebug().SetMinimumLevel(LogLevel.Information));
|
||||
ImageLoader.LoggerFactory = loggerFactory;
|
||||
|
||||
//var tileCache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder, loggerFactory);
|
||||
//TileImageLoader.Cache = tileCache;
|
||||
//Closed += (s, e) => tileCache.Dispose();
|
||||
var tileCache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder, loggerFactory);
|
||||
TileImageLoader.Cache = tileCache;
|
||||
Closed += (s, e) => tileCache.Dispose();
|
||||
|
||||
InitializeComponent();
|
||||
AddTestLayers();
|
||||
|
|
@ -43,6 +70,10 @@ namespace SampleApplication
|
|||
{
|
||||
map.TargetCenter = map.ViewToLocation(e.GetPosition(map));
|
||||
}
|
||||
else if (Keyboard.Modifiers.HasFlag(ModifierKeys.Shift))
|
||||
{
|
||||
map.ProjectionCenter = map.ViewToLocation(e.GetPosition(map));
|
||||
}
|
||||
else if (Keyboard.Modifiers.HasFlag(ModifierKeys.Control) &&
|
||||
map.MapLayer is WmsImageLayer wmsLayer)
|
||||
{
|
||||
|
|
@ -83,7 +114,7 @@ namespace SampleApplication
|
|||
|
||||
if (start != null)
|
||||
{
|
||||
measurementLine.Locations = LocationCollection.OrthodromeLocations(start, location);
|
||||
measurementLine.Locations = LocationCollection.GeodesicLocations(start, location);
|
||||
mouseLocation.Text += GetDistanceText(location.GetDistance(start));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@
|
|||
<ProjectReference Include="..\..\MapUiTools\WPF\MapUiTools.WPF.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='net48'">
|
||||
<Reference Include="System.Net.Http" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="10.0.2" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
Loading…
Reference in a new issue