Learn how to apply renderers and label definitions to a feature layer based on attribute values.
Applications can display feature layer data with different styles to enhance the visualization. The type of Renderer
you choose depends on your application. A SimpleRenderer
applies the same symbol to all features, a UniqueValueRenderer
applies a different symbol to each unique attribute value, and a ClassBreaksRenderer
applies a symbol to a range of numeric values. Renderers are responsible for accessing the data and applying the appropriate symbol to each feature when the layer draws. You can also use a LabelDefinition
to show attribute information for features. Visit the Styles and data visualization documentation to learn more about styling layers.
You can also author, style and save web maps, web scenes, and layers as portal items and then add them to the map in your application. Visit the following tutorials to learn more about adding portal items.
In this tutorial, you will apply different renderers to enhance the visualization of three feature layers with data for the Santa Monica Mountains: Trailheads with a single symbol, Trails based on elevation change and bike use, and Parks and Open Spaces based on the type of park.
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 Open the project in Qt Creator To start this tutorial, complete the Display a map tutorial or download
and unzip the solution.
Open the display_a_map project in Qt Creator.
If you downloaded the Display a map solution, set your API key.
More info An API Key enables access to services , web maps , and web scenes hosted in ArcGIS Online .
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.
In the Projects window, in the Sources folder, open the main.cpp file.
Modify the code to set the API key. Paste the API key, acquired from your dashboard, between the quotes. Then save and close the file.
main.cpp
Expand
Use dark colors for code blocks 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
37
38
39
40
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
Change 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
// 2. API key: A permanent key that gives your application access to Esri
// location services. Create a new API key or access existing API keys from
// your ArcGIS for Developers dashboard (https://links.esri.com/arcgis-api-keys).
const QString apiKey = QString ( "" );
Add needed classes and declarations In the Projects window, open the Headers folder. Open the display_a_map.h file.
Add the LabelDefinition
and FeatureLayer
classes to the namespace.
Display_a_map.h
Use dark colors for code blocks
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
namespace Esri::ArcGISRuntime {
class Map ;
class MapQuickView ;
class LabelDefinition ;
class FeatureLayer ;
Add the declarations for methods you will create.
Display_a_map.h
Expand
Use dark colors for code blocks
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
private :
Esri:: ArcGISRuntime::MapQuickView* mapView () const ;
void setMapView (Esri::ArcGISRuntime::MapQuickView* mapView) ;
void setupViewpoint () ;
void addOpenSpaceLayer () ;
void addTrailsLayer () ;
void addNoBikeTrailsLayer () ;
void addBikeOnlyTrailsLayer () ;
void addTrailheadsLayer () ;
Esri:: ArcGISRuntime::FeatureLayer* addFeatureLayer ( const QUrl& url) ;
Esri:: ArcGISRuntime::LabelDefinition* makeLabelDefinition () ;
Save and close the file.
Create a function to add a feature layer A feature layer can be added from a feature service hosted in ArcGIS Online . Each feature layer contains features with a single geometry type (point , line , or polygon ), and a set of attributes . Once added to the map, feature layers can be symbolized, styled, and labeled in a variety of ways.
Next, you will create a helper method to add a layer to the map's collection of operational layers . You will use this helper method throughout the tutorial as you add and symbolize various layers.
Add include statements to access the classes that will be used.
Display_a_map.cpp
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# include "Display_a_map.h"
# include "Map.h"
# include "MapTypes.h"
# include "MapQuickView.h"
# include "Point.h"
# include "SpatialReference.h"
# include "TaskWatcher.h"
# include "Viewpoint.h"
# include "FeatureLayer.h"
# include "ServiceFeatureTable.h"
# include "LayerListModel.h"
Add a helper method named add Feature Layer()
that takes a feature service URL as an argument.
Display_a_map.cpp
Expand
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
void Display_a_map::setupViewpoint ()
{
const Point center ( -118.80543 , 34.02700 , SpatialReference::wgs84()) ;
const Viewpoint viewpoint (center, 100000.0 ) ;
m_mapView-> setViewpoint (viewpoint);
}
// Create a new function that creates a feature layer and appends it to the operational layers and the m_map.
FeatureLayer* Display_a_map::addFeatureLayer ( const QUrl& url)
{
ServiceFeatureTable* serviceFeatureTable = new ServiceFeatureTable (url, this );
FeatureLayer* featureLayer = new FeatureLayer (serviceFeatureTable, this );
m_map-> operationalLayers ()-> append (featureLayer);
return featureLayer;
}
Add a layer with a unique value renderer Create a method that creates a variable to store a feature service URL. Create a Parks and Open Spaces feature layer using that variable and then apply a different symbol for each type of park area displayed.
Add include statements to access the classes that will be used.
Display_a_map.cpp
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# include "FeatureLayer.h"
# include "ServiceFeatureTable.h"
# include "LayerListModel.h"
# include "SymbolTypes.h"
# include "UniqueValue.h"
# include <QUrl>
# include "SimpleFillSymbol.h"
# include "UniqueValueRenderer.h"
Add a new method named add Open Space Layer()
, after the newly added add Feature Layer()
method.
Display_a_map.cpp
Use dark colors for code blocks
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. 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
void Display_a_map::addOpenSpaceLayer ()
{
// Create a parks and open spaces feature layer.
QUrl parksAndOpenSpacesQUrl ( "https://services3.arcgis.com/GVgbJbqm8hXASVYi/ArcGIS/rest/services/Parks_and_Open_Space/FeatureServer/0" ) ;
FeatureLayer* featureLayer = addFeatureLayer (parksAndOpenSpacesQUrl);
// Create fill symbols.
SimpleFillSymbol* purpleFillSymbol = new SimpleFillSymbol (SimpleFillSymbolStyle::Solid, QColor ( "purple" ), this );
SimpleFillSymbol* greenFillSymbol = new SimpleFillSymbol (SimpleFillSymbolStyle::Solid, QColor ( "green" ), this );
SimpleFillSymbol* blueFillSymbol = new SimpleFillSymbol (SimpleFillSymbolStyle::Solid, QColor ( "blue" ), this );
SimpleFillSymbol* redFillSymbol = new SimpleFillSymbol (SimpleFillSymbolStyle::Solid, QColor ( "red" ), this );
// Create a unique value for natural areas, regional open spaces, local parks & regional recreation parks.
UniqueValue* naturalAreas = new UniqueValue ( "Natural Areas" , "Natural Areas" , { "Natural Areas" }, purpleFillSymbol, this );
UniqueValue* regionalOpenSpace = new UniqueValue ( "Regional Open Space" , "Regional Open Space" , { "Regional Open Space" }, greenFillSymbol, this );
UniqueValue* localPark = new UniqueValue ( "Local Park" , "Local Park" , { "Local Park" }, blueFillSymbol, this );
UniqueValue* regionalRecreationPark = new UniqueValue ( "Regional Recreation Park" , "Regional Recreation Park" ,
{ "Regional Recreation Park" }, redFillSymbol, this );
// Create and assign a unique value renderer to the feature layer.
UniqueValueRenderer* openSpacesUniqueValueRenderer = new UniqueValueRenderer ( "Open Spaces" , nullptr , { "TYPE" },
{naturalAreas, regionalOpenSpace, localPark, regionalRecreationPark }, this );
featureLayer-> setRenderer (openSpacesUniqueValueRenderer);
// Set the layer opacity to semi-transparent.
featureLayer-> setOpacity ( 0.25f );
}
Update setup Viewpoint()
to call the new add Open Space Layer()
method.
Display_a_map.cpp
Expand
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
void Display_a_map::setupViewpoint ()
{
const Point center ( -118.80543 , 34.02700 , SpatialReference::wgs84()) ;
const Viewpoint viewpoint (center, 100000.0 ) ;
m_mapView-> setViewpoint (viewpoint);
addOpenSpaceLayer ();
Press <Ctrl+R> to run the app.
When the app opens, Parks and Open Spaces feature layer is added to the map. The map displays the different types of parks and open spaces with four unique symbols.
Add a layer with a class breaks renderer Create a method to apply a different symbol for each of the five ranges of elevation gain to the Trails feature layer.
Add include statements to access the classes that will be used.
Display_a_map.cpp
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# include "SymbolTypes.h"
# include "UniqueValue.h"
# include <QUrl>
# include "SimpleFillSymbol.h"
# include "UniqueValueRenderer.h"
# include "SimpleLineSymbol.h"
# include <QList>
# include "ClassBreaksRenderer.h"
Add a global QUrl variable for the trails feature service.
Display_a_map.cpp
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
MapQuickView* Display_a_map::mapView () const
{
return m_mapView;
}
QUrl trailsQUrl ( "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trails/FeatureServer/0" ) ;
Add a new method named add Trails Layer()
.
More info A ClassBreak
assigns a symbol to a range of values.
For this example, the renderer uses each feature's ELEV_ GAIN
attribute value to classify it into a defined range (class break) and apply the corresponding symbol.
Display_a_map.cpp
Use dark colors for code blocks
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. 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
void Display_a_map::addTrailsLayer ()
{
FeatureLayer* featureLayer = addFeatureLayer (trailsQUrl);
// Create five line symbols to display class breaks.
SimpleLineSymbol* firstClassSymbol = new SimpleLineSymbol (SimpleLineSymbolStyle::Solid, QColor ( "purple" ), 3 , this );
SimpleLineSymbol* secondClassSymbol = new SimpleLineSymbol (SimpleLineSymbolStyle::Solid, QColor ( "purple" ), 4 , this );
SimpleLineSymbol* thirdClassSymbol = new SimpleLineSymbol (SimpleLineSymbolStyle::Solid, QColor ( "purple" ), 5 , this );
SimpleLineSymbol* fourthClassSymbol = new SimpleLineSymbol (SimpleLineSymbolStyle::Solid, QColor ( "purple" ), 6 , this );
SimpleLineSymbol* fifthClassSymbol = new SimpleLineSymbol (SimpleLineSymbolStyle::Solid, QColor ( "purple" ), 7 , this );
// Create five class breaks.
ClassBreak* firstClassBreak = new ClassBreak ( "Under 500" , "0 - 500" , 0.0 , 500.0 , firstClassSymbol, this );
ClassBreak* secondClassBreak = new ClassBreak ( "501 to 1000" , "501 - 1000" , 501.0 , 1000.0 , secondClassSymbol, this );
ClassBreak* thirdClassBreak = new ClassBreak ( "1001 to 1500" , "1001 - 1500" , 1001.0 , 1500.0 , thirdClassSymbol, this );
ClassBreak* fourthClassBreak = new ClassBreak ( "1501 to 2000" , "1501 - 2000" , 1501.0 , 2000.0 , fourthClassSymbol, this );
ClassBreak* fifthClassBreak = new ClassBreak ( "2001 to 2300" , "2001 to 2300" , 2001.0 , 2300.0 , fifthClassSymbol, this );
QList<ClassBreak*> elevationBreaks = {firstClassBreak, secondClassBreak, thirdClassBreak, fourthClassBreak, fifthClassBreak};
// Create and assign a class breaks renderer to the feature layer.
ClassBreaksRenderer* elevationClassBreaksRenderer = new ClassBreaksRenderer ( "ELEV_GAIN" , elevationBreaks, this );
featureLayer-> setRenderer (elevationClassBreaksRenderer);
// Set the layer opacity to semi-transparent.
featureLayer-> setOpacity ( 0.75 );
}
Update setup Viewpoint()
to call the new add Trails Layer()
method.
Display_a_map.cpp
Expand
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
void Display_a_map::setupViewpoint ()
{
const Point center ( -118.80543 , 34.02700 , SpatialReference::wgs84()) ;
const Viewpoint viewpoint (center, 100000.0 ) ;
m_mapView-> setViewpoint (viewpoint);
addOpenSpaceLayer ();
addTrailsLayer ();
Press <Ctrl+R> to run the app.
When the app opens, the Trails feature layer is added to the map. The map displays trails with different symbols depending on trail elevation.
Add layers that leverage definition expressions You can use a definition expression to define a subset of features to display.
Features that do not meet the expression criteria are not displayed by the layer. In the following steps, you will create two methods that use a definition expression to apply a symbol to a subset of features in the Trails feature layer.
More info FeatureLayer::definitionExpression()
uses a SQL expression to limit the features available for query and display. Your code will create two layers that each display a different subset of trails based on the value for the `USE_BIKE` field. Trails that allow bikes will be symbolized with a blue symbol (`"USE_BIKE = 'Yes'"`) and those that don't will be red (`"USE_BIKE = 'No'"`). Another way to symbolize these features would be to create a
UniqueValueRenderer
that applies a different symbol for these values.
Add the include statement to access the additional class that will be used.
Display_a_map.cpp
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# include "SymbolTypes.h"
# include "UniqueValue.h"
# include <QUrl>
# include "SimpleFillSymbol.h"
# include "UniqueValueRenderer.h"
# include "SimpleLineSymbol.h"
# include <QList>
# include "ClassBreaksRenderer.h"
# include "SimpleRenderer.h"
Add a method named add Bike Only Trails Layer()
with a definition expression to filter for trails that permit bikes.
Display_a_map.cpp
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
void Display_a_map::addBikeOnlyTrailsLayer ()
{
// Create a trails feature layer and add it to the map view.
FeatureLayer* featureLayer = addFeatureLayer (trailsQUrl);
// Write a definition expression to filter for trails that permit the use of bikes.
featureLayer-> setDefinitionExpression ( "USE_BIKE = 'Yes'" );
// Create and assign a simple renderer to the feature layer.
SimpleLineSymbol* bikeTrailSymbol = new SimpleLineSymbol (SimpleLineSymbolStyle::Dot, QColor ( "blue" ), 2 , this );
SimpleRenderer* bikeTrailRenderer = new SimpleRenderer (bikeTrailSymbol, this );
featureLayer-> setRenderer (bikeTrailRenderer);
}
Add another method named add No Bike Trails Layer()
with a definition expression to filter for trails that don't allow bikes.
Display_a_map.cpp
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
void Display_a_map::addNoBikeTrailsLayer ()
{
// Create a trails feature layer and add it to the map view.
FeatureLayer* featureLayer = addFeatureLayer (trailsQUrl);
// Write a definition expression to filter for trails that don't permit the use of bikes.
featureLayer-> setDefinitionExpression ( "USE_BIKE = 'No'" );
// Create and assign a simple renderer to the feature layer.
SimpleLineSymbol* noBikeTrailSymbol = new SimpleLineSymbol (SimpleLineSymbolStyle::Dot, QColor ( "red" ), 2 , this );
SimpleRenderer* noBikeTrailRenderer = new SimpleRenderer (noBikeTrailSymbol, this );
featureLayer-> setRenderer (noBikeTrailRenderer);
}
Update setup Viewpoint()
to call the new add Bike Only Trails Layer()
and add No Bike Trails Layer()
methods.
Display_a_map.cpp
Expand
Use dark colors for code blocks
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
void Display_a_map::setupViewpoint ()
{
const Point center ( -118.80543 , 34.02700 , SpatialReference::wgs84()) ;
const Viewpoint viewpoint (center, 100000.0 ) ;
m_mapView-> setViewpoint (viewpoint);
addOpenSpaceLayer ();
addTrailsLayer ();
addBikeOnlyTrailsLayer ();
addNoBikeTrailsLayer ();
Press <Ctrl+R> to run the app.
When the app opens, two Trails feature layers are added to the map. One shows where bikes are permitted and the other where they are prohibited.
Symbolize a layer with a picture symbol and label features with an attribute Create a method to style trailheads with hiker images and labels for the Trailheads feature layer.
Add the include statement to access the additional classes that will be used.
Display_a_map.cpp
Use dark colors for code blocks