Feature collection layer (portal item)

View on GitHub
Sample viewer app

Create a feature collection layer from a portal item.

Image of create feature collection layer portal item

Use case

Feature collection layers are often used to hold features with mixed geometry or unstructured data. You can display feature collections stored in a portal, which are often used for showing content from a CSV or map notes.

How to use the sample

The feature collection is loaded from the portal item when the sample is opened.

How it works

  1. Create an AGSPortal.
  2. Create an AGSPortalItem, referring to the portal and an item ID.
  3. Verify that the item represents a feature collection.
  4. Create an AGSFeatureCollection from the item.
  5. Create an AGSFeatureCollectionLayer, referring to the feature collection.
  6. Add the feature collection layer to the map's operationalLayers property.

Relevant API

  • AGSFeatureCollection
  • AGSFeatureCollectionLayer
  • AGSPortal
  • AGSPortalItem

About the data

The sample uses a sample layer depicting world populations.

Tags

collection, feature collection, feature collection layer, id, item, map notes, portal

Sample Code

FeatureCollectionLayerFromPortalViewController.swift
                                                      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Copyright 2020 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.

import UIKit
import ArcGIS

class FeatureCollectionLayerFromPortalViewController: UIViewController {
    // MARK: Storyboard views

    /// The map view managed by the view controller.
    @IBOutlet weak var mapView: AGSMapView! {
        didSet {
            mapView.map = AGSMap(basemapStyle: .arcGISOceans)
        }
    }

    // MARK: UIViewController

    override func viewDidLoad() {
        super.viewDidLoad()
        // Add the source code button item to the right of navigation bar.
        (self.navigationItem.rightBarButtonItem as? SourceCodeBarButtonItem)?.filenames = [
            "FeatureCollectionLayerFromPortalViewController"
        ]
        // Create a portal item with portal item ID.
        let featureCollectionPortalItemID = "32798dfad17942858d5eef82ee802f0b"
        let portal = AGSPortal.arcGISOnline(withLoginRequired: false)
        let portalItem = AGSPortalItem(portal: portal, itemID: featureCollectionPortalItemID)
        // Load the portal item and add feature collection layer to the map.
        portalItem.load { [weak self] (error: Error?) in
            guard let self = self else { return }
            if portalItem.type == .featureCollection {
                let featureCollectionLayer = AGSFeatureCollectionLayer(
                    featureCollection: AGSFeatureCollection(item: portalItem)
                )
                self.mapView.map?.operationalLayers.add(featureCollectionLayer)
                self.mapView.setViewpointScale(1e8)
            } else if let error = error {
                self.presentAlert(error: error)
            }
        }
    }
}

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.