Skip to main content

Apply Overrides Event

The apply-overrides event provides a mechanism to dynamically and programmatically override configurations (such as layer properties, settings, etc.).

Properties​

PropertyTypeRequiredSummary
layersobjectfalseA mapping of layer IDs to override properties
settingsobjectfalseA mapping of application settings to override
displaySettingsobjectfalseA mapping of display settings to apply

Layer Overrides​

The layers property is a key value pair of layer ID to overrides. Any overrides provided will directly be assigned to the given layer (by ID), if it exists.

Note: if the layer is removed and added again, the overrides will not get applied to the newly added layer.

Overrides can be assigned to all layers by using the * key.

"*": {...overrides...}

Examples​

Apply change by layer ID​

Changes the title for layer with ID 'my-layer'

postMessage(
{
source: 'SAM',
eventName: 'apply-overrides',
data: {
layers: {
'my-layer': {
title: 'New Title'
}
}
}
},
'*'
);

Apply by service URL​

Apply to all layers in a given map service

postMessage(
{
source: 'SAM',
eventName: 'apply-overrides',
data: {
layers: {
// Apply overrides for all layers in this map service
'https://arcgis.rizing.dev/server/YourService/MapServer': {
actionsInfo: {
actions: [
{
title: 'View in SAM',
type: 'nativescript-event',
eventName: 'ShowFeature'
}
]
}
}
}
}
},
'*'
);

Apply by layer URL​

Apply actions to the layer with layer ID 42 in the service YourService.

postMessage(
{
source: 'SAM',
eventName: 'apply-overrides',
data: {
layers: {
// Apply overrides to layer 42 in the given map service.
'https://arcgis.rizing.dev/server/YourService/MapServer/42': {
actionsInfo: {
actions: [
{
title: 'View in SAM',
type: 'native-script-event',
eventName: 'ShowFeature'
}
]
}
}
}
}
},
'*'
);

Apply to all layers​

Using a * will match all layers.

postMessage(
{
source: 'SAM',
eventName: 'apply-overrides',
data: {
layers: {
'*': {
actionsInfo: {
actions: [
{
title: 'View in SAM',
type: 'native-script-event',
eventName: 'ShowFeature'
}
]
}
}
}
}
},
'*'
);

Apply to layers using filter​

Including a $filter field in the layer definition will filter the targeted layers to include only the layers that meet the specified criteria.

postMessage(
{
source: 'SAM',
eventName: 'apply-overrides',
data: {
layers: {
// Will match all layers where the layer has a field named 'SOME_FIELD'.
'*': {
$filter: { hasField: 'SOME_FIELD' },
actionsInfo: {
// $append will append to existing actions rather than overwrite them.
$append: true,
actions: [
{
title: 'View in SAM',
type: 'native-script-event',
eventName: 'ShowFeature'
}
]
}
},
// Will match all layers in the given map service where the layer has a field named 'FIELD2'
'https://arcgis.rizing.dev/server/YourService/MapServer': {
actionsInfo: {
$filter: { hasField: 'FIELD2' },
actions: [
{
title: 'View in SAM',
type: 'nativescript-event',
eventName: 'ShowFeature'
}
]
}
}
}
}
},
'*'
);

Apply application settings​

postMessage(
{
source: 'SAM',
eventName: 'apply-overrides',
data: {
settings: {
coreConfig: {
unitSystem: 'metric'
},
omniConfig: {
showWarnings: false
}
}
}
},
'*'
);

Apply display settings​

See Display Settings documentation for more details.

postMessage(
{
source: 'SAM',
eventName: 'apply-overrides',
data: {
displaySettings: {
toolbar: {
visible: false
},
leftMenu: {
visible: false
},
rightMenu: {
visible: false
}
}
}
},
'*'
);

Apply multiple options​

Example of apply my multiple options at once (ex: layers, settings, display settings).

postMessage(
{
source: 'SAM',
eventName: 'apply-overrides',
data: {
layers: {
'my-layer': {
// Changes layer 'my-layer' title to "New Title"
title: 'New Title'
},
'*': {
// Adds action to all layers.
actionsInfo: {
actions: [
{
title: 'View in SAM',
type: 'native-script-event',
eventName: 'ShowFeature'
}
]
}
}
},
// Sets the app's unit system to "metric"
settings: {
coreConfig: {
unitSystem: 'metric'
}
},
// Hides toolbar, leftMenu, and rightMenu components.
displaySettings: {
toolbar: {
visible: false
},
leftMenu: {
visible: false
},
rightMenu: {
visible: false
}
}
}
},
'*'
);