OpenLayers OpenLayers

Changeset 8600

Show
Ignore:
Timestamp:
01/08/09 09:56:55 (1 year ago)
Author:
jachym
Message:

added new sandbox folder with donut-polygons

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Control/DrawFeature.js

    r8382 r8600  
    7878    drawFeature: function(geometry) { 
    7979        var feature = new OpenLayers.Feature.Vector(geometry); 
    80         feature.state = OpenLayers.State.INSERT; 
    8180        this.layer.addFeatures([feature]); 
    8281        this.featureAdded(feature); 
  • sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Handler/Path.js

    r7964 r8600  
    175175                this.destroyFeature(); 
    176176            } 
    177             this.createFeature(); 
     177            this.mod = this.checkModifiers(evt); 
     178            this.createFeature(evt); 
    178179        } 
    179180        this.mouseDown = true; 
  • sandbox/jachym/openlayers/donut_polygons/lib/OpenLayers/Handler/Polygon.js

    r7964 r8600  
    5151     * Method: createFeature 
    5252     * Add temporary geometries 
     53     * 
     54     * Parameters: 
     55     * evt - {Event} 
    5356     */ 
    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        } 
    5781        this.line = new OpenLayers.Feature.Vector( 
    5882                                        new OpenLayers.Geometry.LinearRing()); 
     
    6084        this.point = new OpenLayers.Feature.Vector( 
    6185                                        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        } 
    6389    }, 
    6490 
     
    130156    }, 
    131157 
     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 
    132188    CLASS_NAME: "OpenLayers.Handler.Polygon" 
    133189});