12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.24/esri/copyright.txt for details.
- */
- import e from"../../Color.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import r from"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import a from"../../core/Error.js";import{isSome as s}from"../../core/maybe.js";import t from"../../renderers/support/HeatmapColorStop.js";import{gaussianBlurRadiusPxToKernelDensityRadiusPt as i}from"../../renderers/support/heatmapUtils.js";import{verifyBasicFieldValidity as o,createColors as n,getBasemapInfo as m}from"./support/utils.js";import p from"../statistics/heatmapStatistics.js";import{getFieldsList as l}from"../support/utils.js";import{LayerType as d,createLayerAdapter as u,getLayerTypeLabels as f}from"../support/adapters/support/layerUtils.js";import{cloneScheme as c,getSchemes as h}from"../symbology/heatmap.js";const y=.01;async function b(e){if(!(e&&e.layer&&e.view))throw new a("heatmap-renderer:missing-parameters","'layer' and 'view' parameters are required");const{blurRadius:r,radius:t,minRatio:n,maxRatio:m,fadeToTransparent:p}=e,c={...e};c.radius=null==t?null==r?18:i(r):t,c.minRatio=null==n?.01:n,c.maxRatio=null==m?1:m,c.fadeToTransparent=null==p||p;const h=[d.CSVLayer,d.FeatureLayer,d.OGCFeatureLayer,d.GeoJSONLayer,d.WFSLayer],y=u(c.layer,h);if(c.layer=y,!y)throw new a("heatmap-renderer:invalid-parameters","'layer' must be one of these types: "+f(h).join(", "));const b=s(c.signal)?{signal:c.signal}:null;await y.load(b);const w=await l({field:c.field}),j=o(y,w,"heatmap-renderer:invalid-parameters");if(j)throw j;return c}async function w(e){let r=e.scheme,a=null,t=null;const i=await m(e.basemap,e.view);if(a=s(i.basemapId)?i.basemapId:null,t=s(i.basemapTheme)?i.basemapTheme:null,r)return{scheme:c(r),basemapId:a,basemapTheme:t};const o=h({basemap:a,basemapTheme:t});return o&&(r=o.primaryScheme,a=o.basemapId,t=o.basemapTheme),{scheme:r,basemapId:a,basemapTheme:t}}async function j(a,s){const{fieldOffset:i}=a,{field:o,basemap:m,radius:p,minRatio:l,maxRatio:d,fadeToTransparent:u,heatmapScheme:f,view:h}=s,{scheme:b,basemapId:j,basemapTheme:R}=await w({basemap:m,scheme:f,view:h}),T=b.colors,g=T.length,v=!a.count,S=v?[0,.04]:[a.min,a.max],I=(d-l)/(g-1),x=T[0],C=[new t({ratio:0,color:new e([x.r,x.g,x.b,0])}),new t({ratio:y,color:new e([x.r,x.g,x.b,0])}),new t({ratio:u?l:y,color:x})];n(T,g).forEach(((e,r)=>{C.push(new t({ratio:l+I*r,color:e}))}));const O=new r({radius:p,colorStops:C,field:o,minDensity:S[0],maxDensity:S[1]});return null!=i&&(O.fieldOffset=i),{renderer:O,statistics:a,defaultValuesUsed:v,scheme:c(b),basemapId:j,basemapTheme:R}}async function R(e){const r=await b(e);return j(r.statistics?r.statistics:await p({layer:r.layer,field:r.field,fieldOffset:r.fieldOffset,radius:r.radius,view:r.view,signal:r.signal}),r)}export{R as createRenderer};
|