Graphic disappears

1526
6
04-04-2013 12:19 PM
EvanKarmazin
New Contributor
When working with server feature editing, the apply edit appears to work. However the graphics that are drawn do not stay on the map if you click else where. The graphic does reappear when I click on it however.

Does anyone have any theories or come across this issue before?
0 Kudos
6 Replies
StephenLead
Regular Contributor III
Can you post your code, or link to your live site?
0 Kudos
EvanKarmazin
New Contributor
dojo.require("esri.map");
            dojo.require("dijit.form.CheckBox");
            dojo.require("dijit.form.HorizontalRule");
            dojo.require("dijit.form.HorizontalRuleLabels");
            dojo.require("dijit.form.HorizontalSlider");
   dojo.require("dijit.form.Slider"); 
            dojo.require("dijit.form.Select");0
            dojo.require("dijit.layout.TabContainer");
            dojo.require("dijit.TitlePane");
            dojo.require("esri.dijit.editing.Editor-all");
            dojo.require("esri.dijit.InfoWindow");
            dojo.require("esri.dijit.Legend");
            dojo.require("esri.dijit.Measurement");
            dojo.require("esri.dijit.Print");
            dojo.require("esri.dijit.Scalebar");
            dojo.require("esri.graphic");
            dojo.require("esri.layers.FeatureLayer");
            dojo.require("esri.layers.graphics");
            dojo.require("esri.layers.wms");
            dojo.require("esri.SnappingManager");
            dojo.require("esri.symbol");
            dojo.require("esri.tasks.identify");
            dojo.require("esri.tasks.PrintTask");
            dojo.require("esri.toolbars.draw");
            dojo.require("esri.toolbars.navigation");
            dojo.require("esri.virtualearth.VETiledLayer");
   
            if (dojo.isIE <= 7) {
                alert("This application is designed for version 8 or above.  Please upgrade you browser.");
            }
            var app = {};
            var toolbar;
            app.map = null;
            app.printer = null;
            var addLayerListener;
   var polygonfeatureLayer, linefeatureLayer, pointfeatureLayer;
   
            require(["dojo/parser", "dojo/ready", "dijit/form/Button", "dijit/layout/ContentPane", "dijit/layout/BorderContainer", "dijit/layout/TabContainer", "dijit/layout/AccordionContainer"],

            function (parser, ready) {
                ready(function () {
                    parser.parse();
                });
            });
             //=====================================================================================================================================================
             //=====================================================================================================================================================      

            function init() {
                var initExtentwgs = new esri.geometry.Extent({
                    "xmin": -9199944.9853,
                    "ymin": 4467222.3562,
                    "xmax": -8651646.412,
                    "ymax": 4959210.1126,
                    "spatialReference": {
                        "wkid": 102100
                    }
                });
                var initExtentWM = esri.geometry.geographicToWebMercator(initExtentwgs);
                var levels = [{
                    "level": 0,
                    "resolution": 156543.03392800014,
                    "scale": 5.91657527591555E8
                }, {
                    "level": 1,
                    "resolution": 78271.51696399994,
                    "scale": 2.95828763795777E8
                }, {
                    "level": 2,
                    "resolution": 39135.75848200009,
                    "scale": 1.47914381897889E8
                }, {
                    "level": 3,
                    "resolution": 19567.87924099992,
                    "scale": 7.3957190948944E7
                }, {
                    "level": 4,
                    "resolution": 9783.93962049996,
                    "scale": 3.6978595474472E7
                }, {
                    "level": 5,
                    "resolution": 4891.96981024998,
                    "scale": 1.8489297737236E7
                }, {
                    "level": 6,
                    "resolution": 2445.98490512499,
                    "scale": 9244648.868618
                }, {
                    "level": 7,
                    "resolution": 1222.992452562495,
                    "scale": 4622324.434309
                }, {
                    "level": 8,
                    "resolution": 611.4962262813797,
                    "scale": 2311162.217155
                }, {
                    "level": 9,
                    "resolution": 305.74811314055756,
                    "scale": 1155581.108577
                }, {
                    "level": 10,
                    "resolution": 152.87405657041106,
                    "scale": 577790.554289
                }, {
                    "level": 11,
                    "resolution": 76.43702828507324,
                    "scale": 288895.277144
                }, {
                    "level": 12,
                    "resolution": 38.21851414253662,
                    "scale": 144447.638572
                }, {
                    "level": 13,
                    "resolution": 19.10925707126831,
                    "scale": 72223.819286
                }, {
                    "level": 14,
                    "resolution": 9.554628535634155,
                    "scale": 36111.909643
                }, {
                    "level": 15,
                    "resolution": 4.77731426794937,
                    "scale": 18055.954822
                }, {
                    "level": 16,
                    "resolution": 2.388657133974685,
                    "scale": 9027.977411
                }, {
                    "level": 17,
                    "resolution": 1.1943285668550503,
                    "scale": 4513.988705
                }, {
                    "level": 18,
                    "resolution": 0.5971642835598172,
                    "scale": 2256.994353
                }];
                app.map = new esri.Map("mapDiv", {
                    wrapAround180: true,
                    extent: initExtentWM,
                    logo: false,
                    lods: levels,
     sliderStyle: "large",
                    fadeOnZoom: true
                });
                require(["dojo/ready", "esri/map", "dojo/dom", "dojo/on", "dep/Switcher"], function (ready, map, dom, on, switcher) {
                    ready(function () {
                        on(app.map, "onLoad", new function () {
                            var switcher = new dep.Switcher({
                                map: app.map,
                                panel_div: "menuDiv"
                            });
                        });
                    });
                });
                
                
               
                esri.config.defaults.geometryService = new esri.tasks.GeometryService("/arcgis/rest/services/Utilities/Geometry/GeometryServer");
                
                
            }

            function startEditing() {
                dojo.connect(app.map, "onLayersAddResult", initEditor);
                var operationsPointLayer = new esri.layers.FeatureLayer("/arcgis/rest/services/app_services/AMLedit/FeatureServer/0", {
                    id: "amlPoints",
                    mode: esri.layers.FeatureLayer.MODE_SELECTION,
                    outFields: ["*"]
                });
                var operationsLineLayer = new esri.layers.FeatureLayer("/arcgis/rest/services/app_services/AMLedit/FeatureServer/1", {
                    id: "amlLines",
                    mode: esri.layers.FeatureLayer.MODE_SELECTION,
                    outFields: ["*"],
                });
                var operationsPolygonLayer = new esri.layers.FeatureLayer("/arcgis/rest/services/app_services/AMLedit/FeatureServer/2", {
                    id: "amlPolygon",
                    mode: esri.layers.FeatureLayer.MODE_SELECTION,
                    outFields: ["*"],
                });
                var operationsProblemsLayer = new esri.layers.FeatureLayer("/arcgis/rest/services/app_services/AMLedit/FeatureServer/3", {
                    id: "amlProblems",
                    mode: esri.layers.FeatureLayer.MODE_SELECTION,
                    outFields: ["*"],
                });
                app.map.addLayers([operationsPointLayer, operationsPolygonLayer, operationsLineLayer, operationsProblemsLayer]);
            }

             
             //=================================================================

            function initEditor(results) {
                var templateLayers = dojo.map(results, function (result) {
                    return result.layer;
                });
                var templatePicker = new esri.dijit.editing.TemplatePicker({
                    featureLayers: templateLayers,
                    rows: "auto",
                    columns: 2
                }, "editorDiv");
                templatePicker.startup();
                var layerInfos = dojo.map(results, function (result) {
                    return {
                        'featureLayer': result.layer
                    };
                });
                var settings = {
                    map: app.map,
                    geometryService: new esri.tasks.GeometryService("/arcgis/rest/services/Utilities/Geometry/GeometryServer"),
                    templatePicker: templatePicker,
                    layerInfos: layerInfos,
                };
                var params = {
                    settings: settings
                };
                editorWidget = new esri.dijit.editing.Editor(params);
                editorWidget.startup();
            }

           
