@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.51 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 r from"../request.js";import{get as e}from"../core/accessorSupport/get.js";import{normalizeCentralMeridian as t}from"../geometry/support/normalizeUtils.js";import{collectGeometries as s,isInputGeometryZAware as i,fetchServiceDescription as o,dropZValuesOffInputGeometry as a}from"./networkService.js";import{parseUrl as n}from"./utils.js";import{closestFacilityParametersToQueryParameters as f}from"./route/utils.js";import p from"./support/ClosestFacilitySolveResult.js";import u from"./support/FeatureSet.js";function l(r){return r instanceof u}async function c(u,c,m){const y=[],j=[],B={},g={},h=n(u),{path:S}=h;l(c.incidents)&&s(c.incidents.features,j,"incidents.features",B),l(c.facilities)&&s(c.facilities.features,j,"facilities.features",B),l(c.pointBarriers)&&s(c.pointBarriers.features,j,"pointBarriers.features",B),l(c.polylineBarriers)&&s(c.polylineBarriers.features,j,"polylineBarriers.features",B),l(c.polygonBarriers)&&s(c.polygonBarriers.features,j,"polygonBarriers.features",B);const d=await t(j);for(const r in B){const e=B[r];y.push(r),g[r]=d.slice(e[0],e[1])}if(i(g,y)){let r=null;try{r=await o(S,c.apiKey,m)}catch{}r&&!r.hasZ&&a(g,y)}for(const r in g)g[r].forEach(((t,s)=>{e(c,r)[s].geometry=t}));const w={...m,query:{...h.query,...f(c),f:"json"}},{data:q}=await r(`${S}/solveClosestFacility`,w);return p.fromJSON(q)}export{c as solve};