Learn how to download and display an offline map for a user-defined geographical area of a web map .
Offline maps allow users to continue working when network connectivity is poor or lost. If a web map is enabled for offline use, a user can request that ArcGIS generates an offline map for a specified geographic area of interest.
In this tutorial, you will download an offline map for an area of interest from the web map of the stormwater network within Naperville, IL, USA. You can then use this offline map without a network connection.
Prerequisites The following are required for this tutorial:
An ArcGIS account to access API keys . If you don't have an account, sign up for free . Your system meets the system requirements . The ArcGIS Maps SDK for Qt , version 200.0.0 or later is installed. ArcGIS Maps SDK for Qt version 200.0.0 and later requires Qt 6. The Qt 6 software development framework is installed. Steps Get the web map item ID You can use ArcGIS tools to create and view web maps . Use the Map Viewer to identify the web map item ID . This item ID will be used later in the tutorial.
Go to the Naperville water network in the Map Viewer in ArcGIS Online . This web map displays stormwater network within Naperville, IL, USA. Make a note of the item ID at the end of the browser's URL. The item ID should be acc027394bc84c2fb04d1ed317aac674 Create a new ArcGIS Maps Qt Creator Project Start Qt Creator .
Click File > New File or Project . Under Projects , select ArcGIS .
Select the ArcGIS Maps 200.1.0 Qt Quick C++ app project template (or a later version ) and click Choose .
More info You may have several selections for the ArcGIS project type. Be sure to select ArcGIS Maps 200.1.0 Qt Quick C++ app (or a later version).
In the Project Location dialog, name your project display_an_offline_map . Click Next .
In the Define Build System dialog, select qmake for your build system. Click Next .
In the Define Project Details dialog, give this app a description or leave it as is. Leave the rest of this dialog as is.
Leave the 3D project box unchecked. At the ArcGIS Online Basemap dropdown menu, select Streets . Then click Next .
On the Kit Selection dialog, check the kit(s) you previously set up when you installed the API. You should select a Desktop kit to run this tutorial. Then click Next .
At the Project Management dialog, the option to Add as a subproject to root project is only available if you have already created a root project. Ignore this dialog for this tutorial. Click Next .
Set your API key An
API key is required to enable access to
services ,
web maps , and
web scenes hosted in
ArcGIS Online .
If you haven't already, go to your developer dashboard to get your API key .
For these tutorials, use your default API key. It is scoped to include all of the services demonstrated in the tutorials.
Display the web map You can display a web map using the web map's item ID . Create a map from the web map portal item , and display it in your app.
In Projects , double-click Headers > Display_an_offline_map.h to open the file. Add the following classes to the header file.
Display_an_offline_map.h
Use dark colors for code blocks 15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
16
17
18
19
20
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
21
Add line. Add line.
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
namespace Esri::ArcGISRuntime {
class Map ;
class MapQuickView ;
class PortalItem ;
class OfflineMapTask ;
Add the generate M a p By Extent()
function declaration and member variables m_ portal Item
and m_ offline M a p Task
. Save and close the file.
Display_an_offline_map.h
Use dark colors for code blocks 41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
41
42
43
44
45
46
47
48
49
50
51
52
53
53
53
53
53
Add line. Add line. Add line.
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
private :
Esri:: ArcGISRuntime::MapQuickView* mapView () const ;
void setMapView (Esri::ArcGISRuntime::MapQuickView* mapView) ;
void generateMapByExtent () ;
Esri::ArcGISRuntime::Map* m_map = nullptr ;
Esri::ArcGISRuntime::MapQuickView* m_mapView = nullptr ;
Esri::ArcGISRuntime::PortalItem* m_portalItem = nullptr ;
Esri::ArcGISRuntime::OfflineMapTask* m_offlineMapTask = nullptr ;
In Projects , double-click Sources > Display_an_offline_map.cpp to open the file. Remove the #include
statement for Map Types.h
; the map is provided by the offline map.
Display_an_offline_map.cpp
Use dark colors for code blocks 2
3
4
5
6
7
8
9
Remove line
1
2
3
4
5
6
7
8
# include "Display_an_offline_map.h"
# include "Map.h"
# include "MapTypes.h"
# include "MapQuickView.h"
Add the following #include
statements. These classes are needed for this application.
Display_an_offline_map.cpp
Use dark colors for code blocks 12
12
12
12
12
12
12
12
12
12
12
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
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
36
Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# include "Display_an_offline_map.h"
# include "Map.h"
# include "MapQuickView.h"
# include "Envelope.h"
# include "EnvelopeBuilder.h"
# include "Error.h"
# include "GenerateOfflineMapJob.h"
# include "GenerateOfflineMapResult.h"
# include "Graphic.h"
# include "GraphicListModel.h"
# include "GraphicsOverlay.h"
# include "GraphicsOverlayListModel.h"
# include "OfflineMapTask.h"
# include "Portal.h"
# include "PortalItem.h"
# include "SimpleFillSymbol.h"
# include "SimpleLineSymbol.h"
# include "SpatialReference.h"
# include "SymbolTypes.h"
# include "TaskTypes.h"
# include "TaskWatcher.h"
# include <QDir>
# include <QUuid>
Delete the comma after QObject(parent)
and remove the Map
from the constructor.
Display_an_offline_map.cpp
Use dark colors for code blocks 2
3
4
5
6
Change line Change line Remove line
1
2
3
4
5
Display_an_offline_map:: Display_an_offline_map (QObject* parent /* = nullptr */ ):
QObject (parent),
m_map ( new Map (BasemapStyle::ArcGISStreets, this ))
Instantiate a Portal
and from that, a PortalItem
using the web map item ID for the Naperville water network. Use that to create a new Map
. Then create a new OfflineMapTask
referencing that portal item.
Display_an_offline_map.cpp
Use dark colors for code blocks 39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
39
40
41
42
43
44
45
46
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
47
Add line. Add line. Add line. Add line.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
Display_an_offline_map:: Display_an_offline_map (QObject* parent /* = nullptr */ ):
QObject (parent)
{
Portal* portal = new Portal ( false , this );
m_portalItem = new PortalItem (portal, "acc027394bc84c2fb04d1ed317aac674" , this );
m_map = new Map (m_portalItem, this );
m_offlineMapTask = new OfflineMapTask (m_portalItem, this );
Press <Ctrl+R> to run the app.
You should see a map of the stormwater network within Naperville, IL, USA. Use the mouse to drag, scroll, and double-click the map view to explore the map.
Specify the area of the web map to take offline Add the call to generate M a p By Extent
. (The next step implements this function.)
Display_an_offline_map.cpp
Use dark colors for code blocks 59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
60
61
62
63
64
65
66
67
68
69
70
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
71
Add line.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Set the view (created in QML)
void Display_an_offline_map::setMapView (MapQuickView* mapView)
{
if (!mapView || mapView == m_mapView)
{
return ;
}
m_mapView = mapView;
m_mapView-> setMap (m_map);
generateMapByExtent ();
Begin to implement the generate M a p By Extent()
function. Use EnvelopeBuilder
to set four parameters and then call t o Envelope()
to create the envelope.
Display_an_offline_map.cpp
Use dark colors for code blocks 59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
88
89
90
Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Set the view (created in QML)
void Display_an_offline_map::setMapView (MapQuickView* mapView)
{
if (!mapView || mapView == m_mapView)
{
return ;
}
m_mapView = mapView;
m_mapView-> setMap (m_map);
generateMapByExtent ();
emit mapViewChanged () ;
}
void Display_an_offline_map::generateMapByExtent ()
{
// Create envelope to define area of interest
EnvelopeBuilder* envelopeBuilder = new EnvelopeBuilder (SpatialReference:: wgs84 (), this );
envelopeBuilder-> setXMin ( -88.1526 );
envelopeBuilder-> setXMax ( -88.1490 );
envelopeBuilder-> setYMin ( 41.7694 );
envelopeBuilder-> setYMax ( 41.7714 );
Envelope offlineArea = envelopeBuilder-> toEnvelope ();
// generate the offline map parameters
m_offlineMapTask-> createDefaultGenerateOfflineMapParameters (offlineArea);
}
Add a graphic to generate M a p By Extent()
to show the area you will take offline.
Create a Graphic
using the envelope, SimpleFillSymbol
and SimpleLineSymbol
. From this create a GraphicsOverlay
and add it to the mapView.
Display_an_offline_map.cpp
Use dark colors for code blocks 75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
95
96
97
Add line. Add line. Add line. Add line. Add line. Add line.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
void Display_an_offline_map::generateMapByExtent ()
{
// Create envelope to define area of interest
EnvelopeBuilder* envelopeBuilder = new EnvelopeBuilder (SpatialReference:: wgs84 (), this );
envelopeBuilder-> setXMin ( -88.1526 );
envelopeBuilder-> setXMax ( -88.1490 );
envelopeBuilder-> setYMin ( 41.7694 );
envelopeBuilder-> setYMax ( 41.7714 );
Envelope offlineArea = envelopeBuilder-> toEnvelope ();
Graphic* box = new Graphic (offlineArea, new SimpleFillSymbol (SimpleFillSymbolStyle::Solid, Qt::transparent, new SimpleLineSymbol (SimpleLineSymbolStyle::Solid, Qt::red, 3 , this ), this ), this );
GraphicsOverlay* boxOverlay = new GraphicsOverlay ( this );
boxOverlay-> graphics ()-> append (box);
// add graphics overlay to the map view
m_mapView-> graphicsOverlays ()-> append (boxOverlay);
// generate the offline map parameters
m_offlineMapTask-> createDefaultGenerateOfflineMapParameters (offlineArea);
}
Press <Ctrl+R> to run the app.
You should see a red outline on the stormwater network within Naperville, IL, USA. This indicates the area of the web map that you are going to take offline.
Download and display the offline map Add the following connect function that creates a GenerateOfflineMapJob
. This executes after create Default Generate Offline M a p Parameters Completed
is issued. Store the resulting offline mobile map package (MMPK) at a desired local folder. Don't add a closing brace yet .
Display_an_offline_map.cpp
Use dark colors for code blocks 87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
101
100
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
76
75
75
75
75
Add line. Add line. Add line. Add line. Add line. Add line. Add line.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
Graphic* box = new Graphic (offlineArea, new SimpleFillSymbol (SimpleFillSymbolStyle::Solid, Qt::transparent, new SimpleLineSymbol (SimpleLineSymbolStyle::Solid, Qt::red, 3 , this ), this ), this );
GraphicsOverlay* boxOverlay = new GraphicsOverlay ( this );
boxOverlay-> graphics ()-> append (box);
// add graphics overlay to the map view
m_mapView-> graphicsOverlays ()-> append (boxOverlay);
// use connect to run generate offline map job after offline map parameters are created. Store the resulting mmpk in the desired path
connect (m_offlineMapTask, &OfflineMapTask::createDefaultGenerateOfflineMapParametersCompleted, this , [ this ](QUuid, const GenerateOfflineMapParameters& params)
{
const QString outputPath = QDir:: homePath () + "/ArcGIS/Runtime/Data/offlinemap.mmpk" ;
GenerateOfflineMapJob* generateJob = m_offlineMapTask-> generateOfflineMap (params, outputPath);
if (!generateJob)
return ;
Add another connect
that monitors the status of the GenerateOfflineMapJob
and returns changes to status.
Display_an_offline_map.cpp
Use dark colors for code blocks 94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
118
117
116
115
114
113
112
111
110
109
109
109
109
Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// use connect to run generate offline map job after offline map parameters are created. Store the resulting mmpk in the desired path
connect (m_offlineMapTask, &OfflineMapTask::createDefaultGenerateOfflineMapParametersCompleted, this , [ this ](QUuid, const GenerateOfflineMapParameters& params)
{
const QString outputPath = QDir:: homePath () + "/ArcGIS/Runtime/Data/offlinemap.mmpk" ;
GenerateOfflineMapJob* generateJob = m_offlineMapTask-> generateOfflineMap (params, outputPath);
if (!generateJob)
return ;
// use connect to monitor job status for changes and return job status
connect (generateJob, &GenerateOfflineMapJob::statusChanged, this , [ this , generateJob]()
{
if (generateJob-> jobStatus () == JobStatus::Succeeded)
{
qDebug () << "generating offline map" ;
m_mapView-> setMap (generateJob-> result ()-> offlineMap ( this ));
qDebug () << (generateJob-> error (). isEmpty () ? "No errors" : (generateJob-> error (). message () + generateJob-> error (). additionalMessage ()));
}
else if (generateJob-> jobStatus () == JobStatus::Failed)
{
qWarning () << generateJob-> error (). message () << generateJob-> error (). additionalMessage ();
}
});
Add a final connect
(optional) that displays progress of the GenerateOfflineMapJob
as the job executes. Add the final code generate Job->start()
and the final closing code (required) to complete the first connect function.
Display_an_offline_map.cpp
Expand
Use dark colors for code blocks 102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
127
127
127
127
Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// use connect to monitor job status for changes and return job status
connect (generateJob, &GenerateOfflineMapJob::statusChanged, this , [ this , generateJob]()
{
if (generateJob-> jobStatus () == JobStatus::Succeeded)
{
qDebug () << "generating offline map" ;
m_mapView-> setMap (generateJob-> result ()-> offlineMap ( this ));
qDebug () << (generateJob-> error (). isEmpty () ? "No errors" : (generateJob-> error (). message () + generateJob-> error (). additionalMessage ()));
}
else if (generateJob-> jobStatus () == JobStatus::Failed)
{
qWarning () << generateJob-> error (). message () << generateJob-> error (). additionalMessage ();
}
});
// use connect to monitor job progress changes and return progress return job progress
connect (generateJob, &GenerateOfflineMapJob::progressChanged, this , [generateJob]()
{
qDebug () << "Job status:" << generateJob-> progress () << "%" ;
});
generateJob-> start ();
});
Press <Ctrl+R> to run the app.
Initially, you should see the map of the stormwater network for Naperville, IL, USA, with a red outline as before. At the Application Output tab in Creator, the Job status
percentage should increment up to 100%, and then you should see the offline map for the specified area of the stormwater network for Naperville, IL, USA. Remove your network connection and you will still be able to use the mouse to drag, scroll, and double-click the map view to explore this offline map.
What's next? Learn how to use additional API features , ArcGIS location services , and ArcGIS tools in these tutorials:
Not all tutorials are currently available for QML.