I drew a range on the map, and used query to query which objects are in the geometry, but the result was not very accurate.
// evt.vertices draw-complete
let polygon = new Polygon({
type: "polygon",
rings: evt.vertices,
spatialReference: {
wkid: 3826
}
});
let drawExtent = new Graphic({
geometry: polygon,
symbol: {
type: "polygon-3d",
symbolLayers: [{
type: "fill",
material: {
color: [0, 0, 0, 0]
},
outline: {
color: "red",
width: 1
},
}]
}
});
Promise.all(sceneView.map.allLayers.map(function (view) {
if (view.type === "scene") {
const query = view.createQuery();
query.geometry = drawExtent.geometry;
query.spatialRelationship = "intersects";
query.returnGeometry = true;
return view.queryFeatures(query)
.then(function (result) {
let queryResultLayer = [];
if (result.features.length > 0) {
result.features.forEach(function (item) {
queryResultLayer.push(item.layer.title);
});
}
return queryResultLayer;
});
}
}))
.then(function (results) {
// results
});
});