Web Developer Work - I
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

29 lines
857 B

import FeatureLayer from '@arcgis/core/layers/FeatureLayer';
import Query from '@arcgis/core/rest/support/Query';
import Graphic from '@arcgis/core/Graphic';
const queryAllFeatures = async (
layer: FeatureLayer,
baseQuery: Partial<Query>,
pageSize = 2000
): Promise<Graphic[]> => {
const allFeatures: Graphic[] = [];
let resultOffset = 0;
let hasMore = true;
while (hasMore) {
const query = layer.createQuery();
Object.assign(query, baseQuery);
(query as any).resultOffset = resultOffset; // ArcGIS supports this, but it's not in TS type
(query as any).resultRecordCount = pageSize;
const result = await layer.queryFeatures(query);
allFeatures.push(...result.features);
hasMore = result.exceededTransferLimit === true;
resultOffset += pageSize;
}
return allFeatures;
};
export default queryAllFeatures;