@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 7.23 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import t from"../request.js";import l from"../core/Error.js";import{MultiOriginJSONSupportMixin as r}from"../core/MultiOriginJSONSupport.js";import{replace as o}from"../core/string.js";import{Url as s,ensureTrailingSlash as i,isProtocolRelative as n,normalize as a}from"../core/urlUtils.js";import{property as p,subclass as u}from"../core/accessorSupport/decorators.js";import m from"../geometry/Extent.js";import c from"../geometry/Point.js";import f from"../geometry/SpatialReference.js";import y from"./Layer.js";import{BlendLayer as h}from"./mixins/BlendLayer.js";import{OperationalLayer as d}from"./mixins/OperationalLayer.js";import{PortalLayer as v}from"./mixins/PortalLayer.js";import{RefreshableLayer as w}from"./mixins/RefreshableLayer.js";import{ScaleRangeLayer as g}from"./mixins/ScaleRangeLayer.js";import{createTileBitmap as T}from"./support/imageBitmapUtils.js";import j from"./support/LOD.js";import b from"./support/TileInfo.js";import{WMTSLayerInfo as R}from"./support/WMTSLayerInfo.js";import{reader as S}from"../core/accessorSupport/decorators/reader.js";import{writer as x}from"../core/accessorSupport/decorators/writer.js";var L;let U=L=class extends(h(w(g(d(v(r(y))))))){constructor(...e){super(...e),this.copyright="",this.fullExtent=new m(-20037508.342787,-20037508.34278,20037508.34278,20037508.342787,f.WebMercator),this.legendEnabled=!1,this.isReference=null,this.popupEnabled=!1,this.spatialReference=f.WebMercator,this.subDomains=null,this.tileInfo=new b({size:[256,256],dpi:96,format:"png8",compressionQuality:0,origin:new c({x:-20037508.342787,y:20037508.342787,spatialReference:f.WebMercator}),spatialReference:f.WebMercator,lods:[new j({level:0,scale:591657527.591555,resolution:156543.033928}),new j({level:1,scale:295828763.795777,resolution:78271.5169639999}),new j({level:2,scale:147914381.897889,resolution:39135.7584820001}),new j({level:3,scale:73957190.948944,resolution:19567.8792409999}),new j({level:4,scale:36978595.474472,resolution:9783.93962049996}),new j({level:5,scale:18489297.737236,resolution:4891.96981024998}),new j({level:6,scale:9244648.868618,resolution:2445.98490512499}),new j({level:7,scale:4622324.434309,resolution:1222.99245256249}),new j({level:8,scale:2311162.217155,resolution:611.49622628138}),new j({level:9,scale:1155581.108577,resolution:305.748113140558}),new j({level:10,scale:577790.554289,resolution:152.874056570411}),new j({level:11,scale:288895.277144,resolution:76.4370282850732}),new j({level:12,scale:144447.638572,resolution:38.2185141425366}),new j({level:13,scale:72223.819286,resolution:19.1092570712683}),new j({level:14,scale:36111.909643,resolution:9.55462853563415}),new j({level:15,scale:18055.954822,resolution:4.77731426794937}),new j({level:16,scale:9027.977411,resolution:2.38865713397468}),new j({level:17,scale:4513.988705,resolution:1.19432856685505}),new j({level:18,scale:2256.994353,resolution:.597164283559817}),new j({level:19,scale:1128.497176,resolution:.298582141647617}),new j({level:20,scale:564.248588,resolution:.14929107082380833}),new j({level:21,scale:282.124294,resolution:.07464553541190416}),new j({level:22,scale:141.062147,resolution:.03732276770595208}),new j({level:23,scale:70.5310735,resolution:.01866138385297604})]}),this.type="web-tile",this.urlTemplate=null,this.wmtsInfo=null}normalizeCtorArgs(e,t){return"string"==typeof e?{urlTemplate:e,...t}:e}load(e){const t=this.loadFromPortal({supportedTypes:["WMTS"]},e).then(()=>{let e="";if(this.urlTemplate)if(this.spatialReference.equals(this.tileInfo.spatialReference)){const t=new s(this.urlTemplate);!(!!this.subDomains&&this.subDomains.length>0)&&t.authority?.includes("{subDomain}")&&(e="is missing 'subDomains' property")}else e="spatialReference must match tileInfo.spatialReference";else e="is missing the required 'urlTemplate' property value";if(e)throw new l("web-tile-layer:load",`WebTileLayer (title: '${this.title}', id: '${this.id}') ${e}`)});return this.addResolvingPromise(t),Promise.resolve(this)}get levelValues(){const e=[];if(!this.tileInfo)return null;for(const t of this.tileInfo.lods)e[t.level]=t.levelValue||t.level;return e}get loaded(){return super.loaded}readSpatialReference(e,t){return e||f.fromJSON(t.fullExtent?.spatialReference)}get tileServers(){if(!this.urlTemplate)return null;const e=[],{urlTemplate:t,subDomains:l}=this,r=new s(t),o=r.scheme?r.scheme+"://":"//",n=o+r.authority+"/",a=r.authority;if(a?.includes("{subDomain}")){if(l&&l.length>0&&a.split(".").length>1)for(const s of l)e.push(o+a.replaceAll(/\{subDomain\}/gi,s)+"/")}else e.push(n);return e.map(i)}get urlPath(){if(!this.urlTemplate)return null;const e=this.urlTemplate,t=new s(e),l=(t.scheme?t.scheme+"://":"//")+t.authority+"/";return e.slice(l.length)}readUrlTemplate(e,t){return e||t.templateUrl}writeUrlTemplate(e,t){n(e)&&(e="https:"+e),e&&(e=e.replaceAll(/\{z\}/gi,"{level}").replaceAll(/\{x\}/gi,"{col}").replaceAll(/\{y\}/gi,"{row}"),e=a(e)),t.templateUrl=e}fetchTile(e,l,r,o={}){const{signal:s}=o,i=this.getTileUrl(e,l,r),n={responseType:"image",signal:s,query:{...this.refreshParameters}};return t(i,n).then(e=>e.data)}async fetchImageBitmapTile(e,l,r,o={}){const{signal:s}=o;if(this.fetchTile!==L.prototype.fetchTile){const t=await this.fetchTile(e,l,r,o);return T(t,e,l,r,s)}const i=this.getTileUrl(e,l,r),n={responseType:"blob",signal:s,query:{...this.refreshParameters}},{data:a}=await t(i,n);return T(a,e,l,r,s)}getTileUrl(e,t,l){const{levelValues:r,tileServers:s,urlPath:i}=this;if(!r||!s||!i)return"";const n=r[e];return s[t%s.length]+o(i,{level:n,z:n,col:l,x:l,row:t,y:t})}};e([p({type:String,value:"",json:{write:!0}})],U.prototype,"copyright",void 0),e([p({type:m,json:{write:!0},nonNullable:!0})],U.prototype,"fullExtent",void 0),e([p({readOnly:!0,json:{read:!1,write:!1}})],U.prototype,"legendEnabled",void 0),e([p({type:["show","hide"]})],U.prototype,"listMode",void 0),e([p({json:{read:!0,write:!0}})],U.prototype,"blendMode",void 0),e([p()],U.prototype,"levelValues",null),e([p({type:Boolean,json:{read:!1,write:{enabled:!0,overridePolicy:()=>({enabled:!1})}}})],U.prototype,"isReference",void 0),e([p({type:["WebTiledLayer"],value:"WebTiledLayer"})],U.prototype,"operationalLayerType",void 0),e([p({readOnly:!0,json:{read:!1,write:!1}})],U.prototype,"popupEnabled",void 0),e([p({type:f})],U.prototype,"spatialReference",void 0),e([S("spatialReference",["spatialReference","fullExtent.spatialReference"])],U.prototype,"readSpatialReference",null),e([p({type:[String],json:{write:!0}})],U.prototype,"subDomains",void 0),e([p({type:b,json:{write:!0}})],U.prototype,"tileInfo",void 0),e([p({readOnly:!0})],U.prototype,"tileServers",null),e([p({json:{read:!1}})],U.prototype,"type",void 0),e([p()],U.prototype,"urlPath",null),e([p({type:String,json:{origins:{"portal-item":{read:{source:"url"}}}}})],U.prototype,"urlTemplate",void 0),e([S("urlTemplate",["urlTemplate","templateUrl"])],U.prototype,"readUrlTemplate",null),e([x("urlTemplate",{templateUrl:{type:String}})],U.prototype,"writeUrlTemplate",null),e([p({type:R,json:{write:!0}})],U.prototype,"wmtsInfo",void 0),U=L=e([u("esri.layers.WebTileLayer")],U);export{U as default};