Skip to main content

MbTilesDataProvider Class

A data provider that loads vector tiles from a MbTiles database.

Namespace: DevExpress.XtraMap

Assembly: DevExpress.XtraMap.v23.2.dll

NuGet Package: DevExpress.Win.Map


public class MbTilesDataProvider :


A set of tiles can be packaged in MbTiles files (wrapped SQLite databases) stored locally or on a server. MbTiles can also contain raster tiles.

Follow the steps below to load data from a MbTiles file:

  1. Install the System.Data.SQLite.Core package if your application does not reference this library.
  2. Create an image layer and add it to the MapControl.Layers collection.
  3. Create an MbTilesDataProvider instance and assign it to the ImageLayer.DataProvider property.
  4. Use the MbTilesDataProvider.FileUri property to specify a path to an MbTiles file.
private void Form1_Load(object sender, EventArgs e) {
    ImageLayer layer = new ImageLayer();
    MbTilesDataProvider dataProvider = new MbTilesDataProvider();
    dataProvider.FileUri = new Uri(@"D:\countries.mbtiles", UriKind.Absolute);
    layer.DataProvider = dataProvider;

Apply a Custom Style

If a default vector tile style does not meet your requirements, you can apply a custom style. Use the VectorTileDataProviderBase.StyleFileUri property to define a path to a style file. The MapControl uses the Newtonsoft.Json library to parse style files. Install the Newtonsoft.Json package if your application does not reference this library. See Vector Tile Providers: Vector Tile Styles for more information about styles.

The following code loads a style file from the project’s Data directory:

dataProvider.StyleFileUri = new Uri(GetRelativePath("style.json"), UriKind.Absolute);

public static string GetRelativePath(string name) {
    name = "Data\\" + name;
    DirectoryInfo dir = new DirectoryInfo(Application.StartupPath);
    while (dir != null) {
        string filePath = Path.Combine(dir.FullName, name);
        if (File.Exists(filePath))
            return filePath;
        dir = Directory.GetParent(dir.FullName);
    return string.Empty;
See Also