Click or drag to resize

FeatureCollection Class

A container for collection of FeatureCollectionTables.
Inheritance Hierarchy
SystemObject
  Esri.ArcGISRuntime.DataFeatureCollection

Namespace:  Esri.ArcGISRuntime.Data
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.7.0.0
Syntax
C#
public class FeatureCollection : ILoadable

The FeatureCollection type exposes the following members.

Constructors
Properties
  NameDescription
Public propertyItem
Gets the ArcGIS Item
Public propertyLoadError
Gets the Exception associated with the last load error.
Public propertyLoadStatus
Gets the load status.
Public propertyCode exampleTables
Gets the tables in the feature collection.
Top
Methods
  NameDescription
Public methodCancelLoad
Cancel loading metadata for the object.
Public methodStatic memberFromJson
Serializes this object to a JSON string.
Public methodLoadAsync
Load the metadata for the object asynchronously.
Public methodRetryLoadAsync
Load or retry loading metadata for the object asynchronously.
Public methodSaveAsAsync(ArcGISPortal, PortalFolder, String, String, IEnumerableString, RuntimeImage)
Save the FeatureCollection to a new PortalItem.
Public methodSaveAsAsync(ArcGISPortal, PortalFolder, String, String, IEnumerableString, Uri)
Save the FeatureCollection to a new PortalItem.
Public methodSaveAsAsync(ArcGISPortal, PortalFolder, String, String, IEnumerableString, RuntimeImage, CancellationToken)
Save the FeatureCollection to a new PortalItem.
Public methodSaveAsAsync(ArcGISPortal, PortalFolder, String, String, IEnumerableString, Uri, CancellationToken)
Save the FeatureCollection to a new PortalItem.
Public methodSaveAsync
Save any changes that have been made to the FeatureCollection to the associated PortalItem.
Public methodSaveAsync(CancellationToken)
Save any changes that have been made to the FeatureCollection to the associated PortalItem.
Public methodToJson
Serializes this object to a JSON string.
Top
Events
  NameDescription
Public eventLoaded
Event that is raised when the object is done loading.
Public eventLoadStatusChanged
Event that is raised when the LoadStatus property changes.
Top
Examples

Android

Example Name: FeatureCollectionLayerFromPortal

This sample demonstrates opening a feature collection saved as a portal item.

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.Data;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.Portal;
using Esri.ArcGISRuntime.UI.Controls;
using System;

namespace ArcGISRuntime.Samples.FeatureCollectionLayerFromPortal
{
    [Activity (ConfigurationChanges=Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        "Create a feature collection layer from a portal item",
        "Layers",
        "This sample demonstrates opening a feature collection saved as a portal item.",
        "")]
    public class FeatureCollectionLayerFromPortal : Activity
    {
        // Hold a reference to the map view.
        private MapView _myMapView;

        // Store a text box control with a portal item Id.
        private EditText _portalItemIdEditText;

        // Default portal item Id to load features from.
        private const string FeatureCollectionItemId = "32798dfad17942858d5eef82ee802f0b";

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

            Title = "Create a feature collection layer from a portal item";

            // Create the UI.
            CreateLayout();

            // Initialize the app.
            Initialize();
        }

        private void Initialize()
        {
            // Add a default value for the portal item Id.
            _portalItemIdEditText.Text = FeatureCollectionItemId;

            // Create a new map with the oceans basemap and add it to the map view.
            _myMapView.Map = new Map(Basemap.CreateOceans());
        }

        private async void OpenFeaturesFromArcGISOnline(string itemId)
        {
            try
            {
                // Open a portal item containing a feature collection.
                ArcGISPortal portal = await ArcGISPortal.CreateAsync();
                PortalItem collectionItem = await PortalItem.CreateAsync(portal, itemId);

                // Verify that the item is a feature collection.
                if (collectionItem.Type == PortalItemType.FeatureCollection)
                {
                    // Create a new FeatureCollection from the item.
                    FeatureCollection featureCollection = new FeatureCollection(collectionItem);

                    // Create a layer to display the collection and add it to the map as an operational layer.
                    FeatureCollectionLayer featureCollectionLayer = new FeatureCollectionLayer(featureCollection)
                    {
                        Name = collectionItem.Title
                    };

                    _myMapView.Map.OperationalLayers.Add(featureCollectionLayer);
                }
                else
                {
                    AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
                    alertBuilder.SetTitle("Feature Collection");
                    alertBuilder.SetMessage("Portal item with ID '" + itemId + "' is not a feature collection.");
                    alertBuilder.Show();
                }
            }
            catch (Exception ex)
            {
                AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
                alertBuilder.SetTitle("Error");
                alertBuilder.SetMessage("Unable to open item with ID '" + itemId + "': " + ex.Message);
                alertBuilder.Show();
            }
        }

