Source: api/DrawMapService.js

Retour à la documentation
define([
    'dojo/_base/declare',
    'dojo/_base/lang',
    'dojo/_base/array',
    'dojo/on','spw/api/DataMapService',
    'spw/api/SpwGraphicsLayer', // parce que le GraphicsLayer d'esri modifie l'id automatiquement
    'spw/api/ConfigLoader', "spw/api/GeometryConverter",
        "spw/api/MessageManager","esri/graphic", "esri/SpatialReference"
],
function(declare, lang, array, on, DataMapService, SpwGraphicsLayer, ConfigLoader,
         GeometryConverter, MessageManager, Graphic, SpatialReference) {

    /**
     * @class spw.api.DrawMapService
     * @classdesc Service du viewer permettant de dessiner sur la carte
     * @extends {spw.api.MapService}
     */
    var DrawMapService = declare('spw.api.DrawMapService', [DataMapService], /** @lends spw.api.DrawMapService.prototype */ {

        // label: 'Renommer',
        // hasLegend: false,
        // inTOC: true,
        // minScale: 0,
        // maxScale: 0,
        // loaded: false,
        // visible: true,
        // toLoad: true,
        //
        // newLayer: true,
        // currentDrawing: false,

        // constructor: function(opts) {
        //     lang.mixin(this, opts);
        //     this._propertiesToKeep.push('graphics');
        // },

        /**
         * Crée le layer Esri sur base de la configuration du MapService.
         * @memberOf spw.api.MapService
         */
        // createMapLayer: function() {
        //     this.inherited(arguments);
        //     var opts = {
        //         id: this.serviceId,
        //         minScale: 0,
        //         maxScale: 0,
        //         spwMap: this.spwMap,
        //         graphicsJSON: this.graphicsJSON
        //     };
        //
        //     if (this.graphics) {
        //         opts.graphics = this.graphics;
        //         delete this.graphics;
        //     }
        //
        //     this.layer = new SpwGraphicsLayer(opts);
        //
        //     this.loaded = true;
        //
        //
        //     if (this.geoJsonInfo) {
        //         this.importData(this.geoJsonInfo);
        //     }
        // }

        // reset: function() {
        //     this.graphics = this.layer.graphicsToJson();
        //
        //     this.inherited(arguments);
        // },

        // importData: function(geoJsonFeatures) {
        //     geoJsonFeatures = JSON.parse(geoJsonFeatures);
        //     if (geoJsonFeatures.type == "FeatureCollection") {
        //         var features = geoJsonFeatures.features;
        //         array.forEach(features, lang.hitch(this, function(feature) {
        //             var esriGeom = GeometryConverter.geoJSONToEsri(feature.geometry);
        //             esriGeom.spatialReference = new SpatialReference({ "wkid": 31370 });
        //             var graph = new Graphic(esriGeom, this.spwMap.getDefaultSymbol(feature));
        //             this.get('layer').graphics.push(graph);
        //         }))
        //     }
        //     console.log('graphics:', this.get('layer').graphics);
        // },
        //
        // exportData: function() {
        //     var layer = this.get('layer');
        //     if (layer) {
        //         var graphics = layer.graphics;
        //         if (graphics.length > 0) {
        //             var geoJsonObject = {type: 'FeatureCollection', features: []};
        //             geoJsonObject.features = array.map(graphics, lang.hitch(this, function(g) {
        //                 return GeometryConverter.esriToGeoJSON(g);
        //             }));
        //             var blob = new Blob([JSON.stringify(geoJsonObject)], {type: "attachment/file"});
        //             var reader = new FileReader();
        //             reader.onloadend = lang.hitch(this, function() {
        //                 var resultUrl = reader.result;
        //                 var link = document.createElement('a');
        //                 link.setAttribute('href', resultUrl);
        //                 link.setAttribute('download', this.label + '.json');
        //                 link.click();
        //             });
        //             reader.onerror = lang.hitch(this, function() {
        //                 MessageManager.getInstance().notifyError("Une erreur est survenue lors de l'export de votre donnée, veuillez réessayer.");
        //             });
        //             reader.readAsDataURL(blob);
        //         } else {
        //             MessageManager.getInstance().notifyInfo("Il n'y a aucune feature à exporter.");
        //         }
        //     }
        // },

        // addToMap: function(esriMap) {
        //     this.get('layer').visible = this.get('visible') != null ? this.get('visible') : true;
        //
        //     var handler = null;
        //
        //     handler = esriMap.on("layer-add-result", lang.hitch(this, function(evt) {
        //         if(evt.layer == this.get('layer')){
        //             if(handler) {
        //                 handler.remove();
        //             }
        //             this.set("added", true);
        //
        //             if (this.spwMap) {
        //                 this.spwMap.mapServiceAddedToMap(this);
        //             }
        //         }
        //     }));
        //
        //     esriMap.addLayer(this.get('layer'));
        //     this.set("loaded", true);
        //
        //     if (this.layer.graphics) {
        //         this.layer.jsonToGraphics(this.layer.graphicsToJson());
        //     }
        //     else if (this.graphics) {
        //         this.layer.jsonToGraphics(this.graphics);
        //     }
        //
        //     for(var i = 0; i < this.clusterLayers.length; i++) {
        //         esriMap.addLayer(this.clusterLayers[i].clusterLayer);
        //     }
        //
        //     for(var i = 0; i < this.heatLayers.length; i++) {
        //         esriMap.addLayer(this.heatLayers[i].heatLayer);
        //     }
        // },

        // getServiceConfig: function(toKeep) {
        //     var cfg = this.inherited(arguments);
        //
        //     toKeep = toKeep || this._propertiesToKeep;
        //
        //     if (toKeep.indexOf('graphics')) {
        //         cfg.graphics = this.get('layer').graphicsToJson();
        //     }
        //
        //     return cfg;
        // }

        // setGraphics: function(graphics) {
        //     if (graphics == null) {
        //         return;
        //     }
        //
        //     this.layer.jsonToGraphics(graphics);
        // }

    });

    return DrawMapService;

});