I need to create an app where clients can copy a selection of multiple features and copy those features into another layer. . This collection of features should be added to the target layer as a single feature.
I have seen a way this might work with Web Editor, but we need additional features available in Experience Builder.
I am trying this workflow as described here, using the Survey widget:
This works when selecting a single feature, but I can't find a way to use this to select multiple features and add them to my target layer
Also, when adding a single feature, I can navigate to the source web map and see it there, but it will not appear in the Experience Builder session, unless I refresh the page. Is there a setting in Survey123 I am missing to refresh the data after saving an entry? This would be a dealbreaker if I can't fix it.
EDIT: I edited this post to clarify that the copied features should be added into the target layers as a single feature. I have tried this in Web Editor, but there too I can only select a single feature at a time.
A few notes:
1) Multi-select → copy into another layer (OOTB)
Experience Builder + Survey widget supports one feature per submit. There’s no out-of-the-box bulk “copy selected features to target layer.”
Workarounds:
Append/Copy Features (GP/Analysis) with a WHERE/selection → run from a button; or
Custom ExB widget: read current map selection and call targetLayer.applyEdits({ adds: features }) (strip OBJECTID/GlobalID, handle subtypes/domains, project geometry).
2) Map not updating after Survey submit
In ExB, turn on Data → [your layer] → Auto refresh (set 5–10s while testing).
Or wire a Survey “Record created” → Map/List “Refresh data” action.
Also set the layer’s Refresh interval in the web map before adding to ExB.
Practical path
If you must stay OOTB: use Map Viewer (Editor / Copy to) or an Append task for batches.
If you need ExB UX + batch copy: a small custom widget using applyEdits is the cleanest.
If you want, I can sketch the applyEdits snippet and the message/action wiring so it refreshes instantly after the copy.
hi @VenkataKondepati , thanks for the detailed reply.
I don't think using MapViewer will work for our clients, who are not GIS users and want a more web app style user interface.
I have never created a custom widget. If you can provide a sketch of that, I would appreciate it.
Here’s a minimal “bridge” custom widget for Experience Builder that listens to a List’s selection and adds the selected feature as a stop to a Directions widget (or your own routing service). It’s a sketch you can drop into the ExB developer template and extend.
1) What it does
Subscribes to record selection from a target List.
Reads the selected feature’s geometry + a label.
Pushes it as a stop to your routing logic:
Option A: send a message to an existing Directions widget.
Option B: call your REST route (ArcGIS NA service or your API) and render results.
2) Files (core snippets)
manifest.json
{
"name": "list-to-directions-bridge",
"label": "List → Directions Bridge",
"type": "widget",
"version": "1.0.0",
"exbVersion": "1.14.0",
"author": "You",
"dep": ["jimu-core","jimu-ui","jimu-arcgis"]
}
config.ts
import { ImmutableObject } from 'seamless-immutable';
export interface Config {
listDataSourceId?: string;
directionsWidgetId?: string; // optional: if you want to message an existing Directions widget
autoRoute?: boolean; // call your route API automatically on selection
}
export type IMConfig = ImmutableObject<Config>;
setting.tsx (simple settings panel)
import { React, AllDataSourceTypes, DataSourceSelector } from 'jimu-core';
import { SettingSection, SettingRow } from 'jimu-ui/advanced/setting-components';
import { TextInput, Switch } from 'jimu-ui';
import { IMConfig } from './config';
export default function Setting(props: { config: IMConfig; onSettingChange: any }) {
const { config, onSettingChange } = props;
return (
<>
<SettingSection title="Data source (List)">
<SettingRow>
<DataSourceSelector
types={AllDataSourceTypes.FeatureLayer}
useDataSources={config.listDataSourceId ? [{ dataSourceId: config.listDataSourceId }] : []}
onChange={(useSources) =>
onSettingChange({
config: config.set('listDataSourceId', useSources?.[0]?.dataSourceId)
})
}
/>
</SettingRow>
</SettingSection>
<SettingSection title="Directions target (optional)">
<SettingRow label="Directions widget ID">
<TextInput
value={config.directionsWidgetId || ''}
onChange={(_, v) => onSettingChange({ config: config.set('directionsWidgetId', v) })}
placeholder="(optional) widget_XX"
/>
</SettingRow>
<SettingRow label="Auto-route on select">
<Switch
checked={!!config.autoRoute}
onChange={(_, v) => onSettingChange({ config: config.set('autoRoute', v) })}
/>
</SettingRow>
</SettingSection>
</>
);
}
Please let me know if this helps.
Regards,
Venkat
Hello @VenkataKondepati and thanks again. I am going through your ideas here. I am trying some of the simpler ideas first to see if they work. I will save your code snippet too.
One small thing - when you mention using Map Viewer, I assume you mean to open the map in Web Editor?
Also, regarding "Append/Copy Features (GP/Analysis) with a WHERE/selection → run from a button", are you referring to Experience Builder?
I clarified something in my original post - Ideally I will add the selected multiple collection of features as a single feature into the target layer.
Yes, by Map Viewer I meant the Web Map Editor. And for the append/copy workflow, yes that would typically be built as a custom action or widget in Experience Builder. Your clarification makes sense; grouping selected features into one before appending would need some custom logic.
ok thanks @VenkataKondepati : I did find a way from another post how to create a feature from multiple feature in Web Editor:
1. copy each feature individually
2. then in new layer, select all the features and merge
Thanks again for all your help!
@JasonFitzsimmons Please it would be helpful if you could also create an idea with this request in the Web Editor community? > ArcGIS Web Editor Ideas - Esri Community
All new copy-paste functionality is being built into the Web Editor and will then make it into Experience Builder eventually. Copy multiple and paste as one multi-part feature is something that we support in the Smart Editor widget in Web AppBuilder, and if this is functionality you still require, we should request it as part of the new copy-paste toolkit.
will do` and thanks for your help!