serviceArea.js 1.7 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.24/esri/copyright.txt for details.
  4. */
  5. import r from"../request.js";import{createQueryParamsHelper as e}from"../core/queryUtils.js";import{normalizeCentralMeridian as t}from"../geometry/support/normalizeUtils.js";import{collectGeometries as i,isInputGeometryZAware as a,fetchServiceDescription as s,dropZValuesOffInputGeometry as o}from"./networkService.js";import{parseUrl as n}from"./utils.js";import u from"./support/ServiceAreaSolveResult.js";const l=e({accumulateAttributes:{name:"accumulateAttributeNames"},attributeParameterValues:!0,defaultBreaks:!0,facilities:!0,outSpatialReference:{name:"outSR",getter:r=>r.outSpatialReference.wkid},pointBarriers:{name:"barriers"},polylineBarriers:!0,polygonBarriers:!0,restrictionAttributes:{name:"restrictionAttributeNames"},returnPointBarriers:{name:"returnBarriers"},travelMode:!0});async function f(e,f,p){const c=[],m=[],y={},B={},g=n(e),{path:S}=g;f.facilities&&f.facilities.features&&i(f.facilities.features,m,"facilities.features",y),f.pointBarriers&&f.pointBarriers.features&&i(f.pointBarriers.features,m,"pointBarriers.features",y),f.polylineBarriers&&f.polylineBarriers.features&&i(f.polylineBarriers.features,m,"polylineBarriers.features",y),f.polygonBarriers&&f.polygonBarriers.features&&i(f.polygonBarriers.features,m,"polygonBarriers.features",y);const j=await t(m);for(const r in y){const e=y[r];c.push(r),B[r]=j.slice(e[0],e[1])}if(a(B,c)){let r=null;try{r=await s(S,f.apiKey,p)}catch{}r&&!r.hasZ&&o(B,c)}for(const r in B)B[r].forEach(((e,t)=>{f.get(r)[t].geometry=e}));const b={...p,query:{...g.query,...l.toQueryParams(f),f:"json"}},{data:v}=await r(`${S}/solveServiceArea`,b);return u.fromJSON(v)}export{f as solve};