UNPKG

esri-leaflet

Version:

Leaflet plugins for consuming ArcGIS Online and ArcGIS Server services.

119 lines (107 loc) 3.3 kB
import { Service } from "./Service.js"; import query from "../Tasks/Query.js"; import { geojsonToArcGIS } from "../Util.js"; export const FeatureLayerService = Service.extend({ options: { idAttribute: "OBJECTID", }, query() { return query(this); }, addFeature(feature, callback, context) { this.addFeatures(feature, callback, context); }, addFeatures(features, callback, context) { const featuresArray = features.features ? features.features : [features]; for (let i = featuresArray.length - 1; i >= 0; i--) { delete featuresArray[i].id; } features = geojsonToArcGIS(features); features = featuresArray.length > 1 ? features : [features]; return this.post( "addFeatures", { features, }, (error, response) => { // For compatibility reason with former addFeature function, // we return the object in the array and not the array itself const result = response && response.addResults ? response.addResults.length > 1 ? response.addResults : response.addResults[0] : undefined; if (callback) { callback.call(context, error || response.addResults[0].error, result); } }, context, ); }, updateFeature(feature, callback, context) { this.updateFeatures(feature, callback, context); }, updateFeatures(features, callback, context) { const featuresArray = features.features ? features.features : [features]; features = geojsonToArcGIS(features, this.options.idAttribute); features = featuresArray.length > 1 ? features : [features]; return this.post( "updateFeatures", { features, }, (error, response) => { // For compatibility reason with former updateFeature function, // we return the object in the array and not the array itself const result = response && response.updateResults ? response.updateResults.length > 1 ? response.updateResults : response.updateResults[0] : undefined; if (callback) { callback.call( context, error || response.updateResults[0].error, result, ); } }, context, ); }, deleteFeature(id, callback, context) { this.deleteFeatures(id, callback, context); }, deleteFeatures(ids, callback, context) { return this.post( "deleteFeatures", { objectIds: ids, }, (error, response) => { // For compatibility reason with former deleteFeature function, // we return the object in the array and not the array itself const result = response && response.deleteResults ? response.deleteResults.length > 1 ? response.deleteResults : response.deleteResults[0] : undefined; if (callback) { callback.call( context, error || response.deleteResults[0].error, result, ); } }, context, ); }, }); export function featureLayerService(options) { return new FeatureLayerService(options); } export default featureLayerService;