Set or get the density painting settings on this painter. Use null
to disable density painting.
colorMap
, the color map
used to map density values to color.
The density at a particular location is the sum of the value of alpha channel for all overlapping objects. So for
a single opaque object you would get a density value of 1.0, for 2 opaque objects 2.0, etc.
var painter = new FeaturePainter();
painter.paintBody = ... // customize painter as usual
painter.density = {
colorMap: ColorMap.createGradientColorMap([
{level: 0, color: "rgba( 0, 0, 0, 0.0)"}, // no objects -> Transparent
{level: 1, color: "rgba( 0, 255, 0, 0.5)"}, // 1 opaque object -> Transparent green
{level: 10, color: "rgba(255, 255, 255, 1.0)"} //10 opaque objects -> White
])
};
Notes when using density painting:
Returns an array of map scales that determine when this painter should switch from one level-of-detail to the next.
This can be used to advertise that this painter supports multiple level-of-details for a given object. The current
level-of-detail that is used is determined by the map and is passed back to this FeaturePainter via the state.level
property that is passed to the paint methods.
The default implementation of this method returns null
indicating the level-of-detail is not supported.
Optional
layer: FeatureLayerthe layer for which the detail level scales are being requested
Optional
map: Mapthe map for which the detail level scales are being requested
the switch scales for each level of detail
A visual example of the relation between the scale switching points and the paint levels. The example uses 3 different switching scales, hence resulting with 4 paint levels.
// Scale: 1 : 100 000 1 : 10 000 1 : 1000
// (zoomed out) -------- | ----------------- | ----------------- | -------- (zoomed in)
// level 0 | level 1 | level 2 | level 3
getDetailLevelScales(): number[] {
return [1 / 100000, 1 / 10000, 1 / 1000];
}
Returns IconStyle for this style that corresponds to KML style associated with KMLPlacemarkFeature. This method is used by paintBody() to get a style for a point shape.
KML placemark feature
an object describing the current paint state. If PaintState.selected or PaintState.hovered is true, then the icon style is returned based on the KML 'highlight' style, otherwise the KML regular style is used.
icon style, or null if the feature is not an instance of KMLPlacemarkFeature or if the KML icon style is not defined.
Returns ShapeStyle that corresponds to KML style associated with KMLPlacemarkFeature,
or null
if the feature is not an instance of KMLPlacemarkFeature.
This method is used by paintBody() to get a style for a non-point shape.
KML placemark feature
an object describing the current paint state. If PaintState.selected or PaintState.hovered is true, then the shape style is returned based on the KML 'highlight' style, otherwise the KML regular style is used.
LuciadRIA ShapeStyle or null, if the feature is not an instance of KMLPlacemarkFeature.
Invalidates this painter for a specific feature. Call this method when any state that determines the rendering of
a specific feature has been changed. Calling this method refreshes this FeaturePainter
's
layer and guarantees that
() and
()
will be called for the given feature during the next map render.
the model feature whose representation has changed
Invalidates this painter for all objects. Call this method when any state that determines the rendering of
objects has been changed. Calling this method refreshes the FeaturePainter
's
layer and guarantees that
() and
() will be called for all objects in
the layer during the next map render.
Invalidates this painter for a specific object by id. Call this method when any state that determines the rendering of
a specific object has been changed. Calling this method refreshes this FeaturePainter
's
layer and guarantees that
() and
()
will be called for the given object during the next map render.
The id of the feature. It corresponds to Feature.id.
The method which allows you to describe how a model object has to be visualized on the map.
The paintBody method will be invoked by the map once for every (feature,paintState)
tuple. The results
of the paint method may be cached which will result in the paint method being called only once. If the results
of a paint method become invalid, implementation must invoke one of the invalidate
methods on
themselves.
paintBody method is allowed to render differently depending on the values of the paintState
parameter.
Currently the following state is supported:
the render target
the feature that is being rendered
the shape to render
the layer containing the given feature
the map containing the layer
an object describing the current paint state
Optional
paintThe method to describe how a model object has to be visualized in bottom and left border of the vertical view map. The map must first be configured with axis.
Only the bottom border decorations are painted by default. The Left border decorations must be enabled explicitly on the layer using LEFT_BORDER_BODY paint representation.
This is an optional method.
the render target
the feature that is being rendered
the shape to render
the layer containing the given feature
the map containing the layer
an object describing the current paint state
Optional
paintThe method to describe how a model object has to be labeled on the bottom and left border of the vertical view map.
Only the bottom border labels are painted by default. The Left border labels must be enabled explicitly on the layer using LEFT_BORDER_LABEL paint representation.
This is an optional method.
the render target
the feature that is being rendered
the shape to render
the layer containing the given feature
the map containing the layer
an object describing the current paint state
The method which allows you to describe how a model object should be labeled on the map.
The paintLabel method will be invoked by the map once for every (feature,paintState)
tuple. The results
of the paint method may be cached which will result in the paint method being called only once. If the results
of a paint method become invalid, implementation must invoke one of the invalidate
methods on
themselves.
paintLabel method is allowed to render differently depending on the values of the paintState
parameter.
Currently the following state is supported:
the render target
the feature that is being rendered
the shape to render
the layer containing the given feature
the map containing the layer
an object describing the current paint state
Registers a callback function for the "InvalidateAll" event, that notifies a listener that the all features are invalidated.
Always set to "InvalidateAll" for this event type.
The callback function to be executed when the event is emitted
Optional
context: anyThe context in which the function should be invoked.
"InvalidateAll"
2020.1
Registers a callback function for the "Invalidate" event, that notifies a listener that a given feature is invalidated.
Always set to "Invalidate" for this event type.
The callback function to be executed when the event is emitted
Optional
context: anyThe context in which the function should be invoked.
"Invalidate"
2020.1
Registers a callback function for the "InvalidateById" event, that notifies a listener that a feature with the given id is invalidated.
Always set to "InvalidateById" for this event type.
The callback function to be executed when the event is emitted
Optional
context: anyThe context in which the function should be invoked.
"InvalidateById"
2020.1
An object that determines how KMLPlacemarkFeature objects are visualized in a KMLLayer. The KML painter can be extended to provide a custom implementation of drawing KML placemark features.
Example on how to extend KMLPainter to placemarks with the bloom style on hover.
Since
2023.1