A dynamic composite 3D symbol that changes symbology according to the distance to the camera. More...
|DistanceCompositeSceneSymbol(QObject *parent = nullptr)|
|DistanceSymbolRangeListModel *||ranges() const|
- 10 public functions inherited from Esri::ArcGISRuntime::Symbol
- 3 public functions inherited from Esri::ArcGISRuntime::JsonSerializable
- 31 public functions inherited from QObject
Additional Inherited Members
- 1 property inherited from QObject
- 1 public slot inherited from QObject
- 1 signal inherited from Esri::ArcGISRuntime::Symbol
- 1 signal inherited from Esri::ArcGISRuntime::Object
- 2 signals inherited from QObject
- 1 public variable inherited from QObject
- 1 static public member inherited from Esri::ArcGISRuntime::Symbol
- 10 static public members inherited from QObject
- 9 protected functions inherited from QObject
- 2 protected variables inherited from QObject
A dynamic composite 3D symbol that changes symbology according to the distance to the camera.
Sometimes it is useful to display a single feature (or graphic) using symbology that changes depending upon how far away it is from the Camera. DistanceCompositeSceneSymbol, a type of Symbol, provides this capability in a 3D SceneView.
The DistanceCompositeSceneSymbol contains a list of symbols, each with a distance range at which the symbol is appropriately viewed. To create and populate a DistanceCompositeSceneSymbol, create it using the constructor, then create DistanceSymbolRange objects and append them to ranges. Because ranges is a DistanceSymbolRangeListModel that inherits from QAbstractListModel, you can use it with other Qt Framework classes, such as using it with a QListView to display its content.
A common use for DistanceCompositeSceneSymbol is to display features with increasing visual meaning or detail as the camera gets closer. A aircraft in flight at a great distance could be represented as a point feature, at mid-distance as a cone whose point is oriented toward the direction of flight, or as a detailed 3D aircraft model at close distances. In this scenario, you could define a simple point symbol for distances from 1,000,000 to 60,000 meters, a 3D cone symbol for 59,999 to 5,000 meters, and a 3D model symbol of an aircraft for 4,999 to 0 meters.
You can use varied combinations of symbols with overlapping ranges to create composite symbols whose elements appear and disappear independently as camera distance changes. Composite symbols can provide more information about close-by feature while avoiding clutter caused by displaying the additional information for far-away features. You could expand our previous example by appending to ranges a DistanceSymbolRange object with a text symbol showing the aircraft tail number. By setting the distance range for this text symbol to 40,000 to 0 meters, the label would display with the cone symbol at some camera distances (40,000 to 5,000 meters) and always display with the model symbol. The tail number would not display at all beyond 40,000 meters.
DistanceSymbolRange* dsrModel = new DistanceSymbolRange(mms, 0, 999, this); // ModelSceneSymbol DistanceSymbolRange* dsrCone = new DistanceSymbolRange(smss, 1000, 1999, this); // SimpleMarkerSceneSymbol DistanceSymbolRange* dsrCircle = new DistanceSymbolRange(sms, 2000, 0, this); // SimpleMarkerSymbol DistanceCompositeSceneSymbol* compositeSceneSymbol = new DistanceCompositeSceneSymbol(this); compositeSceneSymbol->ranges()->append(dsrModel); compositeSceneSymbol->ranges()->append(dsrCone); compositeSceneSymbol->ranges()->append(dsrCircle);
Member Function Documentation
DistanceCompositeSceneSymbol::DistanceCompositeSceneSymbol(QObject *parent = nullptr)
Constructor with an optional parent.
DistanceSymbolRangeListModel *DistanceCompositeSceneSymbol::ranges() const
Returns a list model containing the symbol/range combinations in this object.