0 Kudos
DianaBenedict
Occasional Contributor III
Do you have a dynamic service layer set up for your "operation" editFeature layers?  See example below:

//create a dynamic service of the featureservice layers so you can refresh the map  
var dynamicLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://myServer/arcgis/rest/services/myEditService/MapServer", { id: "unique_textID1", opacity: 0.8 });   
dynamicLayer .setDisableClientCaching(true);
map.addLayer(dynamicLayer );

//example of your operational layers (edit layers)
var myeditLayer1 =  new esri.layers.FeatureLayer(("http://myServer/arcgis/rest/services/myEditService/FeatureServer/0", { id: "editLayer1"});   

//add code in your applyEdits success
dynamicLayer.refresh()



Of course you will need to figure out the scoping of your variables but that will force a refresh of the DynamicService that is associated with your FeatureService.

Hope that makes sense
0 Kudos
EvanKarmazin
New Contributor
 function startEditing() {
                dojo.connect(app.map, "onLayersAddResult", initEditor);
    
    var dynamicLayer = new esri.layers.ArcGISDynamicMapServiceLayer("/arcgis/rest/services/app_services/AMLedit/MapServer", { id: "unique_textID1", opacity: 0.8 });   
dynamicLayer .setDisableClientCaching(true);
app.map.addLayer(dynamicLayer);
    
                var operationsPointLayer = new esri.layers.FeatureLayer("/arcgis/rest/services/app_services/AMLedit/FeatureServer/0", {
                    id: "amlPoints",
                    mode: esri.layers.FeatureLayer.MODE_SELECTION,
                    outFields: ["*"]
                });
                var operationsLineLayer = new esri.layers.FeatureLayer("/arcgis/rest/services/app_services/AMLedit/FeatureServer/1", {
                    id: "amlLines",
                    mode: esri.layers.FeatureLayer.MODE_SELECTION,
                    outFields: ["*"],
                });
                var operationsPolygonLayer = new esri.layers.FeatureLayer("/arcgis/rest/services/app_services/AMLedit/FeatureServer/2", {
                    id: "amlPolygon",
                    mode: esri.layers.FeatureLayer.MODE_SELECTION,
                    outFields: ["*"],
                });
                var operationsProblemsLayer = new esri.layers.FeatureLayer("/arcgis/rest/services/app_services/AMLedit/FeatureServer/3", {
                    id: "amlProblems",
                    mode: esri.layers.FeatureLayer.MODE_SELECTION,
                    outFields: ["*"],
                });
                app.map.addLayers([operationsPointLayer, operationsPolygonLayer, operationsLineLayer, operationsProblemsLayer]);
    dynamicLayer.refresh;
            }


I updated the code as you suggested and it did fix the issue. Are there reference pages for the scope you had mentioned?
0 Kudos
DianaBenedict
Occasional Contributor III

I updated the code as you suggested and it did fix the issue. Are there reference pages for the scope you had mentioned?


I am not sure I understand your question... I guess what I was referring to was that the layer called myDynamicLayer can be either set as a 'global' variable at the top of your js page or you can just get it when you need it after you have successfully added it to the map via the map.getLayer("unique_textID1"). I tend to use the later since this will eliminate yet another global variable .. but developers usually have preference on how and where they want to create their variables. Hence why I said 'depending on the scoping of your variable ..'

If you use  something like this
var myLayer = map.getLayer("unique_textID1")
myLayer .refresh()

Add this code somewhere in your applyEdits successful events. This means that you might want to hook up an event to handle the refresh when edits are successful.
0 Kudos
Anbazhagananbu
New Contributor
Don't pass the graphics directly for apply edits, just pass the copy of the graphics, so that graphics will not disappear on the map.

example:
   var graphicNew = new esri.Graphic(graphic.geometry);
   featlayer.applyEdits([graphicNew], null, null);

   I hope this will help you.


Anbazhagan Govindan.
0 Kudos