I am attempting to get an application working where editors can click on a point feature and edit a form. I need the form to have a save button that when clicked will apply the edits to the feature.
I am selecting the point/s using an envelope. Is there a way I can tell what feature I need to apply the edits to on my save click event? I would like to store the edits to a feature as fields are changed and then only save the edits to the feature class with the save button.
I am trying to use this example to understand the edit saving and then the feature save. Attribute Inspector
Here is what I am working with right now. I am grabbing the point features within an envelope:
function initEditor() {
var featureLayer = layersFS[1].layer;
var selectQuery = new Query();
map.on("click", function (evt) {
var centerPoint = new esri.geometry.Point
(evt.mapPoint.x, evt.mapPoint.y, evt.mapPoint.spatialReference);
var mapWidth = map.extent.getWidth();
//Divide width in map units by width in pixels
var pixelWidth = mapWidth / map.width;
//Calculate a 10 pixel envelope width (5 pixel tolerance on each side)
var tolerance = 10 * pixelWidth;
//build query filter
query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ["*"];
//Build tolerance envelope and set it as the query geometry
var queryExtent = new esri.geometry.Extent
(1, 1, tolerance, tolerance, evt.mapPoint.spatialReference);
query.geometry = queryExtent.centerAt(centerPoint);
featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (features) {
if (features.length > 0) {
//store the current feature
for (var i = 0; i < features.length; i++) {
updateFeatures.push(features[i]);
}
//map.infoWindow.setTitle(features[0].getLayer().name);
map.infoWindow.show(evt.screenPoint, map.getInfoWindowAnchor(evt.screenPoint));
} else {
map.infoWindow.hide();
}
});
});
Then I am planning to update the specific feature with the save button:
saveButton.on("click", function () {
//need to figure out how to get the current feature with the save click,
//the envelope may return 1 to many records and I need the current feature
updateFeatures.forEach(function(entry) {
updateFeature.getLayer().applyEdits(null, [updateFeature], null);
}
)});
///////Need to apply similar logic as save button click but this will update the current feature in the updateFeatures[]
attInspector.on("attribute-change", function (evt) {
//store the updates to apply when the save button is clicked
updateFeature.attributes[evt.fieldName] = evt.fieldValue;
});
What is the best way to determine what my current feature is in the info window that is being edited?