Back to Devexpress

InformationDataProviderBase.LayerItemsGenerating Event

wpf-devexpress-dot-xpf-dot-map-dot-informationdataproviderbase-340d18ee.md

latest10.6 KB
Original Source

InformationDataProviderBase.LayerItemsGenerating Event

Occurs when a data provider starts generating map items for a layer.

Namespace : DevExpress.Xpf.Map

Assembly : DevExpress.Xpf.Map.v25.2.dll

NuGet Package : DevExpress.Wpf.Map

Declaration

csharp
public event LayerItemsGeneratingEventHandler LayerItemsGenerating
vb
Public Event LayerItemsGenerating As LayerItemsGeneratingEventHandler

Event Data

The LayerItemsGenerating event's data class is LayerItemsGeneratingEventArgs. The following properties provide information specific to this event:

PropertyDescription
CancelledGets a value indicating whether an asynchronous operation has been canceled. Inherited from AsyncCompletedEventArgs.
ErrorGets a value indicating which error occurred during an asynchronous operation. Inherited from AsyncCompletedEventArgs.
ItemsReturns all the items generated for the layer.
UserStateGets the unique identifier for the asynchronous task. Inherited from AsyncCompletedEventArgs.

The event data class exposes the following methods:

MethodDescription
RaiseExceptionIfNecessary()Raises a user-supplied exception if an asynchronous operation failed. Inherited from AsyncCompletedEventArgs.

Example

This example demonstrates how to use the Microsoft Bing Route web service to calculate a route between multiple waypoints and how to customize the appearance of the resulting route path.

Important

On May 21, 2024, Microsoft announced that Bing Maps for Enterprise and its API will be discontinued. Azure Maps will be a single unified enterprise mapping platform available from Microsoft.

To obtain and display map data from Azure Maps, we implemented the following providers:

For information on how to migrate your app from Bing Maps to Azure Maps, see the following help topic: DevExpress Map Control for WPF: Migrate from Bing Maps to Azure Maps.

If you already have a Bing Maps for Enterprise license, you can keep using the current API. You must transition to the new API by June 30, 2025 (for free/basic licenses) or June 30, 2028 (for enterprise licenses). New licenses will no longer be available after June 30, 2025. Bing Maps will not work with our map controls without a license after that date.

To accomplish this, do the following:

  • Create an InformationLayer object and add it to the MapControl.Layers collection.

  • Create a BingRouteDataProvider object and assign it to the InformationLayer.DataProvider property. Specify the provider’s key.

  • To calculate a route, call the BingRouteDataProvider.CalculateRoute method and pass a list of waypoints as its argument.

  • To customize the resulting route path’s appearance, handle the InformationDataProviderBase.LayerItemsGenerating event and configure appearance of the items contained in the event arguments (the Itemsproperty). This example shows how to specify text displayed in generated pushpins and define colors used to draw the path between pushpins.

  • MainWindow.xaml

csharp
<dxm:InformationLayer EnableHighlighting="False">
    <dxm:InformationLayer.DataProvider>
        <dxm:BingRouteDataProvider x:Name="routeProvider" 
                                   BingKey="{Binding Source={StaticResource YourBingKey}}"
                                   LayerItemsGenerating="routeProvider_LayerItemsGenerating"/>
    </dxm:InformationLayer.DataProvider>
</dxm:InformationLayer>
csharp
public partial class MainWindow : Window {

    public MainWindow() {
        InitializeComponent();

        // Create three waypoints and add them to a route waypoints list. 
        List<RouteWaypoint> waypoints = new List<RouteWaypoint>();
        waypoints.Add(new RouteWaypoint("New York", new GeoPoint(41.145556, -73.995)));
        waypoints.Add(new RouteWaypoint("Oklahoma", new GeoPoint(36.131389, -95.937222)));
        waypoints.Add(new RouteWaypoint("Las Vegas", new GeoPoint(36.175, -115.136389)));

        routeProvider.CalculateRoute(waypoints);
    }

    private void routeProvider_LayerItemsGenerating(object sender, LayerItemsGeneratingEventArgs args) {
        char letter = 'A';
        foreach (MapItem item in args.Items) {
            MapPushpin pushpin = item as MapPushpin;
            if (pushpin != null)
                pushpin.Text = letter++.ToString();
            MapPolyline line = item as MapPolyline;
            if (line != null) {
                line.Fill = Brushes.Red;
                line.Stroke = Brushes.Red;
            }
        }

        map.ZoomToFit(args.Items);
    }
}
csharp
Public Sub New()
            InitializeComponent()

            ' Create three waypoints and add them to a route waypoints list. 
            Dim waypoints As New List(Of RouteWaypoint)()
            waypoints.Add(New RouteWaypoint("New York", New GeoPoint(41.145556, -73.995)))
            waypoints.Add(New RouteWaypoint("Oklahoma", New GeoPoint(36.131389, -95.937222)))
            waypoints.Add(New RouteWaypoint("Las Vegas", New GeoPoint(36.175, -115.136389)))

            routeProvider.CalculateRoute(waypoints)
        End Sub

        Private Sub routeProvider_LayerItemsGenerating(ByVal sender As Object, ByVal args As LayerItemsGeneratingEventArgs)
            Dim letter As Char = "A"c

            For Each item As MapItem In args.Items
                Dim pushpin As MapPushpin = TryCast(item, MapPushpin)
                If pushpin IsNot Nothing Then
                    pushpin.Text = letter.ToString()
                    letter = ChrW(AscW(letter) + 1)
                End If
                Dim line As MapPolyline = TryCast(item, MapPolyline)
                If line IsNot Nothing Then
                    line.Fill = System.Windows.Media.Brushes.Red
                    line.Stroke = System.Windows.Media.Brushes.Red
                End If
            Next item
            map.ZoomToFit(args.Items)
        End Sub

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the LayerItemsGenerating event.

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.

wpf-map-search-with-azure-map-search-service/CS/DXMapExample/MainWindow.xaml#L33

xml
SearchCompleted="OnSearchCompleted"
                            LayerItemsGenerating="OnLayerItemsGenerating" />
<!--endregion #SearchCompleted-->

wpf-map-search-with-azure-map-search-service/CS/DXMapExample/obj/Debug/net8.0-windows/MainWindow.g.cs#L141

csharp
#line 33 "..\..\..\MainWindow.xaml"
this.searchDataProvider.LayerItemsGenerating += new DevExpress.Xpf.Map.LayerItemsGeneratingEventHandler(this.OnLayerItemsGenerating);

wpf-map-search-with-azure-map-search-service/VB/DXMapExample/obj/Debug/net8.0-windows/MainWindow.g.vb#L138

vb
#ExternalSource("..\..\..\MainWindow.xaml",33)
AddHandler Me.searchDataProvider.LayerItemsGenerating, New DevExpress.Xpf.Map.LayerItemsGeneratingEventHandler(AddressOf Me.OnLayerItemsGenerating)

See Also

InformationDataProviderBase Class

InformationDataProviderBase Members

DevExpress.Xpf.Map Namespace