@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.76 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import e from"../../request.js";import t from"../../core/Error.js";import{queryAllJSON as r}from"../../layers/support/featureQueryAll.js";import a from"../../portal/PortalItem.js";import o from"../../rest/support/FeatureSet.js";async function n(e,t){const a=e.layers,n=e.layerInfos,l=e.returnGeometry||!1,i=e.outSpatialReference;await Promise.all(a.map((async e=>{await e.load()})));return(await Promise.all(a.map((async e=>{const a=n.find((t=>t.layerUrl===e.parsedUrl?.path));if(!a?.objectIds?.length)return{layer:e,featureSet:void 0};const s=e.createQuery();s.returnGeometry=l,s.outFields=a.outFields||["*"],s.outSpatialReference=i,s.gdbVersion=e.gdbVersion,s.objectIds=a.objectIds,t&&(s.where="1=1");const p=o.fromJSON(await r(e,s));return p.features.forEach((t=>{t.layer=e})),{layer:e,featureSet:p}})))).filter((e=>void 0!==e.featureSet))}async function l(e,t){if("Utility Network Layer"===e){const{default:e}=await import("../UtilityNetwork.js");return new e({layerUrl:t})}return null}async function i(r){let o="portalItem"in r?r:{portalItem:r};!o.portalItem||o.portalItem instanceof a||(o={...o,portalItem:new a(o.portalItem)});const n=o.portalItem;if(await n.load(),"Feature Service"!==n.type)throw new t("portal:unknown-item-type","Unknown item type '${type}'",{type:n.type});const i=n.url,s=await e(i,{responseType:"json",query:{f:"json"}}),p="Network Layer";if(s.data.type?.includes(p))return l(s.data.type,i);if(s.data.layers){const e=s.data.layers.find((e=>e.type.includes(p)));if(e){const t=`${i}/${e.id}`;return l(e.type,t)}}return null}export{n as getFeaturesFromLayers,i as networkFromPortalItem};