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
Take a look here on the wiki
Projects that use BruTile
- ArcBruTile a plugin for ArcGIS
- SharpMap a GIS library
- Mapsui a slippy map that runs in Silverlight
- DotSpatial a GIS library that is used in HydroDesktop
- PDOK extensie voor ArcGIS
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.iOS (Classic)
For downward compatibility we also compile for:
- .Net Framework 4.0
- .Net Framework 3.5
Supported tile service protocols:
- OSM (TMS with inverted y-axis)
- WMS (tiled requests to a regular WMS - like WMS-C)
- 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.