Click or drag to resize

WmsSublayer Class

Describes a sublayer of WmsLayer.
Inheritance Hierarchy
SystemObject
  Esri.ArcGISRuntime.MappingWmsSublayer

Namespace:  Esri.ArcGISRuntime.Mapping
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.7.0.0
Syntax
C#
public sealed class WmsSublayer : ILayerContent

The WmsSublayer type exposes the following members.

Properties
  NameDescription
Public propertyCanChangeVisibility
Gets a value indicating whether the sublayer's visibility can be changed.
Public propertyCode exampleCurrentStyle
Gets or sets the name of this sublayer's current style.
Public propertyIsVisible
Gets or sets a value indicating whether the sublayer content is visible.
Public propertyName
Gets the title of this WMS sublayer.
Public propertyShowInLegend
Gets or sets a value indicating whether the sublayer participates in the legend.
Public propertySublayerContents
Gets a read-only collection of ILayerContent for this sublayer.
Public propertyCode exampleSublayerInfo
Gets a WmsLayerInfo object with metadata about this sublayer.
Top
Methods
  NameDescription
Public methodGetLegendInfosAsync
Asynchronously retrieves a read-only list of LegendInfo objects.
Public methodIsVisibleAtScale
Retrieves the sublayer's visibility at the specified scale.
Top
Remarks
WmsSublayer provides data necessary for building a Table of Contents. Only named WMS sublayers have an associated WmsSublayer. This list can be obtained from Sublayers property of a loaded layer.
Examples

Android

Example Name: StyleWmsLayer

Discover available styles and apply them to WMS sublayers.

Code example screen shot.

C#
// Copyright 2018 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Android.App;
using Android.OS;
using Android.Widget;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.UI.Controls;
using System;
using System.Collections.Generic;
using Android.Views;
using Esri.ArcGISRuntime.Geometry;

namespace ArcGISRuntime.Samples.StyleWmsLayer
{
    [Activity (ConfigurationChanges=Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        "Style WMS layers",
        "Layers",
        "This sample demonstrates how to select from the available styles on WMS sublayers. ",
        "Click to select from one of the two pre-set styles.")]
    public class StyleWmsLayer : Activity
    {
        // Hold the URL to the service, which has satellite imagery covering the state of Minnesota.
        private Uri _wmsUrl = new Uri("https://imageserver.gisdata.mn.gov/cgi-bin/mncomp?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities");

        // Hold a list of uniquely-identifying WMS layer names to display.
        private List<String> _wmsLayerNames = new List<string> { "mncomp" };

        // Hold a reference to the layer to enable re-styling.
        private WmsLayer _mnWmsLayer;

        // Hold references to the UI controls.
        private MapView _myMapView;
        private Button _firstStyleButton;
        private Button _secondStyleButton;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            Title = "Style WMS layers";

            // Create the UI, setup the control references.
            CreateLayout();

            // Initialize the map.
            InitializeAsync();
        }

        private void CreateLayout()
        {
            // Create a new vertical layout for the app.
            LinearLayout layout = new LinearLayout(this) { Orientation = Orientation.Vertical };

            // Create the UI components.
            TextView helpLabel = new TextView(this)
            {
                Text = "Choose a style",
                TextAlignment = TextAlignment.Center
            };
            _firstStyleButton = new Button(this)
            {
                Text = "Default",
                Enabled = false
            };
            _secondStyleButton = new Button(this)
            {
                Text = "Contrast stretch",
                Enabled = false
            };

            // Subscribe to events.
            _firstStyleButton.Click += FirstStyleButton_Clicked;
            _secondStyleButton.Click += SecondStyleButton_Clicked;

            // Add the views to the layout.
            layout.AddView(helpLabel);
            layout.AddView(_firstStyleButton);
            layout.AddView(_secondStyleButton);
            _myMapView = new MapView(this);
            layout.AddView(_myMapView);

            // Show the layout in the app.
            SetContentView(layout);
        }

        private async void InitializeAsync()
        {
            try
            {
                // Create a map with spatial reference appropriate for the service.
                Map myMap = new Map(SpatialReference.Create(26915)) {MinScale = 7000000.0};

                // Create a new WMS layer displaying the specified layers from the service.
                // The default styles are chosen by default.
                _mnWmsLayer = new WmsLayer(_wmsUrl, _wmsLayerNames);

                // Wait for the layer to load.
                await _mnWmsLayer.LoadAsync();

                // Center the map on the layer's contents.
                myMap.InitialViewpoint = new Viewpoint(_mnWmsLayer.FullExtent);

                // Add the layer to the map.
                myMap.OperationalLayers.Add(_mnWmsLayer);

                // Add the map to the view.
                _myMapView.Map = myMap;

                // Enable the buttons.
                _firstStyleButton.Enabled = true;
                _secondStyleButton.Enabled = true;
            }
            catch (Exception ex)
            {
                new AlertDialog.Builder(this).SetMessage(ex.ToString()).SetTitle("Error").Show();
            }
        }

