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"../request.js";import{isNone as r,isSome as t}from"../core/maybe.js";import{normalizeCentralMeridian as s}from"../geometry/support/normalizeUtils.js";import{collectGeometries as o,isInputGeometryZAware as a,fetchServiceDescription as i,dropZValuesOffInputGeometry as n}from"./networkService.js";import{parseUrl as u}from"./utils.js";import{routeParametersToQueryParameters as f}from"./route/utils.js";import p from"./support/RouteSolveResult.js";function c(e){return"esri.rest.support.FeatureSet"===e?.declaredClass}async function l(r,t,p){const l=[],y=[],d={},g={},h=u(r),{path:R}=h;c(t.stops)&&o(t.stops.features,y,"stops.features",d),c(t.pointBarriers)&&o(t.pointBarriers.features,y,"pointBarriers.features",d),c(t.polylineBarriers)&&o(t.polylineBarriers.features,y,"polylineBarriers.features",d),c(t.polygonBarriers)&&o(t.polygonBarriers.features,y,"polygonBarriers.features",d);const v=await s(y);for(const e in d){const r=d[e];l.push(e),g[e]=v.slice(r[0],r[1])}if(a(g,l)){let e=null;try{e=await i(R,t.apiKey,p)}catch{}e&&!e.hasZ&&n(g,l)}for(const e in g)g[e].forEach(((r,s)=>{t.get(e)[s].geometry=r}));const B={...p,query:{...h.query,...f(t),f:"json"}},E=R.endsWith("/solve")?R:`${R}/solve`,{data:T}=await e(E,B);return m(T)}function m(e){const{barriers:s,directionLines:o,directionPoints:a,directions:i,messages:n,polygonBarriers:u,polylineBarriers:f,routes:c,stops:l,traversedEdges:m,traversedJunctions:y,traversedTurns:d}=e,g=e=>{const r=R.find((r=>r.routeName===e));if(t(r))return r;const s={routeId:R.length+1,routeName:e};return R.push(s),s},h=e=>{const r=R.find((r=>r.routeId===e));if(t(r))return r;const s={routeId:e,routeName:null};return R.push(s),s},R=[];c?.features.forEach(((e,r)=>{e.geometry.spatialReference=c.spatialReference;const t=e.attributes.Name,s=r+1;R.push({routeId:s,routeName:t,route:e})})),i?.forEach((e=>{const{routeName:r}=e;g(r).directions=e}));const v=(l?.features.every((e=>r(e.attributes.RouteName)))??!1)&&R.length>0?R[0].routeName:null;return l?.features.forEach((e=>{var r;e.geometry&&((r=e.geometry).spatialReference??(r.spatialReference=l.spatialReference));const t=v??e.attributes.RouteName,s=g(t);s.stops??(s.stops=[]),s.stops.push(e)})),o?.features.forEach((e=>{const r=e.attributes.RouteID,t=h(r),{geometryType:s,spatialReference:a}=o;t.directionLines??(t.directionLines={features:[],geometryType:s,spatialReference:a}),t.directionLines.features.push(e)})),a?.features.forEach((e=>{const r=e.attributes.RouteID,t=h(r),{geometryType:s,spatialReference:o}=a;t.directionPoints??(t.directionPoints={features:[],geometryType:s,spatialReference:o}),t.directionPoints.features.push(e)})),m?.features.forEach((e=>{const r=e.attributes.RouteID,t=h(r),{geometryType:s,spatialReference:o}=m;t.traversedEdges??(t.traversedEdges={features:[],geometryType:s,spatialReference:o}),t.traversedEdges.features.push(e)})),y?.features.forEach((e=>{const r=e.attributes.RouteID,t=h(r),{geometryType:s,spatialReference:o}=y;t.traversedJunctions??(t.traversedJunctions={features:[],geometryType:s,spatialReference:o}),t.traversedJunctions.features.push(e)})),d?.features.forEach((e=>{const r=e.attributes.RouteID,t=h(r);t.traversedTurns??(t.traversedTurns={features:[]}),t.traversedTurns.features.push(e)})),p.fromJSON({routeResults:R,barriers:s,polygonBarriers:u,polylineBarriers:f,messages:n})}export{l as solve};
|