Good Day
Thanks for the reply, I'm using a Hosted Feature Layer, please see this more complete example:
addGISFeatureAttributes(layer: FeatureLayer) {
return new Promise((r) => {
console.time('correlationLook10k');
this.queryAllFeatures(layer).then((features: Graphic[]) => {
this.grabData().then(() => {
features.forEach((feature, idx) => {
const matchedFeature =
this.data.find(d => d.x === feature.attributes.x)
if (matchedFeature) {
const value1 =
matchedFeature?.find(m => m.type === 'v1').value ?? 0;
const value2 =
matchedFeature?.find(m => m.type === 'v1').value ?? 0;
const value3 =
matchedFeature?.find(m => m.type === 'v1').value ?? 0;
feature.setAttribute('v1', Number(value1));
feature.setAttribute('v2', Number(value2));
feature.setAttribute('v3', Number(value3));
feature.attributes.v4 = Number(value3);
}
})
layer.applyEdits({updateFeatures: features}).then((updateResults) => {
console.log('Update Results');
console.log(updateResults);
const query = {
where: '1=1',
outFields:['*'],
returnGeometry: true,
maxRecordCountFactor: 5
}
const objectIds = [];
updateResults.updateFeatureResults.forEach((item) => {
objectIds.push(item.objectId);
});
console.log('Object Ids');
console.log(objectIds);
layer.queryFeatures(query).then((results) => {
console.log(results.features.length, "features have been added.");
console.timeEnd('correlationLook10k');
r(results);
}).catch((error) => {
console.log('Query Feature Error');
console.log(error);
})
}).catch((error) => {
console.log('Upload Error');
console.log(error);
})
});
});
});
}
showPortalFeatureLayerByYear(year: number = new Date().getFullYear()) {
let layerId = "SOME PORTAL ID"
this._layers = [];
new FeatureLayer({
portalItem: {
id: layerId,
},
outFields: ['*']
}).load().then((layer) => {
this.addGISFeatureAttributes(layer).then((features: FeatureSet) => {
console.log('Features');
console.log(_.cloneDeep(features));
return new FeatureLayer({
source: features.features,
fields: features.fields,
renderer: null,
spatialReference: {
wkid: 102100
},
outFields: ["*"]
}).load().then((layer) => {
this._layers.push(layer);
this.renderHostedFeatureLayer();
})
})
})
}
Should I have my new layer with v1 -> v4? This does the applyEdits, and this does the query stage. One thing I've noticed, this is slow, ~60 seconds for 10k assets, so this generally not recommended?
Thanks