BruTile is a .NET PCL library to access tile services like those of OpenStreetMap, MapBox or GeodanMaps. It support protocols like WMTS, TMS and ArcGIS Tile Server
C# Smalltalk Batchfile
Latest commit 7b95107 Dec 22, 2016 @pauldendulk pauldendulk committed on GitHub Merge pull request #56 from bertt/remove_empty_project
Remove empty project

Stories in Ready NuGet Status TeamCity CodeBetter


BruTile is a C# open source library to access tile services like OpenStreetMap and Bing. BruTile has few dependencies, is platform independent and has a limited scope. It is intended for reuse by other more sophisticated libraries

Get it from NuGet

PM> Install-Package BruTile

Getting Started

Take a look here on the wiki

Projects that use BruTile


For a demo download the source code and run BruTile.Demo in the Samples folder

Portable Class Library (PCL)

BruTile is a PCL with Profile111 which targets:

  • .Net Framework 4.5 and higher
  • ASP.NET Core 5.0
  • Windows 8
  • Windows Phone 8.1
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.iOS (Classic)

For downward compatibility we also compile for:

  • .Net Framework 4.0
  • .Net Framework 3.5

Supported tile service protocols:

  • TMS
  • OSM (TMS with inverted y-axis)
  • WMS-C
  • WMS (tiled requests to a regular WMS - like WMS-C)
  • WMTS
  • ArcGIS Tile Server

Known tile sources:

You can easily create an ITileSource for a number of specific tile servers with statements like:

var tileSource1 = KnownTileSources.Create(KnownTileSource.OpenStreetMap)
var tileSource2 = KnownTileSources.Create(KnownTileSource.MapQuestAerial)
var tileSource3 = KnownTileSources.Create(KnownTileSource.BingHybrid)
var tileSource4 = KnownTileSources.Create(KnownTileSource.StamenTonerLite)
var tileSource5 = KnownTileSources.Create(KnownTileSource.EsriWorldShadedRelief)


Here are our future plans:

  • Update automatic TileSchema generation to bring WMTS, WMS, TMS and WMSC in line.
  • Rename all classes to get them in line with WMTS types.
  • Better samples
  • Better documentation
  • Release v1


Note, this library is work in progress. It is in BETA.

  • At the moment there is no documentation.
  • We will introduce breaking changed frequently. We change the API whenever we feel this is an improvement.
  • We adopt new technologies relatively fast, dropping support for older frameworks.
  • Although I do have a general plan of where to go with this library I do not have the resources to go towards that goal in a systematic way. I add functionality depending on what is needed in the projects I work on.