Back to Devexpress

WmsDataProvider.ServerUri Property

windowsforms-devexpress-dot-xtramap-dot-wmsdataprovider.md

latest6.7 KB
Original Source

WmsDataProvider.ServerUri Property

Gets or sets the server URI, which supports a Web Map Service.

Namespace : DevExpress.XtraMap

Assembly : DevExpress.XtraMap.v25.2.dll

NuGet Package : DevExpress.Win.Map

Declaration

csharp
[DefaultValue("")]
public string ServerUri { get; set; }
vb
<DefaultValue("")>
Public Property ServerUri As String

Property Value

TypeDefaultDescription
StringString.Empty

A String value.

|

Remarks

The Map control takes into account the base URI in the ServerUri string, therefore the values after the ? sign in the query string are not considered. Use the WmsDataProvider.CustomParameters collection to pass additional parameters with the request to the server.

Note that the Map control automatically specifies and passes the service and version parameter values.

Example

This example demonstrates how to obtain a collection of layers supported by the Web Map Service.

To do this, use the WmsDataProvider.ResponseCapabilities event arguments to obtain the CapabilitiesRespondedEventArgs.Layers collection.

csharp
using DevExpress.XtraMap;
using DevExpress.XtraTreeList;
using System;
using System.Linq;
using System.Windows.Forms;

namespace WmsDataProviderExample {
    public partial class Form1 : Form {
        ImageLayer WmsLayer { get { return mapControl.Layers["WmsLayer"] as ImageLayer; } }
        WmsDataProvider Provider { get { return WmsLayer.DataProvider as WmsDataProvider; } }

        public Form1() {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e) {
            // Specify a server URI.
            Provider.ServerUri = "http://INSERT_YOUR_SERVER_URI";
            // Handle the ResponseCapabilities event.
            Provider.ResponseCapabilities += OnResponseCapabalities;
        }

        void OnResponseCapabalities(object sender, CapabilitiesRespondedEventArgs e) {
            tlLayers.DataSource = e.Layers;
        }

        private void OnGetCellValue(object sender, VirtualTreeGetCellValueInfo e) {
            WmsLayer layer = e.Node as WmsLayer;
            if (layer == null) return;

            if (e.Column.FieldName == "LayerName") {
                e.CellData = layer.Title;
            }
        }

        private void OnGetChildNodes(object sender, VirtualTreeGetChildNodesInfo e) {
            WmsLayerCollection layers = e.Node as WmsLayerCollection;
            if (layers != null) {
                e.Children = layers.ToList();
            }
            WmsLayer layer = e.Node as WmsLayer;
            if (layer != null) {
                e.Children = layer.Children.ToList();
            }
        }

        private void OnFocusedNodeChanged(object sender, FocusedNodeChangedEventArgs e) {
            WmsLayer layer = tlLayers.GetDataRecordByNode(e.Node) as WmsLayer;
            if (layer == null) return;
            Provider.ActiveLayerName = layer.Name;
            mapControl.ZoomToRegion(layer.LeftTop, layer.RightBottom, 0.15);
        }
    }
}
vb
Imports DevExpress.XtraMap
Imports DevExpress.XtraTreeList
Imports System
Imports System.Linq
Imports System.Windows.Forms

Namespace WmsDataProviderExample
    Partial Public Class Form1
        Inherits Form

        Private ReadOnly Property WmsLayer() As ImageLayer
            Get
                Return TryCast(mapControl.Layers("WmsLayer"), ImageLayer)
            End Get
        End Property
        Private ReadOnly Property Provider() As WmsDataProvider
            Get
                Return TryCast(WmsLayer.DataProvider, WmsDataProvider)
            End Get
        End Property

        Public Sub New()
            InitializeComponent()
        End Sub
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
            ' Specify a server URI.
            Provider.ServerUri = "http://INSERT_YOUR_SERVER_URI"
            ' Handle the ResponseCapabilities event.
            AddHandler Provider.ResponseCapabilities, AddressOf OnResponseCapabalities
        End Sub

        Private Sub OnResponseCapabalities(ByVal sender As Object, ByVal e As CapabilitiesRespondedEventArgs)
            tlLayers.DataSource = e.Layers
        End Sub

        Private Sub OnGetCellValue(ByVal sender As Object, ByVal e As VirtualTreeGetCellValueInfo) Handles tlLayers.VirtualTreeGetCellValue
            Dim layer As WmsLayer = TryCast(e.Node, WmsLayer)
            If layer Is Nothing Then
                Return
            End If

            If e.Column.FieldName = "LayerName" Then
                e.CellData = layer.Title
            End If
        End Sub

        Private Sub OnGetChildNodes(ByVal sender As Object, ByVal e As VirtualTreeGetChildNodesInfo) Handles tlLayers.VirtualTreeGetChildNodes
            Dim layers As WmsLayerCollection = TryCast(e.Node, WmsLayerCollection)
            If layers IsNot Nothing Then
                e.Children = layers.ToList()
            End If
            Dim layer As WmsLayer = TryCast(e.Node, WmsLayer)
            If layer IsNot Nothing Then
                e.Children = layer.Children.ToList()
            End If
        End Sub

        Private Sub OnFocusedNodeChanged(ByVal sender As Object, ByVal e As FocusedNodeChangedEventArgs) Handles tlLayers.FocusedNodeChanged
            Dim layer As WmsLayer = TryCast(tlLayers.GetDataRecordByNode(e.Node), WmsLayer)
            If layer Is Nothing Then
                Return
            End If
            Provider.ActiveLayerName = layer.Name
            mapControl.ZoomToRegion(layer.LeftTop, layer.RightBottom, 0.15)
        End Sub
    End Class
End Namespace

See Also

WmsDataProvider Class

WmsDataProvider Members

DevExpress.XtraMap Namespace