featureUpdate.js 4.78 KB
/*
* 空间图层数据添加、修改、删除
* */
import {loadModules} from "esri-loader"

export default {
    methods:{
        addGraphic(url,graphic,callBackFunction){
            loadModules([
                "esri/layers/FeatureLayer",
                "esri/Graphic",
                "esri/geometry/Point",
                "esri/geometry/Polygon",
                "esri/geometry/Polyline"
            ]).then(([
                                     FeatureLayer,
                                     Graphic,
                                     Point,
                                     Polygon,
                                     Polyline
                                 ])=>{
                var featureLayer = new FeatureLayer({
                    url:url
                })
                var geo = null;
                if(graphic.geometry.type == 'point'){
                    geo = new Point(graphic.geometry);
                }else if(graphic.geometry.type == 'polyline'){
                    geo = new Polyline(graphic.geometry);
                }else if(graphic.geometry.type == 'polygon'){
                    geo = new Polygon(graphic.geometry);
                }
                var saveGraphic = new Graphic({
                    attributes:graphic.attributes,
                    geometry:geo
                });
                featureLayer.applyEdits({
                    addFeatures:[saveGraphic]
                }).then(function (res){
                    if(callBackFunction && typeof callBackFunction == 'function'){
                        callBackFunction(res);
                    }
                })
            }).catch( err => {
                throw (err);
            })
        },
        updateGraphic(url,graphic,callBackFunction){
            loadModules([
                "esri/layers/FeatureLayer",
                "esri/Graphic",
                "esri/geometry/Point",
                "esri/geometry/Polygon",
                "esri/geometry/Polyline"
            ]).then(([
                         FeatureLayer,
                         Graphic,
                                     Point,
                                     Polygon,
                                     Polyline
                     ])=>{
                var featureLayer = new FeatureLayer({
                    url:url
                })
                var geo = null;
                if(graphic.geometry.type == 'point'){
                    geo = new Point(graphic.geometry);
                }else if(graphic.geometry.type == 'polyline'){
                    geo = new Polyline(graphic.geometry);
                }else if(graphic.geometry.type == 'polygon'){
                    geo = new Polygon(graphic.geometry);
                }
                var updGraphic = new Graphic({
                    attributes:graphic.attributes,
                    geometry:geo
                });
                featureLayer.applyEdits({
                    updateFeatures:[updGraphic]
                }).then(function (res){
                    if(callBackFunction && typeof callBackFunction == 'function'){
                        callBackFunction(res);
                    }
                })
            }).catch( err => {
                throw (err);
            })
        },
        delGraphic(url,graphic,callBackFunction){
            loadModules([
                "esri/layers/FeatureLayer",
                "esri/Graphic",
                "esri/geometry/Point",
                "esri/geometry/Polygon",
                "esri/geometry/Polyline"
            ]).then(([
                         FeatureLayer,
                                     Graphic,
                                     Point,
                                     Polygon,
                                     Polyline
                     ])=>{
                var featureLayer = new FeatureLayer({
                    url:url
                })
                var geo = null;
                if(graphic.geometry.type == 'point'){
                    geo = new Point(graphic.geometry);
                }else if(graphic.geometry.type == 'polyline'){
                    geo = new Polyline(graphic.geometry);
                }else if(graphic.geometry.type == 'polygon'){
                    geo = new Polygon(graphic.geometry);
                }
                var delGraphic = new Graphic({
                    attributes:graphic.attributes,
                    geometry:geo
                });

                featureLayer.applyEdits({
                    deleteFeatures:[delGraphic]
                }).then(function (res){
                    if(callBackFunction && typeof callBackFunction == 'function'){
                        callBackFunction(res);
                    }
                })
            }).catch( err => {
                throw (err);
            })
        }
    }
}