OpenLayers OpenLayers

Ticket #628: partial.patch

File partial.patch, 8.5 kB (added by tschaub, 1 year ago)

just to get feedback

  • examples/wfs-scribble.html

    old new  
    3535            df.featureAdded = function(feature) {  
    3636              feature.state = OpenLayers.State.INSERT;  
    3737              feature.style['strokeColor'] = "#ff0000";  
    38               feature.layer.renderer.drawGeometry(feature.geometry, feature.style);   
     38              feature.layer.drawFeature(feature);   
    3939            } 
    4040            p.addControls([ new OpenLayers.Control.Navigation(), df ]); 
    4141              
     
    4747            for(var i = 0; i < map.layers[1].features.length; i++) {  
    4848                var f = map.layers[1].features[i];  
    4949                f.style['strokeColor'] = '#ee9900';  
    50                 map.layers[1].renderer.drawGeometry(f.geometry, f.style);   
     50                map.layers[1].drawFeature(f);   
    5151            }  
    5252            map.layers[1].commit(); 
    5353            return false; 
  • examples/wfs-t.html

    old new  
    2727                      featureNS: 'http://www.openplans.org/topp',  
    2828                      extractAttributes: false 
    2929               } ); 
    30             rlayer.onFeatureInsert=function(feature) { feature.style.strokeColor = "#ff0000"; feature.layer.renderer.drawGeometry(feature.geometry, feature.style); } 
     30            rlayer.onFeatureInsert=function(feature) { feature.style.strokeColor = "#ff0000"; feature.layer.drawFeature(feature); } 
    3131            map.addLayer(rlayer); 
    3232            layer = new OpenLayers.Layer.WFS( "Cities",  
    3333                    "http://dev.openlayers.org/geoserver/wfs", {typename: 'topp:tasmania_cities'},  
     
    4444            df.featureAdded = function(feature) {  
    4545              feature.state = OpenLayers.State.INSERT;  
    4646              feature.style['strokeColor'] = "#0000ff";  
    47               feature.layer.renderer.drawGeometry(feature.geometry, feature.style);   
     47              feature.layer.drawFeature(feature);   
    4848            } 
    4949            dp = new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Point, {handlerOptions: {'freehand': false}, 'displayClass': 'olControlDrawFeaturePoint'}); 
    5050            dp.featureAdded = function(feature) {  
     
    5353              feature.geometry = new OpenLayers.Geometry.MultiPoint(oldgeom); 
    5454              feature.state = OpenLayers.State.INSERT;  
    5555              feature.style['strokeColor'] = "#0000ff";  
    56               feature.layer.renderer.drawGeometry(feature.geometry, feature.style);   
     56              feature.layer.drawFeature(feature);   
    5757            } 
    5858            p.addControls([ new OpenLayers.Control.Navigation(), df, dp ]); 
    5959              
  • lib/OpenLayers/Control/SelectFeature.js

    old new  
    143143     * @param {OpenLayers.Geometry} geometry 
    144144     */ 
    145145    select: function(geometry) { 
     146        var feature = geometry.feature; 
    146147        // Store feature style for restoration later 
    147         if(geometry.feature.originalStyle == null) { 
    148             geometry.feature.originalStyle = geometry.feature.style; 
     148        if(feature.originalStyle == null) { 
     149            feature.originalStyle = feature.style; 
    149150        } 
    150         this.layer.selectedFeatures.push(geometry.feature); 
    151         this.layer.renderer.drawGeometry(geometry, this.selectStyle); 
     151        this.layer.selectedFeatures.push(feature); 
     152        this.layer.drawFeature(feature, this.selectStyle); 
    152153        this.onSelect(geometry); 
    153154    }, 
    154155 
     
    158159     * @param {OpenLayers.Geometry} geometry 
    159160     */ 
    160161    unselect: function(geometry) { 
     162        var feature = geometry.feature; 
    161163        // Store feature style for restoration later 
    162         if(geometry.feature.originalStyle == null) { 
    163             geometry.feature.originalStyle = geometry.feature.style; 
     164        if(feature.originalStyle == null) { 
     165            feature.originalStyle = feature.style; 
    164166        } 
    165         this.layer.renderer.drawGeometry(geometry, geometry.feature.originalStyle); 
    166         OpenLayers.Util.removeItem(this.layer.selectedFeatures, geometry.feature); 
     167        this.layer.drawFeature(feature, feature.originalStyle); 
     168        OpenLayers.Util.removeItem(this.layer.selectedFeatures, feature); 
    167169        this.onUnselect(geometry); 
    168170    }, 
    169171 
  • lib/OpenLayers/Layer/Vector.js

    old new  
    2828    selectedFeatures: [], 
    2929 
    3030    /** @type {Boolean} */ 
    31     editing: false, 
    32  
    33     /** @type {Boolean} */ 
    34     editable: false, 
    35  
    36     /** @type {Boolean} */ 
    3731    reportError: true,  
    3832 
    3933    /** @type {Object} */ 
     
    7569     * Options renderer {Object}: Typically SVGRenderer or VMLRenderer. 
    7670     */ 
    7771    initialize: function(name, options) { 
     72        this.style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']); 
    7873        OpenLayers.Layer.prototype.initialize.apply(this, arguments); 
    7974 
    8075        // allow user-set renderer, otherwise assign one 
     
    10297        //              calling feature[i].destroy() here.  
    10398        this.features = null; 
    10499        this.selectedFeatures = null; 
    105         this.editing = null; 
    106         this.editable = null; 
    107100        if (this.renderer) { 
    108101            this.renderer.destroy(); 
    109102        } 
     
    199192            this.drawn = true; 
    200193            for(var i = 0; i < this.features.length; i++) { 
    201194                var feature = this.features[i]; 
    202                 this.renderer.drawGeometry(feature.geometry, feature.style); 
     195                this.drawFeature(feature); 
    203196            } 
    204197        }     
    205198    }, 
     
    228221            feature.layer = this; 
    229222 
    230223            if (!feature.style) { 
    231                 if (this.style) { 
    232                     feature.style = OpenLayers.Util.extend({}, this.style); 
    233                 } else { 
    234                     feature.style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']); 
    235                 }     
     224                feature.style = OpenLayers.Util.extend({}, this.style); 
    236225            } 
    237226 
    238227            this.preFeatureInsert(feature); 
    239228 
    240229            if (this.drawn) { 
    241                 this.renderer.drawGeometry(feature.geometry, feature.style); 
     230                this.drawFeature(feature); 
    242231            } 
    243232             
    244233            this.onFeatureInsert(feature); 
     
    271260    }, 
    272261 
    273262    /** 
    274      * @param {String} fid 
     263     * Draw (or redraw) a feature on the layer.  If the optional style argument 
     264     * is included, this style will be used.  If no style is included, the 
     265     * feature's style will be used.  If the feature doesn't have a style, 
     266     * the layer's style will be used. 
     267     *  
     268     * @param {OpenLayers.Feature.Vector} feature 
    275269     * @param {Object} style 
    276270     */ 
    277     redrawFeature: function(fid, style) { 
    278         for (var i = 0; i < this.features.length; i++) { 
    279             var feature = this.features[i]; 
    280             if (feature.fid == fid) { 
    281                 this.renderer.drawGeometry(feature.geometry, style); 
     271    drawFeature: function(feature, style) { 
     272        if(style == null) { 
     273            if(feature.style) { 
     274                style = feature.style; 
     275            } else { 
     276                style = this.style; 
    282277            } 
    283278        } 
     279        this.renderer.drawGeometry(feature.geometry, style); 
    284280    }, 
    285281     
    286282    /** 
     
    297293    }, 
    298294 
    299295    /** 
    300      * Stop editing the layer 
    301      *  
    302      * @return Whether or not the layer *was* editing  
    303      * HACK HACK This return value seems wierd to me. 
    304      * @type Boolean 
    305      */ 
    306     lock: function() { 
    307         if(this.editing) { 
    308             this.editing = false; 
    309         } 
    310         return this.editing; 
    311     }, 
    312  
    313     /** 
    314296     * Unselect the selected features 
    315297     * i.e. clears the featureSelection array 
    316298     * change the style back 
     
    319301       var vectorLayer = this.map.vectorLayer; 
    320302        for (var i = 0; i < this.map.featureSelection.length; i++) { 
    321303            var featureSelection = this.map.featureSelection[i]; 
    322             vectorLayer.renderer.drawGeometry(featureSelection.geometry,  
    323                                               vectorLayer.style); 
     304            vectorLayer.drawFeature(featureSelection, vectorLayer.style); 
    324305        } 
    325306        this.map.featureSelection = []; 
    326307    },