        private void FirstStyleButton_Clicked(object sender, EventArgs e)
        {
            // Get the available styles from the first sublayer.
            IReadOnlyList<string> styles = _mnWmsLayer.Sublayers[0].SublayerInfo.Styles;

            // Apply the first style to the first sublayer.
            _mnWmsLayer.Sublayers[0].CurrentStyle = styles[0];
        }

        private void SecondStyleButton_Clicked(object sender, EventArgs e)
        {
            // Get the available styles from the first sublayer.
            IReadOnlyList<string> styles = _mnWmsLayer.Sublayers[0].SublayerInfo.Styles;

            // Apply the second style to the first sublayer.
            _mnWmsLayer.Sublayers[0].CurrentStyle = styles[1];
        }
    }
}
Examples

Xamarin Forms Android

Example Name: StyleWmsLayer

Discover available styles and apply them to WMS sublayers.

Code example screen shot.

C#
// Copyright 2018 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Esri.ArcGISRuntime.Mapping;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Esri.ArcGISRuntime.Geometry;
using Xamarin.Forms;

namespace ArcGISRuntime.Samples.StyleWmsLayer
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        "Style WMS layers",
        "Layers",
        "This sample demonstrates how to select from the available styles on WMS sublayers. ",
        "Click to select from one of the two pre-set styles.")]
    public partial class StyleWmsLayer
    {
        // Hold the URL to the service, which has satellite imagery covering the state of Minnesota. 
        private Uri _wmsUrl = new Uri("https://imageserver.gisdata.mn.gov/cgi-bin/mncomp?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities");

        // Hold a list of uniquely-identifying WMS layer names to display.
        private List<String> _wmsLayerNames = new List<string> { "mncomp" };

        // Hold a reference to the layer to enable re-styling.
        private WmsLayer _mnWmsLayer;

        public StyleWmsLayer()
        {
            InitializeComponent();

            // Execute initialization.
            InitializeAsync();
        }

        private async void InitializeAsync()
        {
            try
            {
                // Create a map with spatial reference appropriate for the service.
                Map myMap = new Map(SpatialReference.Create(26915)) {MinScale = 7000000.0};

                // Create a new WMS layer displaying the specified layers from the service.
                // The default styles are chosen by default.
                _mnWmsLayer = new WmsLayer(_wmsUrl, _wmsLayerNames);

                // Wait for the layer to load.
                await _mnWmsLayer.LoadAsync();

                // Center the map on the layer's contents.
                myMap.InitialViewpoint = new Viewpoint(_mnWmsLayer.FullExtent);

                // Add the layer to the map.
                myMap.OperationalLayers.Add(_mnWmsLayer);

                // Add the map to the view.
                MyMapView.Map = myMap;

                // Enable the buttons.
                FirstStyleButton.IsEnabled = true;
                SecondStyleButton.IsEnabled = true;
            }
            catch (Exception ex)
            {
                await Application.Current.MainPage.DisplayAlert("Error", ex.ToString(), "OK");
            }
        }

        private void FirstStyleButton_Clicked(object sender, EventArgs e)
        {
            // Get the available styles from the first sublayer.
            IReadOnlyList<string> styles = _mnWmsLayer.Sublayers[0].SublayerInfo.Styles;

            // Apply the first style to the first sublayer.
            _mnWmsLayer.Sublayers[0].CurrentStyle = styles[0];
        }

        private void SecondStyleButton_Clicked(object sender, EventArgs e)
        {
            // Get the available styles from the first sublayer.
            IReadOnlyList<string> styles = _mnWmsLayer.Sublayers[0].SublayerInfo.Styles;

            // Apply the second style to the first sublayer.
            _mnWmsLayer.Sublayers[0].CurrentStyle = styles[1];
        }
    }
}
XAML
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:esriUI="clr-namespace:Esri.ArcGISRuntime.Xamarin.Forms;assembly=Esri.ArcGISRuntime.Xamarin.Forms"
             x:Class="ArcGISRuntime.Samples.StyleWmsLayer.StyleWmsLayer">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Label
                Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
                Text="Choose a style"
                HorizontalTextAlignment="Center" />
        <Button x:Name="FirstStyleButton"
                Grid.Row="1" Grid.Column="0"
                Text="Default"
                Clicked="FirstStyleButton_Clicked" />
        <Button x:Name="SecondStyleButton"
                Grid.Row="1" Grid.Column="1"
                Text="Contrast stretch"
                Clicked="SecondStyleButton_Clicked" />
        <esriUI:MapView x:Name="MyMapView"
                        Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" />
    </Grid>
</ContentPage>
See Also
Additional Examples
Hyperlink to ExampleDescription
StyleWmsLayerDiscover available styles and apply them to WMS sublayers.