closestFacility.js 2.0 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 e from"../request.js";import{createQueryParamsHelper as r}from"../core/queryUtils.js";import{normalizeCentralMeridian as t}from"../geometry/support/normalizeUtils.js";import{collectGeometries as i,isInputGeometryZAware as s,fetchServiceDescription as a,dropZValuesOffInputGeometry as o}from"./networkService.js";import{parseUrl as n}from"./utils.js";import u from"./support/ClosestFacilitySolveResult.js";const l=r({accumulateAttributes:{name:"accumulateAttributeNames"},attributeParameterValues:!0,directionsTimeAttribute:{name:"directionsTimeAttributeName"},impedanceAttribute:{name:"impedanceAttributeName"},facilities:!0,incidents:!0,outSpatialReference:{name:"outSR",getter:e=>e.outSpatialReference.wkid},pointBarriers:{name:"barriers"},polylineBarriers:!0,polygonBarriers:!0,restrictionAttributes:{name:"restrictionAttributeNames"},returnPointBarriers:{name:"returnBarriers"},returnRoutes:{name:"returnCFRoutes"},travelMode:!0});async function c(r,c,m){const f=[],p=[],y={},B={},d=n(r),{path:b}=d;c.incidents&&c.incidents.features&&i(c.incidents.features,p,"incidents.features",y),c.facilities&&c.facilities.features&&i(c.facilities.features,p,"facilities.features",y),c.pointBarriers&&c.pointBarriers.features&&i(c.pointBarriers.features,p,"pointBarriers.features",y),c.polylineBarriers&&c.polylineBarriers.features&&i(c.polylineBarriers.features,p,"polylineBarriers.features",y),c.polygonBarriers&&c.polygonBarriers.features&&i(c.polygonBarriers.features,p,"polygonBarriers.features",y);const g=await t(p);for(const e in y){const r=y[e];f.push(e),B[e]=g.slice(r[0],r[1])}if(s(B,f)){let e=null;try{e=await a(b,c.apiKey,m)}catch{}e&&!e.hasZ&&o(B,f)}for(const e in B)B[e].forEach(((r,t)=>{c.get(e)[t].geometry=r}));const A={...m,query:{...d.query,...l.toQueryParams(c),f:"json"}},{data:j}=await e(`${b}/solveClosestFacility`,A);return u.fromJSON(j)}export{c as solve};