Skip to content

Commit 192fb63

Browse files
authored
Merge pull request #666 from Esri/v.next
[Release] 200.8.0
2 parents 636ec60 + 5238682 commit 192fb63

File tree

400 files changed

+16003
-706
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

400 files changed

+16003
-706
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ This repository contains Swift sample code demonstrating the capabilities of the
44

55
## Features
66

7-
* Maps - Open, create, interact with and save maps
7+
* Maps - Open, create, interact with, and save maps
88
* Scenes - Visualize 3D environments and symbols
99
* Layers - Display vector and raster data in maps and scenes
1010
* Augmented Reality - View data overlaid on the real world through your device's camera
1111
* Visualization - Show graphics, popups, callouts, sketches, and style maps with symbols and renderers
12-
* Edit and Manage Data - Add, delete, and edit features and attachments, and taking data offline
12+
* Edit and Manage Data - Add, delete, and edit features and attachments, and take data offline
1313
* Search and Query - Find addresses, places, and points of interest
1414
* Routing and Logistics - Calculate routes between locations and around barriers
1515
* Analysis - Perform spatial analysis via geoprocessing tasks and services
@@ -18,11 +18,11 @@ This repository contains Swift sample code demonstrating the capabilities of the
1818

1919
## Requirements
2020

21-
* [ArcGIS Maps SDK for Swift](https://developers.arcgis.com/swift/) 200.7 (or newer)
22-
* [ArcGIS Maps SDK for Swift Toolkit](https://github.com/Esri/arcgis-maps-sdk-swift-toolkit) 200.7 (or newer)
23-
* Xcode 16.0 (or newer)
21+
* [ArcGIS Maps SDK for Swift](https://developers.arcgis.com/swift/) 200.8 (or newer)
22+
* [ArcGIS Maps SDK for Swift Toolkit](https://github.com/Esri/arcgis-maps-sdk-swift-toolkit) 200.8 (or newer)
23+
* Xcode 16.4 (or newer)
2424

25-
The *ArcGIS Maps SDK for Swift Samples app* has a *Target SDK* version of *16.0*, meaning that it can run on devices with *iOS 16.0* or newer.
25+
The *ArcGIS Maps SDK for Swift Samples app* has a *Target SDK* version of *17.0*, meaning that it can run on devices with *iOS 17.0* or newer.
2626

2727
## Building Samples Using Swift Package Manager
2828

@@ -75,7 +75,7 @@ Find a bug or want to request a new feature? Please let us know by [creating an
7575

7676
## Licensing
7777

78-
Copyright 2022 - 2024 Esri
78+
Copyright 2022 - 2025 Esri
7979

8080
Licensed under the Apache License, Version 2.0 (the "License");
8181
you may not use this file except in compliance with the License.

Samples.xcodeproj/project.pbxproj

Lines changed: 1004 additions & 11 deletions
Large diffs are not rendered by default.

Scripts/CI/common.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
'Arcade',
2727
'ArcGIS Online',
2828
'ArcGIS Pro',
29+
'Authenticate with Integrated Windows Authentication',
2930
'GeoPackage',
3031
'OAuth',
3132
'OpenStreetMap',
@@ -274,6 +275,7 @@ def __init__(self, folder_path: str):
274275

275276
# A list of ArcGIS Portal Item IDs.
276277
self.offline_data = [] # Default to empty list.
278+
self.has_teardown = False # Only applies to samples that require async tear down (e.g., authentication).
277279

278280
self.folder_path = folder_path
279281
self.folder_name = get_folder_name_from_path(folder_path)
@@ -371,6 +373,9 @@ def flush_to_json_string(self) -> str:
371373
data["relevant_apis"] = self.relevant_apis
372374
data["snippets"] = self.snippets
373375
data["title"] = self.title
376+
if self.has_teardown:
377+
# Only write has_teardown when it is True.
378+
data["has_teardown"] = self.has_teardown
374379
if self.offline_data:
375380
# Only write offline_data when it is not empty.
376381
data["offline_data"] = self.offline_data

Scripts/CI/metadata_checker.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ def run_check(path: str) -> None:
5252
# The special rule not to compare the redirect_from.
5353
checker.redirect_from = json_data['redirect_from']
5454

55+
# The special rule not to compare has_teardown.
56+
if 'has_teardown' in json_data:
57+
checker.has_teardown = json_data['has_teardown']
58+
5559
# The special rule not to compare offline_data.
5660
if 'offline_data' in json_data:
5761
checker.offline_data = json_data['offline_data']

Scripts/GenerateSampleViewSourceCode.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ private struct SampleMetadata: Decodable {
4343
let keywords: [String]
4444
/// The relevant APIs of the sample.
4545
let relevantApis: [String]
46+
/// A Boolean value indicating whether a sample has an action that needs to
47+
/// be performed when its view disappears.
48+
let hasTeardown: Bool? // swiftlint:disable:this discouraged_optional_boolean
4649
}
4750

4851
extension SampleMetadata {
@@ -130,6 +133,7 @@ private let sampleStructs = sampleMetadata
130133
var snippets: [String] { \(sample.snippets) }
131134
var tags: Set<String> { \(sample.tags) }
132135
\(portalItemIDs.isEmpty ? "" : "var hasDependencies: Bool { true }\n")
136+
var hasTeardown: Bool { \(sample.hasTeardown ?? false) }
133137
func makeBody() -> AnyView { .init(\(sample.viewName)()) }
134138
}
135139
"""

Scripts/create-metadata-from-README.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ def flush_to_json_file(self, path_to_json: str) -> None:
4949
data["relevant_apis"] = self.relevant_apis
5050
data["snippets"] = self.snippets
5151
data["title"] = self.title
52+
if self.has_teardown:
53+
# Only write has_teardown when it is True.
54+
data["has_teardown"] = self.has_teardown
5255
if self.offline_data:
5356
# Only write offline_data when it is not empty.
5457
data["offline_data"] = self.offline_data

Shared/Samples/Add KML layer with network links/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ The sample will load the KML file automatically. The data shown should refresh a
2626

2727
## Offline data
2828

29-
This sample uses the "radar.kmz" file, which can be found on [ArcGIS Online](https://arcgisruntime.maps.arcgis.com/home/item.html?id=600748d4464442288f6db8a4ba27dc95).
29+
This sample uses the "radar.kmz" file, which can be found on [ArcGIS Online](https://www.arcgis.com/home/item.html?id=600748d4464442288f6db8a4ba27dc95).
3030

3131
## About the data
3232

Shared/Samples/Add KML layer/AddKMLLayerView.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,23 @@ struct AddKMLLayerView: View {
3434
Text(source.label)
3535
}
3636
}
37-
.onChange(of: selectedLayerSource, perform: setKMLLayer(forSource:))
37+
.onChange(of: selectedLayerSource) {
38+
setKMLLayer(for: selectedLayerSource)
39+
}
3840
}
3941
}
4042
.task {
4143
// Loads all the KML layers when the sample opens.
4244
let kmlLayers = [model.urlLayer, model.localFileLayer, model.portalItemLayer]
4345
await kmlLayers.load()
4446

45-
setKMLLayer(forSource: selectedLayerSource)
47+
setKMLLayer(for: selectedLayerSource)
4648
}
4749
}
4850

4951
/// Sets a KML layer on the map.
5052
/// - Parameter source: The source that was used to create the KML layer.
51-
private func setKMLLayer(forSource source: KMLLayerSource) {
53+
private func setKMLLayer(for source: KMLLayerSource) {
5254
let kmlLayer = switch source {
5355
case .url: model.urlLayer
5456
case .localFile: model.localFileLayer
@@ -74,7 +76,7 @@ private extension AddKMLLayerView {
7476

7577
/// A KML layer created from a web URL.
7678
let urlLayer: KMLLayer = {
77-
let url = URL(string: "https://www.wpc.ncep.noaa.gov/kml/noaa_chart/WPC_Day1_SigWx.kml")!
79+
let url = URL(string: "https://www.spc.noaa.gov/products/outlook/SPC_outlooks.kml")!
7880
let kmlDataset = KMLDataset(url: url)
7981
return KMLLayer(dataset: kmlDataset)
8082
}()

Shared/Samples/Add KML layer/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ This sample uses the [US State Capitals](https://www.arcgis.com/home/item.html?i
3232

3333
This sample displays three different KML files:
3434

35-
* From URL: This is a map of the significant weather outlook produced by NOAA/NWS. It uses KML network links to always show the latest data.
35+
* From URL: This is a map of the convective outlook produced by NOAA/NWS Storm Prediction Center. It uses KML network links to always show the latest data.
3636
* From local file: This is a map of U.S. state capitals. It doesn't define an icon, so the default pushpin is used for the points.
3737
* From portal item: This is a map of U.S. states.
3838

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2025 Esri
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// https://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
import ArcGIS
16+
import SwiftUI
17+
18+
struct AddOpenStreetMapLayerView: View {
19+
@State private var map = Map(basemapStyle: .openOSMStyle)
20+
21+
var body: some View {
22+
MapView(map: map)
23+
}
24+
}
25+
26+
#Preview {
27+
AddOpenStreetMapLayerView()
28+
}

0 commit comments

Comments
 (0)