Overlay¶
Namespace: ThinkGeo.UI.Maui
Provides a base class for map overlays responsible for drawing visual content onto the map view.
public abstract class Overlay : Microsoft.Maui.Controls.AbsoluteLayout, System.ComponentModel.INotifyPropertyChanged, Microsoft.Maui.Controls.Internals.IDynamicResourceHandler, Microsoft.Maui.Controls.IElementDefinition, Microsoft.Maui.Controls.Internals.INameScope, Microsoft.Maui.Controls.IElementController, Microsoft.Maui.IVisualTreeElement, Microsoft.Maui.IElement, Microsoft.Maui.Controls.IEffectControlProvider, Microsoft.Maui.IToolTipElement, Microsoft.Maui.IContextFlyoutElement, Microsoft.Maui.Controls.IControlsElement, Microsoft.Maui.IHandlerDisconnectPolicies, Microsoft.Maui.Controls.StyleSheets.IStyleSelectable, Microsoft.Maui.Controls.Internals.INavigationProxy, Microsoft.Maui.Controls.IAnimatable, Microsoft.Maui.Controls.IVisualElementController, Microsoft.Maui.Controls.IResourcesProvider, Microsoft.Maui.Controls.IStyleElement, Microsoft.Maui.Controls.IFlowDirectionController, Microsoft.Maui.Controls.IPropertyPropagationController, Microsoft.Maui.Controls.IVisualController, Microsoft.Maui.Controls.IWindowController, Microsoft.Maui.IView, Microsoft.Maui.ITransform, Microsoft.Maui.Controls.IControlsVisualElement, Microsoft.Maui.IConstrainedView, Microsoft.Maui.Controls.StyleSheets.IStylable, Microsoft.Maui.Controls.IViewController, Microsoft.Maui.Controls.Internals.IGestureController, Microsoft.Maui.Controls.IGestureRecognizers, Microsoft.Maui.IPropertyMapperView, Microsoft.Maui.HotReload.IHotReloadableView, Microsoft.Maui.IReplaceableView, Microsoft.Maui.Controls.IControlsView, Microsoft.Maui.ILayout, Microsoft.Maui.IContainer, System.Collections.Generic.IList`1[[Microsoft.Maui.IView, Microsoft.Maui, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Collections.Generic.ICollection`1[[Microsoft.Maui.IView, Microsoft.Maui, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Collections.Generic.IEnumerable`1[[Microsoft.Maui.IView, Microsoft.Maui, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Collections.IEnumerable, Microsoft.Maui.ISafeAreaView, Microsoft.Maui.IPadding, Microsoft.Maui.ICrossPlatformLayout, Microsoft.Maui.Controls.IBindableLayout, Microsoft.Maui.Controls.IPaddingElement, Microsoft.Maui.Controls.IInputTransparentContainerElement, Microsoft.Maui.ISafeAreaView2, Microsoft.Maui.ISafeAreaElement, Microsoft.Maui.IAbsoluteLayout, System.IDisposable
Inheritance object → BindableObject → Element → StyleableElement → NavigableElement → VisualElement → View → Layout → AbsoluteLayout → Overlay
Implements INotifyPropertyChanged, IDynamicResourceHandler, IElementDefinition, INameScope, IElementController, IVisualTreeElement, IElement, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IControlsElement, IHandlerDisconnectPolicies, IStyleSelectable, INavigationProxy, IAnimatable, IVisualElementController, IResourcesProvider, IStyleElement, IFlowDirectionController, IPropertyPropagationController, IVisualController, IWindowController, IView, ITransform, IControlsVisualElement, IConstrainedView, IStylable, IViewController, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, IControlsView, ILayout, IContainer, IList<IView>, ICollection<IView>, IEnumerable<IView>, IEnumerable, ISafeAreaView, IPadding, ICrossPlatformLayout, IBindableLayout, IPaddingElement, IInputTransparentContainerElement, ISafeAreaView2, ISafeAreaElement, IAbsoluteLayout, IDisposable
Fields¶
transientNamescope¶
public INameScope transientNamescope;
Properties¶
Name¶
Gets or sets the name of this overlay.
public string Name { get; set; }
Property Value¶
DrawingExceptionMode¶
This property gets and sets the DrawingExceptionMode used when an exception occurs during drawing.
public DrawingExceptionMode DrawingExceptionMode { get; set; }
Property Value¶
DrawingExceptionMode
The drawing exception mode.
IsEmpty¶
This property gets if this overlay is empty or not.
public bool IsEmpty { get; }
Property Value¶
Remarks:
This property enhances the performance of the overlay while drawing. If is true, we will skip drawing this overlay and continue drawing the next overlay.
Children¶
public IList<IView> Children { get; }
Property Value¶
Count¶
public int Count { get; }
Property Value¶
IsReadOnly¶
public bool IsReadOnly { get; }
Property Value¶
Item¶
public IView Item { get; set; }
Property Value¶
IsClippedToBounds¶
public bool IsClippedToBounds { get; set; }
Property Value¶
Padding¶
public Thickness Padding { get; set; }
Property Value¶
SafeAreaEdges¶
public SafeAreaEdges SafeAreaEdges { get; set; }
Property Value¶
IgnoreSafeArea¶
public bool IgnoreSafeArea { get; set; }
Property Value¶
CascadeInputTransparent¶
public bool CascadeInputTransparent { get; set; }
Property Value¶
GestureRecognizers¶
public IList<IGestureRecognizer> GestureRecognizers { get; }
Property Value¶
HorizontalOptions¶
public LayoutOptions HorizontalOptions { get; set; }
Property Value¶
Margin¶
public Thickness Margin { get; set; }
Property Value¶
VerticalOptions¶
public LayoutOptions VerticalOptions { get; set; }
Property Value¶
Visual¶
public IVisual Visual { get; set; }
Property Value¶
FlowDirection¶
public FlowDirection FlowDirection { get; set; }
Property Value¶
Window¶
public Window Window { get; }
Property Value¶
AnchorX¶
public double AnchorX { get; set; }
Property Value¶
AnchorY¶
public double AnchorY { get; set; }
Property Value¶
BackgroundColor¶
public Color BackgroundColor { get; set; }
Property Value¶
Background¶
public Brush Background { get; set; }
Property Value¶
Behaviors¶
public IList<Behavior> Behaviors { get; }
Property Value¶
Bounds¶
public Rect Bounds { get; }
Property Value¶
Height¶
public double Height { get; }
Property Value¶
HeightRequest¶
public double HeightRequest { get; set; }
Property Value¶
InputTransparent¶
public bool InputTransparent { get; set; }
Property Value¶
IsEnabled¶
public bool IsEnabled { get; set; }
Property Value¶
IsFocused¶
public bool IsFocused { get; }
Property Value¶
IsVisible¶
public bool IsVisible { get; set; }
Property Value¶
MinimumHeightRequest¶
public double MinimumHeightRequest { get; set; }
Property Value¶
MinimumWidthRequest¶
public double MinimumWidthRequest { get; set; }
Property Value¶
MaximumHeightRequest¶
public double MaximumHeightRequest { get; set; }
Property Value¶
MaximumWidthRequest¶
public double MaximumWidthRequest { get; set; }
Property Value¶
Opacity¶
public double Opacity { get; set; }
Property Value¶
Rotation¶
public double Rotation { get; set; }
Property Value¶
RotationX¶
public double RotationX { get; set; }
Property Value¶
RotationY¶
public double RotationY { get; set; }
Property Value¶
Scale¶
public double Scale { get; set; }
Property Value¶
ScaleX¶
public double ScaleX { get; set; }
Property Value¶
ScaleY¶
public double ScaleY { get; set; }
Property Value¶
TranslationX¶
public double TranslationX { get; set; }
Property Value¶
TranslationY¶
public double TranslationY { get; set; }
Property Value¶
Triggers¶
public IList<TriggerBase> Triggers { get; }
Property Value¶
Width¶
public double Width { get; }
Property Value¶
WidthRequest¶
public double WidthRequest { get; set; }
Property Value¶
X¶
public double X { get; }
Property Value¶
Y¶
public double Y { get; }
Property Value¶
Clip¶
public Geometry Clip { get; set; }
Property Value¶
Batched¶
public bool Batched { get; }
Property Value¶
DisableLayout¶
public bool DisableLayout { get; set; }
Property Value¶
IsInPlatformLayout¶
public bool IsInPlatformLayout { get; set; }
Property Value¶
IsPlatformStateConsistent¶
public bool IsPlatformStateConsistent { get; set; }
Property Value¶
IsPlatformEnabled¶
public bool IsPlatformEnabled { get; set; }
Property Value¶
Resources¶
public ResourceDictionary Resources { get; set; }
Property Value¶
Frame¶
public Rect Frame { get; set; }
Property Value¶
Handler¶
public IViewHandler Handler { get; set; }
Property Value¶
Shadow¶
public Shadow Shadow { get; set; }
Property Value¶
ZIndex¶
public int ZIndex { get; set; }
Property Value¶
DesiredSize¶
public Size DesiredSize { get; protected set; }
Property Value¶
IsLoaded¶
public bool IsLoaded { get; }
Property Value¶
Navigation¶
public INavigation Navigation { get; internal set; }
Property Value¶
NavigationProxy¶
public NavigationProxy NavigationProxy { get; }
Property Value¶
Style¶
public Style Style { get; set; }
Property Value¶
StyleClass¶
public IList<string> StyleClass { get; set; }
Property Value¶
class¶
public IList<string> class { get; set; }
Property Value¶
AutomationId¶
public string AutomationId { get; set; }
Property Value¶
ClassId¶
public string ClassId { get; set; }
Property Value¶
Effects¶
public IList<Effect> Effects { get; }
Property Value¶
Id¶
public Guid Id { get; }
Property Value¶
StyleId¶
public string StyleId { get; set; }
Property Value¶
LogicalChildren¶
public ReadOnlyCollection<Element> LogicalChildren { get; }
Property Value¶
RealParent¶
public Element RealParent { get; }
Property Value¶
Parent¶
public Element Parent { get; set; }
Property Value¶
EffectControlProvider¶
public IEffectControlProvider EffectControlProvider { get; set; }
Property Value¶
Handler¶
public IElementHandler Handler { get; set; }
Property Value¶
Dispatcher¶
public IDispatcher Dispatcher { get; }
Property Value¶
BindingContext¶
public object BindingContext { get; set; }
Property Value¶
Methods¶
RefreshAsync(CancellationToken)¶
This method refreshes all the content in the Canvas. For example, LayerOverlay with multiple tiles; when the style of one layer is changed, call Refresh to refresh all the tiles to accept new styles.
public Task RefreshAsync(CancellationToken cancellationToken)
Parameters¶
cancellationToken CancellationToken
Returns¶
Remarks:
The difference from Draw() method is that Refresh() method refreshes all the elements while Draw() does not.
RefreshAsyncCore(CancellationToken)¶
This method refreshes all the content in the Canvas. For example, LayerOverlay with multiple tiles; when the style of one layer is changed, call Refresh to refresh all the tiles to accept new styles.
protected Task RefreshAsyncCore(CancellationToken cancellationToken)
Parameters¶
cancellationToken CancellationToken
Returns¶
Remarks:
The difference from Draw() method is that Refresh() method refreshes all the elements while Draw() does not.
OpenAsync(IMapView, CancellationToken)¶
Opens the overlay and prepares it for drawing within the specified map view.
public Task OpenAsync(IMapView mapView, CancellationToken cancellationToken)
Parameters¶
mapView IMapView
The map view that hosts the overlay.
cancellationToken CancellationToken
The token used to observe cancellation requests.
Returns¶
OpenAsyncCore(IMapView, CancellationToken)¶
Performs provider-specific initialization when the overlay is opened.
protected Task OpenAsyncCore(IMapView mapView, CancellationToken cancellationToken)
Parameters¶
mapView IMapView
The map view that hosts the overlay.
cancellationToken CancellationToken
The token used to observe cancellation requests.
Returns¶
CloseAsync(CancellationToken)¶
Closes the overlay and releases resources associated with drawing.
public Task CloseAsync(CancellationToken cancellationToken)
Parameters¶
cancellationToken CancellationToken
The token used to observe cancellation requests.
Returns¶
CloseAsyncCore(CancellationToken)¶
Performs provider-specific cleanup when the overlay is closed.
protected Task CloseAsyncCore(CancellationToken cancellationToken)
Parameters¶
cancellationToken CancellationToken
The token used to observe cancellation requests.
Returns¶
DrawAsync(OverlayRefreshType, CancellationToken)¶
This method draws the overlay with the provided extent in world coordinate.
public Task DrawAsync(OverlayRefreshType refreshType, CancellationToken cancellationToken)
Parameters¶
refreshType OverlayRefreshType
This parameter indicates whether the elements of this overlay needs to be refreshed.
For example, TileOverlay is formed by tiles.
When panning the map around, the existing tile doesn't need to be redrawn,
the only thing we need to do is modifying the position of these tiles.
On another hand, when click to change the style of the overlay,
we need to redraw the tile images to change the appearance. So we need refresh mode.
cancellationToken CancellationToken
The token to monitor the cancellation requests.
Returns¶
DrawAsyncCore(OverlayRefreshType, CancellationToken)¶
This method draws the overlay with the provided extent in world coordinate.
protected abstract Task DrawAsyncCore(OverlayRefreshType refreshType, CancellationToken cancellationToken)
Parameters¶
refreshType OverlayRefreshType
This parameter indicates whether the elements of this overlay needs to be refreshed.
For example, TileOverlay is formed by tiles.
When panning the map around, the existing tile doesn't need to be redrawn,
the only thing we need to do is modifying the position of these tiles.
On another hand, when click to change the style of the overlay,
we need to redraw the tile images to change the appearance. So we need refresh mode.
cancellationToken CancellationToken
The cancellation token for this Async method.
Returns¶
DrawWithoutPostingAsync(OverlayRefreshType, CancellationToken)¶
This method draws the overlay without posting the result to the map, PostAsync needs to be called after it.
public Task DrawWithoutPostingAsync(OverlayRefreshType refreshType, CancellationToken cancellationToken)
Parameters¶
refreshType OverlayRefreshType
This parameter indicates whether the elements of this overlay needs to be refreshed.
For example, TileOverlay is formed by tiles.
When panning the map around, the existing tile doesn't need to be redrawn,
the only thing we need to do is modifying the position of these tiles.
On another hand, when click to change the style of the overlay,
we need to redraw the tile images to change the appearance. So we need refresh mode.
cancellationToken CancellationToken
The cancellation token for this Async method.
Returns¶
DrawWithoutPostingAsyncCore(OverlayRefreshType, CancellationToken)¶
This method draws the overlay without posting the result to the map, PostAsync needs to be called after it.
protected Task DrawWithoutPostingAsyncCore(OverlayRefreshType refreshType, CancellationToken cancellationToken)
Parameters¶
refreshType OverlayRefreshType
This parameter indicates whether the elements of this overlay needs to be refreshed.
For example, TileOverlay is formed by tiles.
When panning the map around, the existing tile doesn't need to be redrawn,
the only thing we need to do is modifying the position of these tiles.
On another hand, when click to change the style of the overlay,
we need to redraw the tile images to change the appearance. So we need refresh mode.
cancellationToken CancellationToken
The cancellation token for this Async method.
Returns¶
JUg=(CancellationToken)¶
internal Task JUg=(CancellationToken cancellationToken)
Parameters¶
cancellationToken CancellationToken
Returns¶
PostAsyncCore(CancellationToken)¶
Post the drawn image to the overlay
protected Task PostAsyncCore(CancellationToken cancellationToken)
Parameters¶
cancellationToken CancellationToken
The token to monitor the cancellation requests.
Returns¶
Transform(RectangleShape, IMapView)¶
This method will simulate the PostTransform interaction.
public void Transform(RectangleShape extent, IMapView mapView)
Parameters¶
extent RectangleShape
This parameter maintains the target extent of the transformation.
mapView IMapView
This parameter maintains current map information for calculating mechanism.
Returns¶
TransformCore(RectangleShape, IMapView)¶
This protected virtual method is the Core method of PostTransform API.
protected void TransformCore(RectangleShape extent, IMapView mapView)
Parameters¶
extent RectangleShape
This parameter maintains the target extent of the transformation.
mapView IMapView
The mapView this overlay is added to
Returns¶
GetBoundingBox()¶
This method gets a bounding box of the Overlay.
public RectangleShape GetBoundingBox()
Returns¶
RectangleShape
A RectangleShape indicating the bounding box of this overlay
Remarks:
This method is the concrete wrapper for the abstract method GetBoundingBoxCore. This method returns the bounding box of the Overlay.
As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework.
GetBoundingBoxCore()¶
This method returns the bounding box of the Overlay.
protected RectangleShape GetBoundingBoxCore()
Returns¶
RectangleShape
This method returns the bounding box of the Overlay.
Remarks:
This method returns the bounding box of the Overlay.
OnDrawing(DrawingOverlayEventArgs)¶
This method raises before the overlay is drawing.
protected void OnDrawing(DrawingOverlayEventArgs e)
Parameters¶
e DrawingOverlayEventArgs
This parameter is the event argument for Drawing event.
Returns¶
OnDrawn(DrawnOverlayEventArgs)¶
This method raises after the overlay is drawn.
protected void OnDrawn(DrawnOverlayEventArgs e)
Parameters¶
e DrawnOverlayEventArgs
This parameter is the event argument for Drawn event.
Returns¶
Dispose()¶
Releases the resources used by the overlay.
public void Dispose()
Returns¶
Dispose(bool)¶
Releases the unmanaged resources used by the overlay and, optionally, the managed resources.
protected void Dispose(bool disposing)
Parameters¶
disposing bool
true to release both managed and unmanaged resources; false to release only unmanaged resources.
Returns¶
Finalize()¶
Overlay destructor.
protected void Finalize()
Returns¶
Events¶
Drawing¶
This event raises before the overlay is drawing.
public event EventHandler<DrawingOverlayEventArgs> Drawing;
Drawn¶
This event raises after the overlay is drawn.
public event EventHandler<DrawnOverlayEventArgs> Drawn;
ChildrenReordered¶
public event EventHandler ChildrenReordered;
Focused¶
public event EventHandler<FocusEventArgs> Focused;
MeasureInvalidated¶
public event EventHandler MeasureInvalidated;
SizeChanged¶
public event EventHandler SizeChanged;
Unfocused¶
public event EventHandler<FocusEventArgs> Unfocused;
BatchCommitted¶
public event EventHandler<EventArg<VisualElement>> BatchCommitted;
FocusChangeRequested¶
public event EventHandler<FocusRequestArgs> FocusChangeRequested;
Loaded¶
public event EventHandler Loaded;
Unloaded¶
public event EventHandler Unloaded;
ChildAdded¶
public event EventHandler<ElementEventArgs> ChildAdded;
ChildRemoved¶
public event EventHandler<ElementEventArgs> ChildRemoved;
DescendantAdded¶
public event EventHandler<ElementEventArgs> DescendantAdded;
DescendantRemoved¶
public event EventHandler<ElementEventArgs> DescendantRemoved;
ParentChanging¶
public event EventHandler<ParentChangingEventArgs> ParentChanging;
ParentChanged¶
public event EventHandler ParentChanged;
HandlerChanging¶
public event EventHandler<HandlerChangingEventArgs> HandlerChanging;
HandlerChanged¶
public event EventHandler HandlerChanged;
PropertyChanged¶
public event PropertyChangedEventHandler PropertyChanged;
PropertyChanging¶
public event PropertyChangingEventHandler PropertyChanging;
BindingContextChanged¶
public event EventHandler BindingContextChanged;