7

I use a FeatureLayer created from the featureCollection. I also use esri.dijit.editing.Editor to add a feature to the map. Every time feature has been added to this layer I want to send it to my remote service using rest API. I tried to use FeatureLayer's onEditsComplete event:

<!doctype html>
<html>
 <head>
 <title>...</title>
 <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.2/js/dojo/dijit/themes/claro/claro.css">
 <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.2"></script>
 <script type="text/javascript" language="Javascript">
 dojo.require("esri.map");
 dojo.require("esri.layers.FeatureLayer");
 dojo.require("dijit.form.Button"); 
 dojo.require("esri.dijit.editing.Editor-all");
 var map;
 var startExtent = new esri.geometry.Extent({"xmin":-12505511,"ymin":2230016,"xmax":-3699965,"ymax":8100380,"spatialReference":{"wkid":102100}});
 var featureLayer;
 function init() {
 map = new esri.Map("mapDiv",{ extent: startExtent });
 //create and add new layer
 var layer = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
 map.addLayer(layer);
 var jsonFS = {
 "displayFieldName": "Name",
 "fieldAliases": {
 "Name": "Name"
 },
 "geometryType": "esriGeometryPoint",
 "spatialReference": {
 "wkid": 102100 //WGS_1984_Web_Mercator_Auxiliary_Sphere
 },
 "fields": [{
 "name": "Name",
 "type": "esriFieldTypeOID",
 "alias": "Name"
 }],
 "features": [{
 "attributes": {
 "OBJECTID": "1",
 "Name": "1"
 },
 "geometry": {
 "x": -8919439.31450887,
 "y": 4928270.761925456
 }
 },
 {
 "attributes": {
 "OBJECTID": "2",
 "Name": "2"
 },
 "geometry": {
 "x": -8155495.379532158,
 "y": 5075380.311392084
 }
 }]
 };
 console.log(jsonFS.features);
 var fs = new esri.tasks.FeatureSet(jsonFS);
 var featureCollection = {
 layerDefinition: {
 "geometryType": "esriGeometryPoint",
 "fields": [
 {
 "name": "OBJECTID",
 "type": "esriFieldTypeOID",
 "alias": "OBJECTID"
 },
 {
 "name": "Name",
 "type": "esriFieldTypeString",
 "alias": "Name"
 }
 ]
 },
 featureSet: fs
 };
 featureLayer = new esri.layers.FeatureLayer(featureCollection, {
 mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
 });
 map.addLayer(featureLayer);
 }
 dojo.ready(init);
 function initEditor() {
 if (featureLayer === 'undefined' || featureLayer === null)
 { return; }
 var templatePicker = new esri.dijit.editing.TemplatePicker({
 featureLayers: [featureLayer],
 rows: 'auto',
 groupingEnabled:false,
 columns: 1
 },'editorDiv');
 templatePicker.startup();
 var layerInfos = [{
 'featureLayer': featureLayer,
 'showAttachments':true,
 'showDeleteButton':true,
 'fieldInfos':[
 {'fieldName':'Name','label':'Name'}
 ]
 }]; 
 var settings = {
 map: map,
 enableUndoRedo:true,
 templatePicker: templatePicker,
 layerInfos: layerInfos
 };
 var params = {settings: settings};
 var editorWidget = new esri.dijit.editing.Editor(params);
 editorWidget.startup();
 map.infoWindow.resize(260,215);
 dojo.connect(featureLayer, "onEditsComplete", function(edits, updates, deletes) {
 var a = 5;
 //there I want to send request to the service
 //var xhrArgs = {
 // url: "http://XXXX/add",
 // handleAs: "json",
 // preventCache: true,
 // content: {
 // geometry: "....",
 // text: "...."
 // }
 //};
 //dojo.xhrGet(xhrArgs);
 });
 } 
 </script>
 </head>
 <body class="claro">
 <div id="mapDiv" style="width:900px; height:600px; border:1px solid #000;"></div>
 <div id="editorDiv"></div>
 <button dojoType="dijit.form.Button" onclick="initEditor();">
 Set up editor
 </button>
 </body>
</html>

But it fires before user has entered information in the dialog created when user clicks on the map. So it seems useless. I tried onAddAttachmentComplete event but it never fires. Do you know how to specify that mentioned action shall be done after user entered text in the editor's dialog?

Sam007
4,4337 gold badges52 silver badges71 bronze badges
asked May 4, 2011 at 6:12
2
  • Can you provide some more context on how this all works? What is the dialog you're using? Are you using the editor widget? A more complete code sample or even entire html page would be helpful. Commented May 4, 2011 at 15:48
  • help.arcgis.com/en/webapi/javascript/arcgis/jsapi/… Commented Apr 8, 2013 at 20:18

1 Answer 1

4

It's quiet late, but esri implemented the "graphic-add" event for featureLayers in the API v3.5.
This should finally solve your problem, without workarounds.

See here for further information.

Brad Nesom
17.4k2 gold badges46 silver badges69 bronze badges
answered Aug 8, 2013 at 12:39

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.