A map image layer may contain many sublayers such as different types of roads in a road network or city, county, and state borders in a US map. The user may only be interested in a subset of these sublayers. Or, perhaps showing all of the sublayers would show too much detail. In these cases, you can hide certain sublayers by changing their visibility.
How to use the sample
Each sublayer has a check box which can be used to toggle the visibility of the sublayer.
How it works
Create an ArcGISMapImageLayer object with the URL to a map image service.
Get the ArcGISSublayerListModel with mapImageLayer.mapImageSublayers.
For each layer in the sublayer list, set its visible property to true or false.
Relevant API
ArcGISMapImageLayer
ArcGISSublayerListModel
SubLayerList
Tags
layer, sublayer, visibility
Sample Code
ChangeSublayerVisibility.qml
Use dark colors for code blocksCopy
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
// [WriteFile Name=ChangeSublayerVisibility, Category=Layers]// [Legal]// Copyright 2016 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// http://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.// [Legal]import QtQuick
import QtQuick.Controls
import Esri.ArcGISRuntime
Rectangle {
width: 800height: 600// Create the MapViewMapView {
anchors.fill: parentComponent.onCompleted: {
// Set the focus on MapView to initially enable keyboard navigation forceActiveFocus();
}
// Nest the Map as a child of the MapViewMap {
// Nest the Basemap to add it as the Map's BasemapBasemap {
initStyle: Enums.BasemapStyleArcGISTopographic
}
// Nest an ArcGISMapImage Layer in the Map to add it as an operational layerArcGISMapImageLayer {
id: mapImageLayerurl: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SampleWorldCities/MapServer" }
initialViewpoint: ViewpointCenter {
center: Point {
x: -11e6y: 6e6spatialReference: SpatialReference {wkid: 102100}
}
targetScale: 9e7 }
}
}
// Create a window to display the sublayersRectangle {
id: layerVisibilityRectanchors {
margins: 10left: parent.left
top: parent.top
}
height: 150width: 150color: "transparent"MouseArea {
anchors.fill: parentonClicked: mouse => mouse.accepted = trueonWheel: wheel => wheel.accepted = true }
Rectangle {
anchors.fill: parentwidth: layerVisibilityRect.width
height: layerVisibilityRect.height
color: "lightgrey"opacity: .9radius: 5border {
color: "#4D4D4D"width: 1 }
Column {
anchors {
fill: parentmargins: 10 }
Text {
width: parent.width
text: "Sublayers"wrapMode: Text.WordWrap
clip: truefont {
pointSize: 14bold: true }
}
// Create a list view to display the itemsListView {
id: layerVisibilityListViewanchors.margins: 10width: parent.width
height: parent.height
clip: true// Assign the model to the list model of sublayersmodel: mapImageLayer.mapImageSublayers
// Assign the delegate to the delegate created abovedelegate: Item {
id: layerVisibilityDelegatewidth: parent.width
height: 35Row {
spacing: 5Text {
anchors.verticalCenter: parent.verticalCenter
width: 75text: name
wrapMode: Text.WordWrap
font.pointSize: 14 }
Switch {
anchors.verticalCenter: parent.verticalCenter
checked: sublayerVisible
onCheckedChanged: {
sublayerVisible = checked;
}
}
}
}
}
}
}
}
}