Ground.js 3.7 KB

12345678910
  1. // All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  2. // See https://js.arcgis.com/4.7/esri/copyright.txt for details.
  3. //>>built
  4. define("require exports ./core/tsSupport/declareExtendsHelper ./core/tsSupport/decorateHelper dojo/_base/lang ./core/Collection ./core/collectionUtils ./core/Error ./core/JSONSupport ./core/Loadable ./core/Logger ./core/promiseUtils ./core/accessorSupport/decorators ./layers/Layer ./layers/support/types".split(" "),function(k,B,t,e,n,u,p,v,w,x,y,h,f,z,A){var l=u.ofType(z),q=y.getLogger("esri.Ground");return function(r){function c(a){var b=r.call(this)||this;b.layers=new l;b.layers.on("after-add",
  5. function(a){a=a.item;a.parent&&a.parent!==b&&"remove"in a.parent&&a.parent.remove(a);a.parent=b;A.isOfType(a,["elevation","base-elevation"])||q.error("Layer '"+a.title+", id:"+a.id+"' of type '"+a.type+"' is not supported as a ground layer and will therefore be ignored. Only layers of type 'elevation' are supported.")});b.layers.on("after-remove",function(a){a.item.parent=null});return b}t(c,r);m=c;c.prototype.initialize=function(){this.when().catch(function(a){q.error("#load()","Failed to load ground",
  6. a)});this.resourceInfo&&this.read(this.resourceInfo.data,this.resourceInfo.context)};c.prototype.normalizeCtorArgs=function(a){a&&"resourceInfo"in a&&(this._set("resourceInfo",a.resourceInfo),a=n.mixin({},a),delete a.resourceInfo);return a};Object.defineProperty(c.prototype,"layers",{set:function(a){this._set("layers",p.referenceSetter(a,this._get("layers"),l))},enumerable:!0,configurable:!0});c.prototype.writeLayers=function(a,b,c,d){var g=[];a&&(d=n.mixin({},d,{layerContainerType:"ground"}),a.forEach(function(a){if(a.write){var b=
  7. {};a.write(b,d)&&g.push(b)}else d&&d.messages&&d.messages.push(new v("layer:unsupported","Layers ("+a.title+", "+a.id+") of type '"+a.declaredClass+"' cannot be persisted in the ground",{layer:a}))}));b.layers=g};c.prototype.load=function(){this.addResolvingPromise(this._loadFromSource());return this.when()};c.prototype.queryElevation=function(a,b){var c=this;return h.create(function(a){return k(["./layers/support/ElevationQuery"],a)}).then(function(d){d=new d.ElevationQuery;var g=c.layers.filter(function(a){return"elevation"===
  8. a.type}).toArray();return d.queryAll(g,a,b)})};c.prototype.createElevationSampler=function(a,b){var c=this;return h.create(function(a){return k(["./layers/support/ElevationQuery"],a)}).then(function(d){d=new d.ElevationQuery;var g=c.layers.filter(function(a){return"elevation"===a.type}).toArray();return d.createSamplerAll(g,a,b)})};c.prototype.clone=function(){var a={resourceInfo:this.resourceInfo,layers:this.layers.slice()};this.loaded&&(a.loadStatus="loaded");return new m(a)};c.prototype.read=function(a,
  9. b){this.resourceInfo||this._set("resourceInfo",{data:a,context:b});return this.inherited(arguments)};c.prototype._loadFromSource=function(){var a=this.resourceInfo;return a?this._loadLayersFromJSON(a.data,a.context):h.resolve(null)};c.prototype._loadLayersFromJSON=function(a,b){var c=this,d=b&&b.origin||"web-scene",g=b&&b.portal||null,f=b&&b.url||null;return h.create(function(a){return k(["./portal/support/layersCreator"],a)}).then(function(b){var e=[];a.layers&&Array.isArray(a.layers)&&e.push.apply(e,
  10. b.populateOperationalLayers(c.layers,a.layers,{context:{origin:d,url:f,portal:g,layerContainerType:"ground"},defaultLayerType:"ArcGISTiledElevationServiceLayer"}));return h.eachAlways(e)}).then(function(){})};e([f.property({type:l,json:{read:!1}}),f.cast(p.castForReferenceSetter)],c.prototype,"layers",null);e([f.writer("layers")],c.prototype,"writeLayers",null);e([f.property({readOnly:!0})],c.prototype,"resourceInfo",void 0);return c=m=e([f.subclass("esri.Ground")],c);var m}(f.declared(w,x))});