Changeset 8600
- Timestamp:
- 01/08/09 09:56:55 (1 year ago)
- Files:
-
- sandbox/jachym/openlayers/donut_polygons (copied) (copied from trunk/openlayers)
- sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Control/DrawFeature.js (modified) (1 diff)
- sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Handler/Path.js (modified) (1 diff)
- sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Handler/Polygon.js (modified) (3 diffs)
- sandbox/jachym/openlayers/news.txt (deleted)
- sandbox/jachym/openlayers/readme.txt (deleted)
- sandbox/jachym/openlayers/release-license.txt (deleted)
- sandbox/jachym/openlayers/repository-license.txt (deleted)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Control/DrawFeature.js
r8382 r8600 78 78 drawFeature: function(geometry) { 79 79 var feature = new OpenLayers.Feature.Vector(geometry); 80 feature.state = OpenLayers.State.INSERT;81 80 this.layer.addFeatures([feature]); 82 81 this.featureAdded(feature); sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Handler/Path.js
r7964 r8600 175 175 this.destroyFeature(); 176 176 } 177 this.createFeature(); 177 this.mod = this.checkModifiers(evt); 178 this.createFeature(evt); 178 179 } 179 180 this.mouseDown = true; sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Handler/Polygon.js
r7964 r8600 51 51 * Method: createFeature 52 52 * Add temporary geometries 53 * 54 * Parameters: 55 * evt - {Event} 53 56 */ 54 createFeature: function() { 55 this.polygon = new OpenLayers.Feature.Vector( 56 new OpenLayers.Geometry.Polygon()); 57 createFeature: function(evt) { 58 59 var lonlat = this.map.getLonLatFromViewPortPx(evt.xy); 60 var point = new OpenLayers.Geometry.Point (lonlat.lon, lonlat.lat); 61 var found = false; 62 63 if (this.mod) { 64 var features = this.control.layer.features; 65 for (var i = 0; i < features.length; i++) { 66 // intersects and is polygon 67 if (features[i].geometry.intersects(point) && features[i].geometry.CLASS_NAME == "OpenLayers.Geometry.Polygon") { 68 this.polygon = features[i]; 69 found = true; 70 break; 71 } 72 this.polygon = null; 73 } 74 75 } 76 77 if (!this.polygon) { 78 this.polygon = new OpenLayers.Feature.Vector( 79 new OpenLayers.Geometry.Polygon()); 80 } 57 81 this.line = new OpenLayers.Feature.Vector( 58 82 new OpenLayers.Geometry.LinearRing()); … … 60 84 this.point = new OpenLayers.Feature.Vector( 61 85 new OpenLayers.Geometry.Point()); 62 this.layer.addFeatures([this.polygon, this.point], {silent: true}); 86 if (!found) { 87 this.layer.addFeatures([this.polygon, this.point], {silent: true}); 88 } 63 89 }, 64 90 … … 130 156 }, 131 157 158 /** 159 * Method: finalize 160 * Finish the geometry and call the "done" callback. 161 * 162 * Parameters: 163 * cancel - {Boolean} Call cancel instead of done callback. Default is 164 * false. 165 */ 166 finalize: function(cancel) { 167 var key = cancel ? "cancel" : "done"; 168 this.drawing = false; 169 this.mouseDown = false; 170 this.lastDown = null; 171 this.lastUp = null; 172 173 // destroy the feature from original layer, if needed 174 if (this.polygon.layer == this.control.layer) { 175 for (var i = 0; i < this.control.layer.features.length; i++) { 176 if (this.control.layer.features[i] == this.polygon) { 177 this.control.layer.removeFeatures([this.control.layer.features[i]]); 178 } 179 } 180 } 181 182 this.callback(key, [this.geometryClone()]); 183 if(cancel || !this.persist) { 184 this.destroyFeature(); 185 } 186 }, 187 132 188 CLASS_NAME: "OpenLayers.Handler.Polygon" 133 189 });
