An end-user performing a survey may want to add features to the map during the course of their work.
How to use the sample
Click on a location on the map to add a feature at that location.
How it works
A Feature is added to a ServiceFeatureTable which then pushes that new feature to the server.
Create a ServiceFeatureTable from a URL.
Create a FeatureLayer from the service feature table.
Create a Feature with attributes and a location using createFeature().
Add the feature to the table using addFeature.
Update the table on the server using applyEdits().
Relevant API
Feature
FeatureEditResult
FeatureLayer
ServiceFeatureTable
Tags
edit, feature, online service
Sample Code
AddFeaturesFeatureService.qml
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// [WriteFile Name=AddFeaturesFeatureService, Category=EditData]// [Legal]// Copyright 2016 Esri.// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at// http://www.apache.org/licenses/LICENSE-2.0// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.// [Legal]import QtQuick
import QtQuick.Controls
import Esri.ArcGISRuntime
Rectangle {
width: 800height: 600// Create MapView that contains a MapMapView {
id: mapViewanchors.fill: parentwrapAroundMode: Enums.WrapAroundModeDisabled
Component.onCompleted: {
// Set the focus on MapView to initially enable keyboard navigation forceActiveFocus();
}
Map {
// Set the initial basemap to StreetsBasemap {
initStyle: Enums.BasemapStyleArcGISStreets
}
// set initial viewpoint to The United StatesViewpointCenter {
Point {
x: -10800000y: 4500000spatialReference: SpatialReference {
wkid: 102100 }
}
targetScale: 3e7 }
FeatureLayer {
id: featureLayer// declare as child of feature layer, as featureTable is the default propertyServiceFeatureTable {
id: featureTableurl: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/DamageAssessment/FeatureServer/0"// make sure edits are successfully applied to the serviceonApplyEditsStatusChanged: {
if (applyEditsStatus === Enums.TaskStatusCompleted) {
console.log("successfully added feature");
}
}
// signal handler for the asynchronous addFeature methodonAddFeatureStatusChanged: {
if (addFeatureStatus === Enums.TaskStatusCompleted) {
// apply the edits to the service featureTable.applyEdits();
}
}
}
}
}
//! [AddFeaturesFeatureService new feature at mouse click]onMouseClicked: mouse => { // mouseClicked came from the MapView// create attributes json for the new featureconst featureAttributes = {"typdamage" : "Minor", "primcause" : "Earthquake"};
// create a new feature using the mouse's map pointconst feature = featureTable.createFeatureWithAttributes(featureAttributes, mouse.mapPoint);
// add the new feature to the feature table featureTable.addFeature(feature);
}
//! [AddFeaturesFeatureService new feature at mouse click] }
}