You can select features to visually distinguish them with a selection color or highlighting. This can be useful to demonstrate the physical extent or associated attributes of a feature, or to initiate another action such as centering that feature in the scene view.
How to use the sample
Click on a building in the scene layer to select it. Deselect buildings by clicking away from the buildings.
How it works
Create an ArcGISSceneLayer by passing in the URL to a scene layer service.
Use SceneView.mouseClicked signal to get the screen tap location screen point.
Call SceneView.identifyLayer to identify features in the scene that intersect the tapped screen point.
From the resulting IdentifyLayerResult, a list of identified GeoElements are obtained.
Get the first element in the list is obtained and ArcGISSceneLayer.selectFeature(feature) is used to select it.
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
// [WriteFile Name=SceneLayerSelection, Category=Scenes]// [Legal]// Copyright 2018 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 Esri.ArcGISRuntime
Rectangle {
id: rootRectangleclip: truewidth: 800height: 600SceneView {
id: sceneViewanchors.fill: parentComponent.onCompleted: {
// Set the focus on SceneView to initially enable keyboard navigation forceActiveFocus();
}
Scene {
id: sceneBasemap {
initStyle: Enums.BasemapStyleArcGISTopographic
}
// add a scene layerArcGISSceneLayer {
id: sceneLayerurl: "https://tiles.arcgis.com/tiles/P3ePLMYs2RVChkJx/arcgis/rest/services/Buildings_Brest/SceneServer/layers/0" }
// set an initial viewpointViewpointCenter {
Point {
id: initialPointx: -4.49779155626782y: 48.38282454039932z: 62.013264927081764spatialReference: SpatialReference { wkid: 4326 }
}
targetScale: 62.013264927081764Camera {
id: cameralocation: initialPoint
heading: 41.64729875588979pitch: 71.2017391571523roll: 2.194677223e-314 }
}
// add an elevation surfaceSurface {
ArcGISTiledElevationSource {
url: "https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer" }
}
}
// handle the identifyLayerStatusChanged signalonIdentifyLayerStatusChanged: {
if (identifyLayerStatus !== Enums.TaskStatusCompleted)
return;
// get the resultsconst result = sceneView.identifyLayerResult;
const geoElements = result.geoElements;
// get the first GeoElementif (geoElements.length > 0) {
// select the feature sceneLayer.selectFeature(geoElements[0]);
}
}
// when the scene is clicked, identify the clicked feature and select itonMouseClicked: mouse => {
// clear any previous selection sceneLayer.clearSelection();
// identify from the click sceneView.identifyLayer(sceneLayer, mouse.x, mouse.y, 10, false);
}
}
}