Component and Service Interactions
Components and services have multiple ways of interacting with other components and services.
- When possible, interaction through commands and operations should be preferred, as this introduces the loosest coupling.
- When you need stronger coupling and direct access to a service, then dependency injection can be used to reference services.
If a component or service needs access to the ArcGIS MapView object powering the applications map, it can reference it through an ILayoutModel
.
Interacting with the MapView
Components or services can interact with the MapView
by injecting an ILayoutModel
that takes a MapView
. The actual MapView
needs to be resolved once the map component has loaded, so it's best practice to resolve the ILayoutModel
in the initialization method of the component or service.
note
A layout model is resolved according to the layout hierarchy.
class CustomComponent : ComponentBase
{
private readonly ILayoutModel<MapView> _mapViewResolver;
private MapView _mapView;
public CustomComponent(ILayoutModel<MapView> mapViewResolver)
{
_mapViewResolver = mapViewResolver;
}
protected async override Task DoInitializeAsync()
{
_mapView = await _mapViewResolver.ResolveAsync();
var wkid = _mapView.SpatialReference.Wkid;
...
}
...
}
Relevant SDK Samples
Check out the relevant VertiGIS Studio Mobile SDK Samples: