Back to Devexpress

UriBasedVectorTileDataProvider Class

windowsforms-devexpress-dot-xtramap-db43ec7a.md

latest5.0 KB
Original Source

UriBasedVectorTileDataProvider Class

Provides map data from a set of PBF or MVT files.

Namespace : DevExpress.XtraMap

Assembly : DevExpress.XtraMap.v25.2.dll

NuGet Package : DevExpress.Win.Map

Declaration

csharp
public class UriBasedVectorTileDataProvider :
    VectorTileDataProviderBase
vb
Public Class UriBasedVectorTileDataProvider
    Inherits VectorTileDataProviderBase

Remarks

You can use UriBasedVectorTileDataProvider to draw a map based on a set of .PBF or .MVT files that store vector tiles in binary format.

  1. Create an image layer and add it to the MapControl.Layers collection.
  2. Create a UriBasedVectorTileDataProvider instance and assign it to the ImageLayer.DataProvider property.
  3. Specify the UriBasedVectorTileDataProvider.TileUriTemplate property.
csharp
ImageLayer layer = new ImageLayer();
UriBasedVectorTileDataProvider dataProvider = new UriBasedVectorTileDataProvider();            
dataProvider.TileUriTemplate = @"D:\PbfFiles\{x}-{y}-{level}.pbf";
layer.DataProvider = dataProvider;
mapControl1.Layers.Add(layer);
vb
Dim layer As ImageLayer = New ImageLayer()
Dim dataProvider As UriBasedVectorTileDataProvider = New UriBasedVectorTileDataProvider()
dataProvider.TileUriTemplate = "D:\PbfFiles\{x}-{y}-{level}.pbf"
layer.DataProvider = dataProvider
mapControl1.Layers.Add(layer)

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 System.Text.Json library to parse style files. Install the System.Text.Json package if your .NET Framework application does not reference this library. .NET projects do not require manual installation of the System.Text.Json package, as it is already included in the .NET environment. 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:

csharp
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;
}
vb
dataProvider.StyleFileUri = New Uri(GetRelativePath("style.json"), UriKind.Absolute)

Public Shared Function GetRelativePath(ByVal name As String) As String
    name = "Data\" & name
    Dim dir As DirectoryInfo = New DirectoryInfo(Application.StartupPath)
    While dir IsNot Nothing
        Dim filePath = Path.Combine(dir.FullName, name)
        If File.Exists(filePath) Then Return filePath
        dir = Directory.GetParent(dir.FullName)
    End While
    Return String.Empty
End Function

Inheritance

Object MapDisposableObject MapImageDataProviderBase MapTileDataProviderBase ImageTileDataProvider VectorTileDataProviderBase UriBasedVectorTileDataProvider MapboxDataProvider

See Also

UriBasedVectorTileDataProvider Members

Vector Tile Providers

DevExpress.XtraMap Namespace