Back to Devexpress

MapControl.MiniMap Property

windowsforms-devexpress-dot-xtramap-dot-mapcontrol-63db99f1.md

latest8.3 KB
Original Source

MapControl.MiniMap Property

Gets or sets a mini map of the map control.

Namespace : DevExpress.XtraMap

Assembly : DevExpress.XtraMap.v25.2.dll

NuGet Package : DevExpress.Win.Map

Declaration

csharp
[DefaultValue(null)]
public MiniMap MiniMap { get; set; }
vb
<DefaultValue(Nothing)>
Public Property MiniMap As MiniMap

Property Value

TypeDefaultDescription
MiniMapnull

A MiniMap object.

|

Remarks

The mini map looks as follows.

Example

Tip

The complete sample project is available on GitHub.

To add a mini map to a map, do the following.

  • Create a MiniMap object.

  • Specify the parameters of the mini map.

  • Assign it to the MapControl.MiniMap property.

  • C#

  • VB.NET

csharp
// In the Form's constructor.
object data = LoadData(@"..\..\Data\Ships.xml");

// Create a mini map and data for it.
MiniMap miniMap = new MiniMap();
miniMap.Alignment = MiniMapAlignment.BottomLeft;
miniMap.Layers.AddRange(new MiniMapLayerBase[] {
    new MiniMapImageTilesLayer() {
        DataProvider = new BingMapDataProvider() {
            BingKey = "YOUR_BING_MAPS_KEY_HERE"
        }
    },
    new MiniMapVectorItemsLayer() {
        Data = CreateMiniMapAdapter(data)
    }
});
map.MiniMap = miniMap;

// Creates an adapter for the map's vector layer.
private IMapDataAdapter CreateAdapter(object source) {
    ListSourceDataAdapter adapter = new ListSourceDataAdapter();

    adapter.DataSource = source;

    adapter.Mappings.Latitude = "Latitude";
    adapter.Mappings.Longitude = "Longitude";

    adapter.AttributeMappings.Add(new MapItemAttributeMapping() { Member = "Name", Name = "Name" });
    adapter.AttributeMappings.Add(new MapItemAttributeMapping() { Member = "Year", Name = "Year" });
    adapter.AttributeMappings.Add(new MapItemAttributeMapping() { Member = "Description", Name = "Description" });

    return adapter;
}

// Loads data from a XML file.
private List<ShipwreckData> LoadData(string path) {
    return XDocument.Load(path).Element("Ships").Elements("Ship")
        .Select(e => new ShipwreckData(
            year: Convert.ToInt32(e.Element("Year").Value, CultureInfo.InvariantCulture),
            name: e.Element("Name").Value,
            description: e.Element("Description").Value,
            latitude: Convert.ToDouble(e.Element("Latitude").Value, CultureInfo.InvariantCulture),
            longitude: Convert.ToDouble(e.Element("Longitude").Value, CultureInfo.InvariantCulture)
        ))
        .ToList();
}

public class ShipwreckData {
    public int Year { get; }
    public string Name { get; }
    public string Description { get; }
    public double Latitude { get; }
    public double Longitude { get; }

    public ShipwreckData(int year, string name, string description, double latitude, double longitude) {
        this.Year = year;
        this.Name = name;
        this.Description = description;
        this.Latitude = latitude;
        this.Longitude = longitude;
    }
}
vb
' In the Form's constructor.
Dim data As Object = LoadData("..\..\Data\Ships.xml")

' Create a mini map and data for it.
Dim miniMap As New MiniMap()
miniMap.Alignment = MiniMapAlignment.BottomLeft
miniMap.Layers.AddRange(New MiniMapLayerBase() {
    New MiniMapImageTilesLayer() With {
        .DataProvider = New BingMapDataProvider() With {.BingKey = "YOUR_BING_MAPS_KEY_HERE"}
    },
    New MiniMapVectorItemsLayer() With {.Data = CreateMiniMapAdapter(data)}
})
map.MiniMap = miniMap

' Creates an adapter for the mini map's vector layer.
Private Function CreateMiniMapAdapter(ByVal source As Object) As IMapDataAdapter
    Dim adapter As New ListSourceDataAdapter()

    adapter.DataSource = source

    adapter.Mappings.Latitude = "Latitude"
    adapter.Mappings.Longitude = "Longitude"

    adapter.PropertyMappings.Add(New MapItemFillMapping() With {.DefaultValue = Color.Red})
    adapter.PropertyMappings.Add(New MapItemStrokeMapping() With {.DefaultValue = Color.White})
    adapter.PropertyMappings.Add(New MapItemStrokeWidthMapping() With {.DefaultValue = 2})
    adapter.PropertyMappings.Add(New MapDotSizeMapping() With {.DefaultValue = 8})

    adapter.DefaultMapItemType = MapItemType.Dot

    Return adapter
End Function

' Loads data from a XML file.
Private Function LoadData(ByVal path As String) As List(Of ShipwreckData)
    Return XDocument.Load(path).Element("Ships").Elements("Ship") _
        .Select(Function(e) New ShipwreckData(
            year:=Convert.ToInt32(e.Element("Year").Value, CultureInfo.InvariantCulture),
            name:=e.Element("Name").Value,
            description:=e.Element("Description").Value,
            latitude:=Convert.ToDouble(e.Element("Latitude").Value, CultureInfo.InvariantCulture),
            longitude:=Convert.ToDouble(e.Element("Longitude").Value, CultureInfo.InvariantCulture)
        )) _
        .ToList()
End Function

Public Class ShipwreckData
    Public ReadOnly Property Year() As Integer
    Public ReadOnly Property Name() As String
    Public ReadOnly Property Description() As String
    Public ReadOnly Property Latitude() As Double
    Public ReadOnly Property Longitude() As Double

    Public Sub New(ByVal year As Integer, ByVal name As String, ByVal description As String, ByVal latitude As Double, ByVal longitude As Double)
        Me.Year = year
        Me.Name = name
        Me.Description = description
        Me.Latitude = latitude
        Me.Longitude = longitude
    End Sub
End Class

The following code snippets (auto-collected from DevExpress Examples) contain references to the MiniMap property.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

winforms-map-customize-mini-map-layers/CS/MiniMapLayers/Form1.cs#L41

csharp
#region #AssignMiniMap
mapControl.MiniMap = CreateMiniMap(data);
#endregion #AssignMiniMap

winforms-map-bind-to-xml-data/CS/WinForms_MapControl_ListAdapter/Form1.cs#L43

csharp
});
map.MiniMap = miniMap;
#endregion #MiniMap

winforms-map-customize-mini-map-layers/VB/MiniMapLayers/Form1.vb#L41

vb
'#Region "#AssignMiniMap"
            Me.mapControl.MiniMap = Me.CreateMiniMap(data)
'#End Region ' #AssignMiniMap

winforms-map-bind-to-xml-data/VB/WinForms_MapControl_ListAdapter/Form1.vb#L31

vb
miniMap.Layers.AddRange(New MiniMapLayerBase() {New MiniMapImageTilesLayer() With {.DataProvider = New AzureMapDataProvider() With {.AzureKey = "YOUR_azure_MAPS_KEY_HERE"}}, New MiniMapVectorItemsLayer() With {.Data = CreateMiniMapAdapter(data)}})
            map.MiniMap = miniMap
#End Region ' #MiniMap

See Also

MapControl Class

MapControl Members

DevExpress.XtraMap Namespace