Back to Devexpress

How to: Customize a Web Request for a Map Web Service

wpf-15554-controls-and-libraries-map-control-examples-map-image-data-how-to-customize-a-web-request-for-a-map-web-service.md

latest4.6 KB
Original Source

How to: Customize a Web Request for a Map Web Service

  • Jun 19, 2025
  • 2 minutes to read

This example shows how you can implement a custom proxy to make a request for map tiles from the Bing Maps web service.

To customize a web request, handle the MapImageDataProviderBase.WebRequest event. Then, use the web request arguments to specify your custom map request settings (e.g., custom MapWebRequestEventArgs.Credentials, MapWebRequestEventArgs.Headers for a proxy, etc.) to the Bing Maps data provider.

xaml
<Window 
    x:Class="WebRequest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:dxm="http://schemas.devexpress.com/winfx/2008/xaml/map"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <dxm:MapControl Name="mapControl1" >
            <dxm:ImageTilesLayer x:Name="imageTilesLayer">
                <dxm:ImageTilesLayer.DataProvider>
                    <dxm:BingMapDataProvider BingKey="INSERT_YOUR_BING_KEY_HERE"   
                                             WebRequest="BingMapDataProvider_WebRequest"/>
                </dxm:ImageTilesLayer.DataProvider>
            </dxm:ImageTilesLayer>
            <dxm:VectorLayer>
                <dxm:MapDot Location="54.196353,37.611622" Size="10"/>
            </dxm:VectorLayer>
        </dxm:MapControl>
    </Grid>
</Window>
vb
Imports System
Imports System.Windows
Imports System.Net
Imports DevExpress.Xpf.Map
Imports System.Globalization
Namespace WebRequest

    Partial Public Class MainWindow
        Inherits Window

        Public Sub New()
            InitializeComponent()

        End Sub

        Private Sub BingMapDataProvider_WebRequest(ByVal sender As Object, ByVal e As MapWebRequestEventArgs)
            e.Proxy = proxy
        End Sub

        Private proxy As New MyProxy()

        Public Class MyProxy
            Implements IWebProxy

            Private credentials_Renamed As ICredentials

            Public Property Credentials() As ICredentials Implements IWebProxy.Credentials
                Get
                    Return credentials_Renamed
                End Get
                Set(ByVal value As ICredentials)
                    credentials_Renamed = value
                End Set
            End Property

            Public Function GetProxy(ByVal destination As Uri) As Uri Implements IWebProxy.GetProxy
                Return destination
            End Function

            Public Function IsBypassed(ByVal host As Uri) As Boolean Implements IWebProxy.IsBypassed
                Return True
            End Function
        End Class

    End Class
End Namespace
csharp
using System;
using System.Windows;
using System.Net;
using DevExpress.Xpf.Map;
using System.Globalization;
namespace WebRequest {

    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();

        }

        private void BingMapDataProvider_WebRequest(object sender, MapWebRequestEventArgs e) {
            e.Proxy = proxy; 
        }

        MyProxy proxy = new MyProxy();

        public class MyProxy : IWebProxy {
            ICredentials credentials;

            public ICredentials Credentials {
                get {
                    return credentials;
                }
                set {
                    credentials = value;
                }
            }

            public Uri GetProxy(Uri destination) {
                return destination;
            }

            public bool IsBypassed(Uri host) {
                return true;
            }
        }

    }
}

See Also

How to: Load Image Tiles from Bing Maps

How to: Load Image Tiles from OpenStreetMap

How to: Load Image Tiles from Another Source

How to: Cache Image Tiles Locally