View in MAUI UWP WPF WinUI View on GitHub
import InlineCode from "@esri-dx/starship-doc-components/components/InlineCode.astro";

Connect to a WMS service and show the available layers and sublayers.

Image of WMS service catalog

Use case

WMS services often contain many layers and sublayers. Presenting the layers and sublayers in a UI allows you to explore what is available in the service and add individual layers to a map.

How to use the sample

  1. Open the sample. A hierarchical list of layers and sublayers will appear.
  2. Select a layer to enable it for display. If the layer has any children, the children will also be selected.

How it works

  1. A
    is created and loaded.
  2. has a
    property, which is a
    .
    has a
    object for each layer (excluding sublayers) in the
    collection.
  3. A method is called to recursively discover sublayers for each layer. Layers are wrapped in a view model and added to a list.
    • The view model has a
      method which recursively selects or deselects itself and sublayers.
    • The view model tracks the children and parent of each layer.
  4. Once the layer selection has been updated, another method is called to create a new
    from a list of selected
    .

Relevant API

  • WmsLayer(List)
  • WmsLayerInfo
  • WmsService
  • WmsServiceInfo

About the data

This sample shows Weather Radar Base Reflectivity Mosaics produced by the US NOAA National Weather Service. The service provides weather radar data from the NWS & OAR Multi-Radar/Multi-Sensor (MRMS) System.

Tags

catalog, OGC, web map service, WMS

Sample Code

WmsServiceCatalog.xaml WmsServiceCatalog.xaml WmsServiceCatalog.xaml.cs
<UserControl x:Class="ArcGIS.WinUI.Samples.WmsServiceCatalog.WmsServiceCatalog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:esriUI="using:Esri.ArcGISRuntime.UI.Controls">
<Grid>
<esriUI:MapView x:Name="MyMapView" />
<Border Style="{StaticResource BorderStyle}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0"
FontWeight="Bold"
Text="Select a WMS layer from the list for display:" />
<ScrollViewer Grid.Row="1"
HorizontalScrollBarVisibility="Visible"
HorizontalScrollMode="Enabled">
<ListBox x:Name="MyDisplayList"
SelectionChanged="ListSelectionChanged"
SelectionMode="Single" />
</ScrollViewer>
</Grid>
</Border>
</Grid>
</UserControl>