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