This project has moved. For the latest updates, please go here.

Proper Tile Server

Aug 17, 2016 at 5:00 PM
Does XamlMapControl currently agree with this,
http://wiki.openstreetmap.org/wiki/Tile_usage_policy
What additional work should developers do to satisfy the policy? Major concerns are:
  • Distributing code that uses openstreetmap.org tile servers. i.e. TileLayer TileSource.
  • Caching for 7 days. Can developers see this and verify it?
  • Valid User-Agent identifying application
There is probably no list of other free OpenStreetMap tile servers, so there is an obstacle when trying to publicize code that people can use properly. Is there a realistic fast way for non-experts to buy their own access to a tile server? In some cases, an organization could create its own tile server, a big undertaking.

Optimistically, there are answers to these questions, and XamlMapControl is great.
Coordinator
Aug 17, 2016 at 7:42 PM
Edited Aug 17, 2016 at 9:29 PM
To make your application conform to their usage policy, you can set
  • a TileLayer's MaxParallelDownloads property to 2 (the default value is 4)
  • use one of the provided TileCache implementations. TileImageLoader uses the Cache-Control: max-age HTTP header and passes the expiration time to the TileCache implementation
  • set the HttpUserAgent property of the TileImageLoader
There are several commercial and free providers of OpenStreetMap-based map tile data: https://switch2osm.org/providers/
Aug 19, 2016 at 3:56 PM
Edited Aug 19, 2016 at 4:02 PM
They also ask for an attribution notice. It is described in the hyperlink in one of your TileLayer Descriptions (in Markdown format). Below are lines where I think Description is referenced. I don't see it when running XamlMapControl and I don't see code that would make it appear. Solution: should I develop my own notice? Thanks.

cd MapControl
grep -Hinw description *.cs *.xaml
TileLayer.cs:39: Description = "© OpenStreetMap Contributors",
TileLayer.cs:54: "Description", typeof(string), typeof(TileLayer), new PropertyMetadata(null));
TileLayer.cs:134: /// Description of the TileLayer. Used to display copyright information on top of the map.
TileLayer.cs:136: public string Description
Coordinator
Aug 19, 2016 at 6:22 PM
Edited Aug 19, 2016 at 6:23 PM
See how the TileLayer.Description property is bound to a TextBlock in the WPF sample application:
<TextBlock map:HyperlinkText.InlinesSource=
    "{Binding TileLayer.Description, ElementName=map}"/>