Skip To Content ArcGIS for Developers Sign In Dashboard

DistanceCompositeSceneSymbol QML Type

A dynamic composite 3D symbol that changes symbology according to the distance to the camera. More...

Import Statement: import Esri.ArcGISRuntime 100.6
Since: Esri.ArcGISRuntime 100.0
Inherits:

Symbol

Properties

  • ranges : DistanceSymbolRangeListModel

Signals

Detailed Description

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 types, such as using it with a ListView 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.

Default properties

TypeDefault Property
list<DistanceSymbolRange>A list of symbol/range data to append to this object.

Example:

Create a DistanceCompositeSceneSymbol that consists of a SimpleMarkerSymbol, a SceneSymbol, and a ModelSceneSymbol.

DistanceCompositeSceneSymbol {
    id: distanceCompositeSceneSymbol

    // create a distance symbol range with a model scene symbol
    DistanceSymbolRange {
        minDistance: 0
        maxDistance: 999

        ModelSceneSymbol {
            id: mms
            url: dataPath + "3D/Bristol/Collada/Bristol.dae"
            scale: 5.0
            heading: 180
        }
    }

    // create a distance symbol range with a simple marker scene symbol
    DistanceSymbolRange {
        minDistance: 1000
        maxDistance: 1999

        SimpleMarkerSceneSymbol {
            style: Enums.SimpleMarkerSceneSymbolStyleCone
            color: "red"
            height: 75
            width: 75
            depth: 75
        }
    }

    // create a distance symbol range with a simple marker symbol
    DistanceSymbolRange {
        minDistance: 2000
        maxDistance: 0

        SimpleMarkerSymbol {
            style: Enums.SimpleMarkerSymbolStyleCircle
            color: "red"
            size: 10
        }
    }
}

See also JsonSerializable.

Property Documentation

[default] ranges : DistanceSymbolRangeListModel

Returns a collection of distance symbol ranges for the distance composite scene symbol (read-only).

The DistanceSymbolRangeListModel will contain a list model of all the distance symbol ranges defined in the distance composite scene symbol.


Signal Documentation

rangesChanged()

Emitted when the ranges property changes.



Feedback on this topic?