Skip to main content

MapboxDataProvider Class

A data provider that obtains vector tiles from Mapbox Service.

Namespace: DevExpress.XtraMap

Assembly: DevExpress.XtraMap.v24.1.dll

NuGet Package: DevExpress.Win.Map

Declaration

public class MapboxDataProvider :
    UriBasedVectorTileDataProvider

Remarks

Mapbox Service provides vector tilesets. The Map Control receives tiles as PBF files.

image

Important

Before you use the Mapbox Service, read the Invoices and billing and Terms of service pages.

Follow the steps below to connect to the Mapbox Tile Service and load the Mapbox Streets tileset (mapbox.mapbox-streets-v8):

  1. Create an image layer and add it to the MapControl.Layers collection.
  2. Create a MapboxDataProvider instance and assign it to the ImageLayer.DataProvider property.
  3. Specify the MapboxDataProvider.AccessToken property. For more information on how to get the key, visit the access token page.
private void Form1_Load(object sender, EventArgs e) {
    ImageLayer layer = new ImageLayer();
    MapboxDataProvider dataProvider = new MapboxDataProvider();

    dataProvider.AccessToken = "Your_access_token_here.";

    layer.DataProvider = dataProvider;
    mapControl1.Layers.Add(layer);
}

Load a Specific Tileset

You can use the MapboxDataProvider.Tileset property to select a tileset:

dataProvider.Tileset = MapboxTileset.Terrain;

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 .NET Framework application does not reference this library. For .NET 6+ platforms, System.Text.Json is used. Set the DevExpress.Map.Native.VectorTileStyleParser.ProcessingLibrary property to NewtonsoftJson to use the Newtonsoft.Json library instead.. 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