        private void OpenPortalFeatureCollectionClick(object sender, EventArgs e)
        {
            // Get the portal item Id from the user.
            string collectionItemId = _portalItemIdEditText.Text.Trim();

            // Make sure an Id was entered.
            if (String.IsNullOrEmpty(collectionItemId))
            {
                AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
                alertBuilder.SetTitle("Feature Collection ID");
                alertBuilder.SetMessage("Please enter a portal item ID");
                alertBuilder.Show();
                return;
            }

            // Call a function to add the feature collection from the specified portal item.
            OpenFeaturesFromArcGISOnline(collectionItemId);
        }

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

            // Create a button to load features from a portal item, add it to the layout.
            Button loadFeaturesButton = new Button(this) { Text = "Load features" };
            loadFeaturesButton.Click += OpenPortalFeatureCollectionClick;
            layout.AddView(loadFeaturesButton);

            // Create an edit text for the user to enter a portal item Id.
            _portalItemIdEditText = new EditText(this)
            {
                Hint = "Portal Item Id"
            };
            layout.AddView(_portalItemIdEditText);

            // Add the map view to the layout.
            _myMapView = new MapView(this);
            layout.AddView(_myMapView);

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

Xamarin Forms Android

Example Name: FeatureCollectionLayerFromPortal

This sample demonstrates opening a feature collection saved as a portal item.

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.Data;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.Portal;
using System;
using Xamarin.Forms;

namespace ArcGISRuntime.Samples.FeatureCollectionLayerFromPortal
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        "Create a feature collection layer from a portal item",
        "Layers",
        "This sample demonstrates opening a feature collection saved as a portal item.",
        "")]
    public partial class FeatureCollectionLayerFromPortal : ContentPage
    { 
        // Default portal item Id to load features from.
        private const string FeatureCollectionItemId = "32798dfad17942858d5eef82ee802f0b";

        public FeatureCollectionLayerFromPortal()
        {
            InitializeComponent();

            // call a function to initialize a map to display in the MyMapView control.
            Initialize();
        }

        private void Initialize()
        {
            // Add a default value for the portal item Id.
            CollectionItemIdTextBox.Text = FeatureCollectionItemId;

            // Create a new map with the oceans basemap and add it to the map view.
            Map myMap = new Map(Basemap.CreateOceans());
            MyMapView.Map = myMap;
        }

        private async void OpenFeaturesFromArcGISOnline(string itemId)
        {
            try
            {
                // Open a portal item containing a feature collection.
                ArcGISPortal portal = await ArcGISPortal.CreateAsync();
                PortalItem collectionItem = await PortalItem.CreateAsync(portal, itemId);

                // Verify that the item is a feature collection.
                if (collectionItem.Type == PortalItemType.FeatureCollection)
                {
                    // Create a new FeatureCollection from the item.
                    FeatureCollection featureCollection = new FeatureCollection(collectionItem);

                    // Create a layer to display the collection and add it to the map as an operational layer.
                    FeatureCollectionLayer featureCollectionLayer = new FeatureCollectionLayer(featureCollection)
                    {
                        Name = collectionItem.Title
                    };

                    MyMapView.Map.OperationalLayers.Add(featureCollectionLayer);
                }
                else
                {
                    await Application.Current.MainPage.DisplayAlert("Feature Collection", "Portal item with ID '" + itemId + "' is not a feature collection.", "OK");
                }
            }
            catch (Exception ex)
            {
                await Application.Current.MainPage.DisplayAlert("Error", "Unable to open item with ID '" + itemId + "': " + ex.Message, "OK");
            }
        }

        private async void OpenPortalFeatureCollectionClick(object sender, EventArgs e)
        {
            // Get the portal item Id from the user.
            string collectionItemId = CollectionItemIdTextBox.Text.Trim();

            // Make sure an Id was entered.
            if (String.IsNullOrEmpty(collectionItemId))
            {
                await Application.Current.MainPage.DisplayAlert("Feature Collection ID", "Please enter a portal item ID", "OK");
                return;
            }

            // Call a function to add the feature collection from the specified portal item.
            OpenFeaturesFromArcGISOnline(collectionItemId);
        }
    }
}
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.FeatureCollectionLayerFromPortal.FeatureCollectionLayerFromPortal">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="40"/>
            <RowDefinition Height="40"/>
        </Grid.RowDefinitions>
        <esriUI:MapView x:Name="MyMapView"
                        Grid.Row="0"/>
        <Entry x:Name="CollectionItemIdTextBox"
               Placeholder="Portal item Id"
               Grid.Row="1"
               HorizontalOptions="Fill"/>
        <Button Grid.Row="2"
                HorizontalOptions="Fill"
                Text="Open feature collection item"
                Clicked="OpenPortalFeatureCollectionClick"/>
    </Grid>
</ContentPage>
See Also
Additional Examples
Hyperlink to ExampleDescription
CreateFeatureCollectionLayerCreate a Feature Collection Layer from a Feature Collection Table, and add it to a map.
FeatureCollectionLayerFromPortalThis sample demonstrates opening a feature collection saved as a portal item.
FeatureCollectionLayerFromQueryCreate a feature collection layer to show a query result from a service feature table. The feature collection is then displayed on a map with a feature collection layer.