dbecker88

error: exception in animation handler for: onEnd

Discussion created by dbecker88 on Apr 9, 2012
Latest reply on Aug 14, 2013 by amarsden
In firebug, I get this error when I zoom to the visibility scale of the 'props' layer:

exception in animation handler for: onEnd...?v=2.8 (line 14)
TypeError: _69.color is Null...Legend.xd.js (line 19)


If I remove the props layer from both the map and legend objects, the error is gone.

Here's what I have:

dojo.addOnLoad(init);
var mapLayers = [];
var legendLayers = [];
  
//Function to initialize the map and read data from Configuration file
function init() {
        setupFindTask();
        //asp.net proxy page for token service
        esri.config.defaults.io.proxyUrl = "proxy.ashx";
        //change the location of the map slider
 esri.config.defaults.map.slider = { left:"13px", top:"76px", width:null, height:"150px" };
 //change zoom options to try and get map to display faster
 esri.config.defaults.map.zoomRate = 50;
 esri.config.defaults.map.zoomDuration = 1000;

 dojo.connect(map, "onLoad", mapLoaded);
 dojo.connect(grid1, "onRowClick", onRowClickHandler);

 //lets grab the details from the config.txt file  
 dojo.xhrGet({
        url: "Config.txt",
        handleAs: "json",
        preventCache: true,
        load: function (responseObject, ioArgs) {
                var mapExtent = responseObject.DefaultExtent;
                defaultID = responseObject.defaultID;
  defaultFacName = responseObject.defaultFacName;
  defaultFacCityState = responseObject.defaultFacCityState;                    
     
  var startExtent = new esri.geometry.Extent(parseFloat(zoomExtent[0]), parseFloat(zoomExtent[1]),
                                        parseFloat(zoomExtent[2]), parseFloat(zoomExtent[3]), new esri.SpatialReference({ wkid: 102100}));
     
     
  dojo.byId('imgApp').src = responseObject.ApplicationImage;
                dojo.byId('lblAppName').innerHTML = responseObject.ApplicationName;     
          
         map = new esri.Map("map", { extent: startExtent});     
     
  createBasemapGallery();
  
  dojo.connect(map, "onLoad", MapInitFunction);
                }
 });
}
 
//map layers can be added here
function MapInitFunction(map) {
        var facils = new esri.layers.FeatureLayer("https://mydomain.com/MapServer/0",{
         mode:esri.layers.FeatureLayer.MODE_SNAPSHOT,
  id: 'facils',
         outFields:["*"]
       });
 legendLayers.push({layer:facils,title:"Facilities"});
  
 var bndry = new esri.layers.FeatureLayer("https://mydomain.com/MapServer/3",{
        mode:esri.layers.FeatureLayer.MODE_SNAPSHOT,
  id: 'bndry',
  opacity: 0.7,
         outFields:["*"]
       });
 legendLayers.push({layer:bndry,title:"Boundary"});
  
 var props = new esri.layers.FeatureLayer("https://mydomain.com/MapServer/2",{
        mode:esri.layers.FeatureLayer.MODE_SNAPSHOT,
  id: 'props',
         outFields:["*"]
       });
 legendLayers.push({layer:props,title:"Property Boundaries"});

 dojo.connect(map,'onLayersAddResult',function(results){
  var legend = new esri.dijit.Legend({
   map:map,
                        layerInfos:legendLayers
           },"legendDiv");
                 
                 //when the map extent is changed, refresh legend layers since layerInfos is used in legend constructor
  dojo.connect(map, "onExtentChange", function(){
   legend.refresh();
  });
 legend.startup();
        });

        map.addLayers([bndry,props,facils]);
  
 dojo.connect(map,'onLayersAddResult',function(results){
  //add check boxes
  dojo.forEach(legendLayers,function(layer){
   var layerName = layer.title;
   var checkBox = new dijit.form.CheckBox({
    name: "checkBox" + layer.layer.id,
                      value: layer.layer.id,
                      checked: layer.layer.visible, 
    onChange: function(evt) {
     var clayer = map.getLayer(this.value);
     clayer.setVisibility(!clayer.visible);
     this.checked = clayer.visible;
     }
    });
     
          //add the checkbox and label to the toc
          dojo.place(checkBox.domNode,dojo.byId("toggle"),"after");
          var checkLabel = dojo.create('label',{'for':checkBox.name, innerHTML:layerName},checkBox.domNode,"after");
          dojo.place("<br />",checkLabel,"after");
     
  });
 });
   
}


anyone see this problem before?

edit: The problem seems to start at v2.7; changing to v2.5 or v2.6 there is no error, and everything works fine.

Outcomes