Original User: vinaybansalYes it looks awkward.....But if you look into the printtask.js in ArcGIS Javascript API : This is what ESRI does for map graphics and single graphic layer graphics....Creates layers internally for polygon,polyline,point and multipoint.....and then adds point layer first, then polyline, then polygon and then multipoint to the featurecollection arrays....._createFeatureCollection: function (_2f) {
var _30 = new this._polygonLayer();
var _31 = new this._polylineLayer();
var _32 = new this._pointLayer();
var _33 = new this._multipointLayer();
if (_2f.declaredClass === "esri.layers.FeatureLayer") {
_30.layerDefinition.name = _31.layerDefinition.name = _32.layerDefinition.name = _33.layerDefinition.name = _2f.name || _2f.id;
}
if (_2f.renderer && !_2.isFunction(_2f.renderer.attributeField)) {
_30.layerDefinition.drawingInfo.renderer = _2f.renderer.toJson();
_31.layerDefinition.drawingInfo.renderer = _2f.renderer.toJson();
_32.layerDefinition.drawingInfo.renderer = _2f.renderer.toJson();
_33.layerDefinition.drawingInfo.renderer = _2f.renderer.toJson();
} else {
delete _30.layerDefinition.drawingInfo;
delete _31.layerDefinition.drawingInfo;
delete _32.layerDefinition.drawingInfo;
delete _33.layerDefinition.drawingInfo;
} if (_2f.fields) {
_30.layerDefinition.fields = _2f.fields;
_31.layerDefinition.fields = _2f.fields;
_32.layerDefinition.fields = _2f.fields;
_33.layerDefinition.fields = _2f.fields;
}
var _34, i;
for (i = 0; i < _2f.graphics.length; i++) {
var g = _2f.graphics;
if (g.visible === false || !g.geometry) {
continue;
}
_34 = g.toJson();
if (_34.symbol && _34.symbol.outline && _34.symbol.outline.color && _34.symbol.outline.color[3]) {
_34.symbol.outline.color[3] = 255;
}
if (_2f.renderer && _2.isFunction(_2f.renderer.attributeField) && !_34.symbol) {
_34.symbol = _2f.renderer.getSymbol(g) ? _2f.renderer.getSymbol(g).toJson() : _34.symbol;
}
switch (g.geometry.type) {
case "polygon":
_30.featureSet.features.push(_34);
break;
case "polyline":
_31.featureSet.features.push(_34);
break;
case "point":
_32.featureSet.features.push(_34);
break;
case "multipoint":
_33.featureSet.features.push(_34);
break;
}
}
var _35 = [];
if (_32.featureSet.features.length > 0) {
_35.push(_32);
}
if (_31.featureSet.features.length > 0) {
_35.push(_31);
}
if (_30.featureSet.features.length > 0) {
_35.push(_30);
}
if (_33.featureSet.features.length > 0) {
_35.push(_33);
}
var _36 = {
layers: _35
};
var _37 = {
id: _2f.id,
opacity: _2f.opacity,
minScale: _2f.minScale || 0,
maxScale: _2f.maxScale || 0,
featureCollection: _36
};
return _37;
}
If seperate graphics layers are created then they are added in the order they are created........