AnsweredAssumed Answered

Graphics _shape are null after using graphicsUtils.graphicsExtent

Question asked by greenkarmic on Jan 22, 2015
Latest reply on Jan 22, 2015 by greenkarmic



I have a problem when using graphicsUtils.graphicsExtent with an Array that contains a reference to some Graphics of my FeatureLayer.


Here's the code that puts the reference to the graphics that I want in an array, creates an extent for them and then zooms the map with this extent:


                 groupGraphics: null,



                 * Zoom the map for the active contacts
                 * @param {Object} parameters
                 * parameters:
                 * {String} layerId The name of the GraphicsLayer
                 * {String} attributeName
                zoomFeatureGroup: function (parameters) {
                    var graphicsLayer =;
                    this.groupGraphics = [];
                    array.forEach(, lang.hitch(this, function(graphic){
                        if (graphic.attributes[parameters.attributeName] !== this.RendererValue.DEFAULT){

                    var extent = graphicsUtils.graphicsExtent(this.groupGraphics);
          , true);


This by itself works, but afterwards when trying to use something like graphic.getDojoShape().moveToBack() in another function, I noticed that all the graphics in the GraphicsLayer have null _shape property (not just those of my subgroup). This creates the following error in Chrome:


Uncaught TypeError: Cannot read property 'moveToBack' of null MapArcGIS.js:776


This only seems to happen if I do both things: 1) create a sub-array of Graphics and 2) use graphicsUtils.graphicsExtent on them. If I do only one or the other, _shape is fine.


I'm not sure if I'm doing something wrong. Any idea?


Edit: After some further debugging I think that _shape is null whenever the Graphic is not visible on the map. So if I zoom and some Graphics are not visible, if I try to iterate on all Graphics and try to call getDojoShape() on them, it will generate an error for those not visible.


I guess I can protect myself with something like this to prevent JavaScript errors and making the whole site unstable:


if ( graphic.getDojoShape() ){