1 /**
  2  * @fileOverview  
  3  * Copyright (c) 2013 Regione Autonoma della Sardegna
  4  * Published under the GPL license.<br>
  5  * See <a href="https://sardegnageoportale.it/webgis/license.txt">https://sardegnageoportale.it/webgis/license.txt</a>
  6  * for the full text of the license.
  7  * @version 0.1
  8  */
  9 
 10 /**
 11  * @requires OpenLayers/Control.js
 12  * @requires OpenLayers/Handler/Box.js
 13  */
 14 
 15 /**
 16  * @namespace framework.widgets.control
 17  */
 18 Ext.namespace("framework.widgets.control");
 19 
 20 /** 
 21  *  Provides a search by drawing a polygon
 22  *  @name_ SearchInPolygon
 23  *  @class Provides a search by drawing a polygon
 24  *  @constructor
 25  *  @extends <a target="_blank" href="http://dev.openlayers.org/docs/files/OpenLayers/Control-js.html">OpenLayers.Control</a>
 26  */
 27 
 28 framework.widgets.control.SearchInPolygon = OpenLayers.Class(OpenLayers.Control.DrawFeature,
 29         /** 
 30          * @lends framework.widgets.control.SearchInPolygon.prototype 
 31          */
 32                 {
 33                     /**
 34                      * Method: drawFeature
 35                      * @private
 36                      */
 37                     drawFeature: function(geometry) {
 38                         if(this.map.getLayerIndex(this.layer) == -1){
 39                             this.map.addLayer(this.layer)
 40                         }
 41                         var style = OpenLayers.Util.extend({
 42                                 cursor:"inherit",
 43                                 fillColor:'#ee9900',
 44                                 fillOpacity:0.4,
 45                                 strokeColor:"#ee9900",
 46                                 strokeDashstyle:"solid",
 47                                 strokeLinecap:"round",
 48                                 strokeOpacity:1,
 49                                 strokeWidth:1
 50                             }, OpenLayers.Feature.Vector.style['custom']);
 51                         var feature = new OpenLayers.Feature.Vector(geometry, null, style);
 52                         var proceed = this.layer.events.triggerEvent(
 53                                 "sketchcomplete", {feature: feature}
 54                         );
 55                         if (proceed !== false) {
 56                             
 57                             //start extraCode
 58                             //Se utilizzato in ambiente di ricerca, agganciare a questo evento la pulizia della mappa
 59                             this.map.events.triggerEvent('cleanSearchObjects');
 60 
 61 
 62                             //pulizia vecchie features
 63                             this.layer.destroyFeatures();
 64                             if (window.popupAddr) {
 65                                 window.popupAddr.close();
 66                                 window.popupAddr.destroy();
 67                             }
 68                             
 69                             this.layer.events.remove('featureselected');
 70                             var controlosToDelete = this.map.getControlsByClass("OpenLayers.Control.SelectFeature");
 71                             for(var i=0; controlosToDelete && i < controlosToDelete.length; i++){
 72                                 controlosToDelete[i].deactivate();
 73                                 this.map.removeControl(controlosToDelete[i]);
 74                                 controlosToDelete[i].destroy();
 75                             }
 76                             
 77                             this.layer.addFeatures(feature);
 78                             this.map.setLayerIndex(this.layer, this.map.layers.length - 1);
 79 
 80                             this.map.boundRicerca = geometry;
 81                             this.deactivate();
 82                             
 83                             this.map.zoomToExtent(geometry.getBounds());
 84                             //this.map.setCenter(geometry.getBounds().getCenterLonLat(),this.map.getZoom());
 85                             
 86                             this.map.setCenter(geometry.getCentroid(),this.map.getZoom());
 87                             
 88                             //end extraCode
 89                             
 90                             feature.state = OpenLayers.State.INSERT;
 91                             this.layer.addFeatures([feature]);
 92                             this.featureAdded(feature);
 93                             this.events.triggerEvent('drawn');
 94                             this.events.triggerEvent("featureadded", {feature: feature});
 95                         }
 96                     },
 97                     CLASS_NAME: "framework.widgets.control.SearchInPolygon"
 98 
 99                 });
100 
101 
102