Overview of tile map services

Online tile services are popular and commonly used. Here is a good description of data model of online tile map service (TMS) provided for Bing Maps. To choose tile provider in MapWinGIS it's enough to set:

axMap1.TileProvider = tkTileProvider.OpenStreetMap;   // or any other default one

Each tile provider has its own license / terms of service. MapWinGIS helps you to find those by adding a link to such docs at the bottom right corner of the control. Please read them before using tile providers in your apps.

See detailed description of tile providers in API reference.

Free tile services

MapWinGIS provides access for tile services with data is in the public domain:
  • OpenStreetMap - terms or use;
  • MapQuest Aerial - terms of use;
  • other OpenStreetMap affiliated services (OpenCycleMap, OpenTransportMap);
Pay attention that even if the services are nominally "free" they still have certain terms of use.

Commercial tile services

These services usually provide APIs for developers with some form of control of the network traffic and certain limits for free unpaid use. In order to access the services developer should register the app and obtain API key.
1. Bing Maps - documentation - licensing options
MapWinGIS provides access for the following imagery sets:
  • road (tkTileProvider.BingMaps);
  • aerial(tkTileProvider.BingSatellite);
  • aerial with labels(tkTileProvider.BingHybrid).
// to access Bing Maps providers
new GlobalSettings() { BingApiKey = "your_key"};

Create a Bing maps key (choose Basic key for free unpaid use)
2. Here Maps - documentation - available plans
MapWinGIS provides access for the following schemes:
  • normal.day (tkTileProvider.HereMaps);
  • satellite.day (tkTileProvider.HereSatellite);
  • hybrid.day (tkTileProvider.HereHybrid);
  • terrain.day (tkTileProvider.HereTerrain).
// to access Here maps providers
new GlobalSettings().SetHereMapsApiKey("app_id", "app_code");

Create HERE maps application credentials
3. Google Maps.
Unfortunately Google doesn't provide any official REST API to access its maps. Therefore you must not use these providers in your commercial applications. See details here.

Version number for Google Maps providers isn't updated automatically, which after some time (usually several months) lead to missing tiles. TileProviders.Version property can be used to do it in the client code.

Adding custom / new tile services

Adding new services in most cases is easy if they comply with OpenStreetMap / Google Maps data model ( projection Mercator on sphere, hierarchy of zoom levels with each tile split into 4 pieces on each new level, etc.). It's possible to add your own custom providers with TileProviders.Add method.

// Here is a definition of custom provider for OpenStreetMap service:
providers.Add(providerId, "Custom TMS provider", "http://{switch:a,b,c}.tile.openstreetmap.org/{zoom}/{x}/{y}.png", tkTileProjection.SphericalMercator, 0, 18);

If potential provider is a commercial one and requires API key or can't be defined with this method, it should be added to MapWinGIS source. You can speed the process by adding topic in the Discussion section with access details (url scheme) and a link to license / terms of use information.

Last edited Jan 6, 2015 at 7:17 AM by sleschinski, version 11


isiking Mar 30, 2015 at 2:23 PM 
Hi. How can i create a custom Provider to ESRI ArcGIS Server?

In ArcObjects WPF it's as simple as this:
<esri:ArcGISTiledMapServiceLayer ID="World Topo Map" Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/>

It would be great, if someone would Show me some Sourcecode.