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
55
56
57
// Copyright 2022 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//// https://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 ArcGIS
import SwiftUI
structDisplayMapFromMobileMapPackageView: View{
/// A map with no specified style.@Stateprivatevar map =Map()
/// The mobile map package.@Stateprivatevar mobileMapPackage: MobileMapPackage!
/// A Boolean value indicating whether to show an alert.@Stateprivatevar isShowingAlert =false/// The error shown in the alert.@Stateprivatevar error: Error? {
didSet { isShowingAlert = error !=nil }
}
/// Loads a local mobile map package.privatefuncloadMobileMapPackage()asyncthrows {
// Loads the local mobile map package.let yellowstoneURL =Bundle.main.url(forResource: "Yellowstone", withExtension: "mmpk")! mobileMapPackage =MobileMapPackage(fileURL: yellowstoneURL)
tryawait mobileMapPackage.load()
// Gets the first map in the mobile map package.guardlet map = mobileMapPackage.maps.first else { return }
self.map = map
}
var body: someView {
// Creates a map view to display the map.MapView(map: map)
.task {
do {
tryawait loadMobileMapPackage()
} catch {
// Presents an error message if the map fails to load.self.error = error
}
}
.alert(isPresented: $isShowingAlert, presentingError: error)
}
}