Skip to content

Commit 89ceb0e

Browse files
authored
Merge pull request #266 from Esri/v.next
[Release] Merge 200.2 samples into `main`
2 parents 82f4479 + 2d5fb61 commit 89ceb0e

File tree

35 files changed

+828
-82
lines changed

35 files changed

+828
-82
lines changed

Samples.xcodeproj/project.pbxproj

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@
7676
1C19B4F72A578E69001D2506 /* CreateLoadReportView.Model.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 1C19B4EF2A578E46001D2506 /* CreateLoadReportView.Model.swift */; };
7777
1C19B4F82A578E69001D2506 /* CreateLoadReportView.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 1C19B4ED2A578E46001D2506 /* CreateLoadReportView.swift */; };
7878
1C19B4F92A578E69001D2506 /* CreateLoadReportView.Views.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 1C19B4EB2A578E46001D2506 /* CreateLoadReportView.Views.swift */; };
79+
1C26ED192A859525009B7721 /* FilterFeaturesInSceneView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C26ED152A859525009B7721 /* FilterFeaturesInSceneView.swift */; };
80+
1C26ED202A8BEC63009B7721 /* FilterFeaturesInSceneView.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 1C26ED152A859525009B7721 /* FilterFeaturesInSceneView.swift */; };
7981
1C3B7DC82A5F64FC00907443 /* AnalyzeNetworkWithSubnetworkTraceView.Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C3B7DC32A5F64FC00907443 /* AnalyzeNetworkWithSubnetworkTraceView.Model.swift */; };
8082
1C3B7DCB2A5F64FC00907443 /* AnalyzeNetworkWithSubnetworkTraceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C3B7DC62A5F64FC00907443 /* AnalyzeNetworkWithSubnetworkTraceView.swift */; };
8183
1C3B7DCD2A5F652500907443 /* AnalyzeNetworkWithSubnetworkTraceView.Model.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 1C3B7DC32A5F64FC00907443 /* AnalyzeNetworkWithSubnetworkTraceView.Model.swift */; };
@@ -124,12 +126,16 @@
124126
75DD736929D35FF40010229D /* ChangeMapViewBackgroundView.Model.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 4D2ADC6129C5071C003B367F /* ChangeMapViewBackgroundView.Model.swift */; };
125127
75DD739529D38B1B0010229D /* NavigateRouteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75DD739129D38B1B0010229D /* NavigateRouteView.swift */; };
126128
75DD739929D38B420010229D /* NavigateRouteView.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 75DD739129D38B1B0010229D /* NavigateRouteView.swift */; };
129+
7900C5F62A83FC3F002D430F /* AddCustomDynamicEntityDataSourceView.Vessel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7900C5F52A83FC3F002D430F /* AddCustomDynamicEntityDataSourceView.Vessel.swift */; };
130+
792222DD2A81AA5D00619FFE /* AIS_MarineCadastre_SelectedVessels_CustomDataSource.jsonl in Resources */ = {isa = PBXBuildFile; fileRef = 792222DC2A81AA5D00619FFE /* AIS_MarineCadastre_SelectedVessels_CustomDataSource.jsonl */; settings = {ASSET_TAGS = (AddCustomDynamicEntityDataSource, ); }; };
127131
79302F852A1ED4E30002336A /* CreateAndSaveKMLView.Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79302F842A1ED4E30002336A /* CreateAndSaveKMLView.Model.swift */; };
128132
79302F872A1ED71B0002336A /* CreateAndSaveKMLView.Views.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79302F862A1ED71B0002336A /* CreateAndSaveKMLView.Views.swift */; };
129133
79A47DFB2A20286800D7C5B9 /* CreateAndSaveKMLView.Model.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 79302F842A1ED4E30002336A /* CreateAndSaveKMLView.Model.swift */; };
130134
79A47DFC2A20286800D7C5B9 /* CreateAndSaveKMLView.Views.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 79302F862A1ED71B0002336A /* CreateAndSaveKMLView.Views.swift */; };
131135
79B7B80A2A1BF8EC00F57C27 /* CreateAndSaveKMLView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79B7B8092A1BF8EC00F57C27 /* CreateAndSaveKMLView.swift */; };
132136
79B7B80B2A1BFDE700F57C27 /* CreateAndSaveKMLView.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 79B7B8092A1BF8EC00F57C27 /* CreateAndSaveKMLView.swift */; };
137+
79D84D132A81711A00F45262 /* AddCustomDynamicEntityDataSourceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79D84D0D2A815C5B00F45262 /* AddCustomDynamicEntityDataSourceView.swift */; };
138+
79D84D152A81718F00F45262 /* AddCustomDynamicEntityDataSourceView.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 79D84D0D2A815C5B00F45262 /* AddCustomDynamicEntityDataSourceView.swift */; };
133139
883C121529C9136600062FF9 /* DownloadPreplannedMapAreaView.MapPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 883C121429C9136600062FF9 /* DownloadPreplannedMapAreaView.MapPicker.swift */; };
134140
883C121729C914E100062FF9 /* DownloadPreplannedMapAreaView.MapPicker.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = 883C121429C9136600062FF9 /* DownloadPreplannedMapAreaView.MapPicker.swift */; };
135141
883C121829C914E100062FF9 /* DownloadPreplannedMapAreaView.Model.swift in Copy Source Code Files */ = {isa = PBXBuildFile; fileRef = E0D04FF128A5390000747989 /* DownloadPreplannedMapAreaView.Model.swift */; };
@@ -277,6 +283,8 @@
277283
dstPath = "";
278284
dstSubfolderSpec = 7;
279285
files = (
286+
79D84D152A81718F00F45262 /* AddCustomDynamicEntityDataSourceView.swift in Copy Source Code Files */,
287+
1C26ED202A8BEC63009B7721 /* FilterFeaturesInSceneView.swift in Copy Source Code Files */,
280288
1C56B5E72A82C057000381DA /* DisplayPointsUsingClusteringFeatureReductionView.swift in Copy Source Code Files */,
281289
D7ABA3002A3288970021822B /* ShowViewshedFromGeoelementInSceneView.swift in Copy Source Code Files */,
282290
1C3B7DCD2A5F652500907443 /* AnalyzeNetworkWithSubnetworkTraceView.Model.swift in Copy Source Code Files */,
@@ -418,6 +426,7 @@
418426
1C19B4EB2A578E46001D2506 /* CreateLoadReportView.Views.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateLoadReportView.Views.swift; sourceTree = "<group>"; };
419427
1C19B4ED2A578E46001D2506 /* CreateLoadReportView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateLoadReportView.swift; sourceTree = "<group>"; };
420428
1C19B4EF2A578E46001D2506 /* CreateLoadReportView.Model.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateLoadReportView.Model.swift; sourceTree = "<group>"; };
429+
1C26ED152A859525009B7721 /* FilterFeaturesInSceneView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterFeaturesInSceneView.swift; sourceTree = "<group>"; };
421430
1C3B7DC32A5F64FC00907443 /* AnalyzeNetworkWithSubnetworkTraceView.Model.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyzeNetworkWithSubnetworkTraceView.Model.swift; sourceTree = "<group>"; };
422431
1C3B7DC62A5F64FC00907443 /* AnalyzeNetworkWithSubnetworkTraceView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyzeNetworkWithSubnetworkTraceView.swift; sourceTree = "<group>"; };
423432
1C42E04329D2396B004FC4BE /* ShowPopupView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowPopupView.swift; sourceTree = "<group>"; };
@@ -442,9 +451,12 @@
442451
7573E81729D6134C00BEED9C /* TraceUtilityNetworkView.Views.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TraceUtilityNetworkView.Views.swift; sourceTree = "<group>"; };
443452
7573E81829D6134C00BEED9C /* TraceUtilityNetworkView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TraceUtilityNetworkView.swift; sourceTree = "<group>"; };
444453
75DD739129D38B1B0010229D /* NavigateRouteView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigateRouteView.swift; sourceTree = "<group>"; };
454+
7900C5F52A83FC3F002D430F /* AddCustomDynamicEntityDataSourceView.Vessel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddCustomDynamicEntityDataSourceView.Vessel.swift; sourceTree = "<group>"; };
455+
792222DC2A81AA5D00619FFE /* AIS_MarineCadastre_SelectedVessels_CustomDataSource.jsonl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AIS_MarineCadastre_SelectedVessels_CustomDataSource.jsonl; sourceTree = "<group>"; };
445456
79302F842A1ED4E30002336A /* CreateAndSaveKMLView.Model.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateAndSaveKMLView.Model.swift; sourceTree = "<group>"; };
446457
79302F862A1ED71B0002336A /* CreateAndSaveKMLView.Views.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateAndSaveKMLView.Views.swift; sourceTree = "<group>"; };
447458
79B7B8092A1BF8EC00F57C27 /* CreateAndSaveKMLView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateAndSaveKMLView.swift; sourceTree = "<group>"; };
459+
79D84D0D2A815C5B00F45262 /* AddCustomDynamicEntityDataSourceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddCustomDynamicEntityDataSourceView.swift; sourceTree = "<group>"; };
448460
883C121429C9136600062FF9 /* DownloadPreplannedMapAreaView.MapPicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DownloadPreplannedMapAreaView.MapPicker.swift; sourceTree = "<group>"; };
449461
88F93CC029C3D59C0006B28E /* CreateAndEditGeometriesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateAndEditGeometriesView.swift; sourceTree = "<group>"; };
450462
D701D72B2A37C7F7006FF0C8 /* bradley_low_3ds */ = {isa = PBXFileReference; lastKnownFileType = folder; path = bradley_low_3ds; sourceTree = "<group>"; };
@@ -593,6 +605,7 @@
593605
0074ABB228174B830037244A /* Samples */ = {
594606
isa = PBXGroup;
595607
children = (
608+
79D84D0C2A815BED00F45262 /* Add custom dynamic entity data source */,
596609
4D2ADC3E29C26D05003B367F /* Add dynamic entity layer */,
597610
00D4EF7E2863840D00B9CC30 /* Add feature layers */,
598611
F19A316128906F0D003B7EF9 /* Add raster from file */,
@@ -625,6 +638,7 @@
625638
E004A6D528465C70002A1FE6 /* Display scene */,
626639
E070A0A1286F3B3400F2B606 /* Download preplanned map area */,
627640
E004A6EE284E4B7A002A1FE6 /* Download vector tiles to local cache */,
641+
1C26ED122A859525009B7721 /* Filter features in scene */,
628642
D78666A92A21616D00C60110 /* Find nearest vertex */,
629643
E066DD33285CF3A0004D3D5B /* Find route */,
630644
E088E1722863B5E600413100 /* Generate offline map */,
@@ -751,6 +765,7 @@
751765
D77572AC2A295DC100F490CD /* d1453556d91e46dea191c20c398b82cd */,
752766
1C965C4629DBA879002F8536 /* 681d6f7694644709a7c830ec57a2d72b */,
753767
00D4EF8128638BF100B9CC30 /* cb1b20748a9f4d128dad8a87244e3e37 */,
768+
792222DB2A81AA5D00619FFE /* a8a942c228af4fac96baa78ad60f511f */,
754769
00C94A0228B53DCC004E42D9 /* 7c4c679ab06a4df19dc497f577f111bd */,
755770
00D4EF8328638BF100B9CC30 /* 15a7cbd3af1e47cfa5d2c6b93dc44fc2 */,
756771
00D4EF8E28638BF100B9CC30 /* 68ec42517cdd439e81b036210483e8e7 */,
@@ -850,6 +865,14 @@
850865
path = "Create load report";
851866
sourceTree = "<group>";
852867
};
868+
1C26ED122A859525009B7721 /* Filter features in scene */ = {
869+
isa = PBXGroup;
870+
children = (
871+
1C26ED152A859525009B7721 /* FilterFeaturesInSceneView.swift */,
872+
);
873+
path = "Filter features in scene";
874+
sourceTree = "<group>";
875+
};
853876
1C3B7DC22A5F64FC00907443 /* Analyze network with subnetwork trace */ = {
854877
isa = PBXGroup;
855878
children = (
@@ -973,6 +996,14 @@
973996
path = "Navigate route";
974997
sourceTree = "<group>";
975998
};
999+
792222DB2A81AA5D00619FFE /* a8a942c228af4fac96baa78ad60f511f */ = {
1000+
isa = PBXGroup;
1001+
children = (
1002+
792222DC2A81AA5D00619FFE /* AIS_MarineCadastre_SelectedVessels_CustomDataSource.jsonl */,
1003+
);
1004+
path = a8a942c228af4fac96baa78ad60f511f;
1005+
sourceTree = "<group>";
1006+
};
9761007
79B7B8082A1BF8B300F57C27 /* Create and save KML file */ = {
9771008
isa = PBXGroup;
9781009
children = (
@@ -983,6 +1014,15 @@
9831014
path = "Create and save KML file";
9841015
sourceTree = "<group>";
9851016
};
1017+
79D84D0C2A815BED00F45262 /* Add custom dynamic entity data source */ = {
1018+
isa = PBXGroup;
1019+
children = (
1020+
79D84D0D2A815C5B00F45262 /* AddCustomDynamicEntityDataSourceView.swift */,
1021+
7900C5F52A83FC3F002D430F /* AddCustomDynamicEntityDataSourceView.Vessel.swift */,
1022+
);
1023+
path = "Add custom dynamic entity data source";
1024+
sourceTree = "<group>";
1025+
};
9861026
88F93CBE29C3D4E30006B28E /* Create and edit geometries */ = {
9871027
isa = PBXGroup;
9881028
children = (
@@ -1420,6 +1460,7 @@
14201460
attributes = {
14211461
BuildIndependentTargetsInParallel = 1;
14221462
KnownAssetTags = (
1463+
AddCustomDynamicEntityDataSource,
14231464
AddFeatureLayers,
14241465
AddRasterFromFile,
14251466
AnimateImagesWithImageOverlay,
@@ -1467,6 +1508,7 @@
14671508
00E5402027F3CCA200CF66D5 /* Assets.xcassets in Resources */,
14681509
00C94A0D28B53DE1004E42D9 /* raster-file in Resources */,
14691510
004FE87129DF5D8700075217 /* Bristol in Resources */,
1511+
792222DD2A81AA5D00619FFE /* AIS_MarineCadastre_SelectedVessels_CustomDataSource.jsonl in Resources */,
14701512
E041AC20288077B90056009B /* xcode.css in Resources */,
14711513
00D4EF9028638BF100B9CC30 /* LA_Trails.geodatabase in Resources */,
14721514
D701D72C2A37C7F7006FF0C8 /* bradley_low_3ds in Resources */,
@@ -1564,9 +1606,11 @@
15641606
isa = PBXSourcesBuildPhase;
15651607
buildActionMask = 2147483647;
15661608
files = (
1609+
79D84D132A81711A00F45262 /* AddCustomDynamicEntityDataSourceView.swift in Sources */,
15671610
E000E7602869E33D005D87C5 /* ClipGeometryView.swift in Sources */,
15681611
4D2ADC6729C50BD6003B367F /* AddDynamicEntityLayerView.Model.swift in Sources */,
15691612
E004A6E928493BCE002A1FE6 /* ShowDeviceLocationView.swift in Sources */,
1613+
1C26ED192A859525009B7721 /* FilterFeaturesInSceneView.swift in Sources */,
15701614
F111CCC1288B5D5600205358 /* DisplayMapFromMobileMapPackageView.swift in Sources */,
15711615
1C43BC842A43781200509BF8 /* SetVisibilityOfSubtypeSublayerView.swift in Sources */,
15721616
00A7A1462A2FC58300F035F7 /* DisplayContentOfUtilityNetworkContainerView.swift in Sources */,
@@ -1583,6 +1627,7 @@
15831627
E0D04FF228A5390000747989 /* DownloadPreplannedMapAreaView.Model.swift in Sources */,
15841628
00CCB8A5285BAF8700BBAB70 /* OnDemandResource.swift in Sources */,
15851629
1C19B4F32A578E46001D2506 /* CreateLoadReportView.swift in Sources */,
1630+
7900C5F62A83FC3F002D430F /* AddCustomDynamicEntityDataSourceView.Vessel.swift in Sources */,
15861631
D71099702A2802FA0065A1C1 /* DensifyAndGeneralizeGeometryView.SettingsView.swift in Sources */,
15871632
E004A6ED2849556E002A1FE6 /* CreatePlanarAndGeodeticBuffersView.swift in Sources */,
15881633
E041ABD7287DB04D0056009B /* SampleInfoView.swift in Sources */,
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Copyright 2023 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+
extension AddCustomDynamicEntityDataSourceView {
16+
/// A marine vessel that can be decoded from the vessel JSON.
17+
struct Vessel {
18+
/// A geometry that gives the location of the vessel.
19+
struct Geometry: Decodable { // swiftlint:disable:this nesting
20+
/// The x coordinate of the geometry.
21+
let x: Double
22+
/// The y coordinate of the geometry.
23+
let y: Double
24+
}
25+
26+
/// The location of the vessel.
27+
let geometry: Geometry
28+
/// The attributes of the vessel.
29+
let attributes: [String: Any]
30+
}
31+
}
32+
33+
extension AddCustomDynamicEntityDataSourceView.Vessel: Decodable {
34+
private enum CodingKeys: CodingKey {
35+
case geometry
36+
case attributes
37+
}
38+
39+
init(from decoder: Decoder) throws {
40+
/// The attributes that define meta data for the vessel.
41+
struct Attributes: Decodable {
42+
enum CodingKeys: String, CodingKey { // swiftlint:disable:this nesting
43+
case mmsi = "MMSI"
44+
case sog = "SOG"
45+
case cog = "COG"
46+
case vesselName = "VesselName"
47+
case callSign = "CallSign"
48+
}
49+
50+
let mmsi: String
51+
let sog: Double
52+
let cog: Double
53+
let vesselName: String
54+
let callSign: String
55+
}
56+
57+
let container = try decoder.container(keyedBy: CodingKeys.self)
58+
59+
let geometry = try container.decode(Geometry.self, forKey: .geometry)
60+
let attributes: [String: Any] = try {
61+
let attributes = try container.decode(Attributes.self, forKey: .attributes)
62+
return [
63+
Attributes.CodingKeys.mmsi.rawValue: attributes.mmsi,
64+
Attributes.CodingKeys.sog.rawValue: attributes.sog,
65+
Attributes.CodingKeys.cog.rawValue: attributes.cog,
66+
Attributes.CodingKeys.vesselName.rawValue: attributes.vesselName,
67+
Attributes.CodingKeys.callSign.rawValue: attributes.callSign
68+
]
69+
}()
70+
self.init(geometry: geometry, attributes: attributes)
71+
}
72+
}

0 commit comments

Comments
 (0)