windowsforms-devexpress-dot-xtramap-dot-wmsdataprovider.md
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
[DefaultValue("")]
public string ServerUri { get; set; }
<DefaultValue("")>
Public Property ServerUri As String
| Type | Default | Description |
|---|---|---|
| String | String.Empty |
A String value.
|
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.
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.
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);
}
}
}
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