@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.12 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{clone as m}from"../../core/lang.js";import{getExtent as e}from"./SDFHelper.js";import{CIMEffectHelper as r}from"./effects/CIMEffectHelper.js";const a=.01;function t(t,f){if(!t.frame)return t;const{markerGraphics:n}=t;if(!n||0===n.length)return t;let o=0,s=0,i=0,c=0;for(const m of n){const{geometry:a,symbol:t}=m;if(!a||!t||!("symbolLayers"in t))continue;const{symbolLayers:n}=t;if(n)for(const m of n){const{effects:t}=m,n=r.applyEffects(t,a,f),x=e(n);x&&(o=Math.min(o,x[0]),s=Math.min(s,x[1]),i=Math.max(i,x[2]),c=Math.max(c,x[3]))}}const{xmin:x,ymin:y,xmax:p,ymax:h}=t.frame,l=(p-x)/2,M=(h-y)/2,u=(p+x)/2,b=(h+y)/2;if(l<=0||M<=0)return t;const g=(u-o)/l,j=(i-u)/l,E=(b-s)/M,F=(c-b)/M,H=Math.max(Math.max(g,j),Math.max(E,F));return H<=1+a?t:(t=m(t)).frame?(t.frame.xmin=(t.frame.xmin-u)*H+u,t.frame.ymin=(t.frame.ymin-b)*H+b,t.frame.xmax=(t.frame.xmax-u)*H+u,t.frame.ymax=(t.frame.ymax-b)*H+b,!1!==t.respectFrame&&(t.size*=H),t):t}export{t as fitVectorMarker};