[OpenLayers-Commits] r2346 - sandbox/vector-2.4/lib/OpenLayers/Layer

commits at openlayers.org commits at openlayers.org
Mon Mar 5 16:34:44 EST 2007


Author: crschmidt
Date: 2007-03-05 16:34:43 -0500 (Mon, 05 Mar 2007)
New Revision: 2346

Modified:
   sandbox/vector-2.4/lib/OpenLayers/Layer/Vector.js
Log:
Vectors do not display correctly if they are drawn before the layer has a
center. Add a 'drawn' flag that is set the first time a center is set on
the map. In addition, many of the reader/writer functions of the layer 
should instead be on a WFS layer or similar, so this layer is now much
simpler. 


Modified: sandbox/vector-2.4/lib/OpenLayers/Layer/Vector.js
===================================================================
--- sandbox/vector-2.4/lib/OpenLayers/Layer/Vector.js	2007-03-05 21:12:39 UTC (rev 2345)
+++ sandbox/vector-2.4/lib/OpenLayers/Layer/Vector.js	2007-03-05 21:34:43 UTC (rev 2346)
@@ -25,17 +25,21 @@
 
     map: null,
 
-    url: '',
-
-    /** @type OpenLayers.Parser */
-    parser: null,
-
-    /** @type OpenLayers.Writer */
-    writer: null,
-
-    /** @type string */
+    /** 
+     * geometryType allows you to limit the types of geometries this
+     * layer supports. This should be set to something like 
+     * "OpenLayers.Geometry.Point" to limit types.
+     * 
+     * @type string 
+     */
     geometryType: null,
 
+    /** Whether the Vector Layer features have been drawn yet.
+     *
+     * @type boolean 
+     */
+    drawn: false,
+
     /**
      * @constructor
      *
@@ -48,20 +52,14 @@
 
         if (!this.renderer) {
             this.renderer = document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG", "1.1") ?
-            new OpenLayers.Renderer.SVG(this.div) :
-            new OpenLayers.Renderer.VML(this.div);
+                new OpenLayers.Renderer.SVG(this.div) :
+                new OpenLayers.Renderer.VML(this.div);
         }
 
         if (!this.style) {
             this.style = OpenLayers.Style.DefaultRendererStyle;
         }
 
-        // load features
-        if (!this.parser) {
-            //this.parser = new OpenLayers.Parser.GML();
-            //this.parser.load(this.url, this.map.bbox, this.requestSuccess, this.requestFailure);
-        }
-
         this.features = new Array();
         this.selection = new Array();
     },
@@ -86,6 +84,15 @@
             this.renderer.setExtent(extent.left, extent.top,
                                     extent.getWidth(), extent.getHeight());
         }
+        
+        if (!this.drawn) {
+            this.drawn = true;
+            for(var i = 0; i < this.features.length; i++) {
+                var style = this.features[i].geometry.style || this.style;
+                this.renderer.drawGeometry(this.features[i].geometry, style);
+            
+            }
+        }    
     },
 
     /**
@@ -108,21 +115,19 @@
         for (var i = 0; i < features.length; i++) {
             if (this.geometryType &&
                 !(features[i].geometry instanceof this.geometryType)) {
-                    console.log(features[i].geometry);
                     throw "addFeatures : component should be an " + this.geometryType.prototype.CLASS_NAME;
                 }
+            
             var style = features[i].geometry.style || this.style;
-            var feature = this.renderer.drawGeometry(features[i].geometry, style);
-            /*
-            TODO
+            
+            if (this.drawn) {
+                var feature = this.renderer.drawGeometry(features[i].geometry, style);
+            }
+            
             features[i].geometry.setEvents();
-            features[i].toState(OpenLayers.State.INSERT);
-
+            
             if (features[i].state == OpenLayers.State.INSERT) {
                 this.onFeatureInsert(features[i]);
-            } else if (features[i].state == OpenLayers.State.UNKNOWN) {
-                this.onFeatureUnknown(features[i]);
-            }*/
         }
 
         return features;
@@ -134,7 +139,7 @@
         }
 
         for (var i = 0; i < features.length; i++) {
-            //this.features = OpenLayers.Util.removeItem(this.features, features[i]);
+            this.features = OpenLayers.Util.removeItem(this.features, features[i]);
 
             var geometry = features[i].geometry;
             if (geometry.components) {
@@ -146,29 +151,9 @@
             }
         }
 
-
-        // update the feature state
-        for(var i = 0; i < features.length; i++) {
-            features[i].toState(OpenLayers.State.DELETE);
-        }
-
         return features;
     },
 
-    updateFeatures: function(features) {
-        // update the feature state
-        for (var i = 0; i < features.length; i++) {
-            features[i].toState(OpenLayers.State.UPDATE);
-
-            // only call if a feature is updated
-            // ie. its state may be OpenLayers.State.INSERT
-            if (features[i].state == OpenLayers.State.UPDATE) {
-                this.onFeatureUpdate(features[i]);
-            }
-        }
-
-    },
-
     redrawFeature: function(fid, style) {
         for (var i = 0; i < this.features.length; i++) {
             var feature = this.features[i];
@@ -182,7 +167,6 @@
      * Unselect the selected features
      * i.e. clears the featureSelection array
      * change the style back
-     */
     clearSelection: function() {
 
         for (var i = 0; i < this.map.featureSelection.length; i++) {
@@ -190,45 +174,17 @@
         }
         this.map.featureSelection = [];
     },
-
-    /**
-     * method called when a feature is updated
      */
-    onFeatureUpdate: function(feature) {
-        //console.log("feature updated");
-    },
 
+
     /**
-     * method called when a feature is inserted
+     * method called when a feature is inserted.
+     * Does nothing by default. Override this if you
+     * need to do something on feature updates.
      */
     onFeatureInsert: function(feature) {
-        this.map.events.triggerEvent("insertfeature", feature);
     },
 
-    /**
-     * method called when a feature is added as unknown
-     */
-    onFeatureUnknown: function(feature) {
-        this.map.events.triggerEvent("unknownfeature", feature);
-    },
-
-
-    commit: function() {
-        if (!this.writer) {
-            this.writer = new OpenLayers.Writer.WFS();
-        }
-
-        var commitSuccess = this.commitSuccess.bind(this);
-        var commitFailure = this.commitFailure.bind(this);
-        this.writer.commit(this.url, this.features, commitSuccess, commitFailure);
-        // foreach features: set state to null
-    },
-
-    /**
-     * refreshes all the features of the layer
-     */
-    refresh: function() {},
-
     /** @final @type String */
     CLASS_NAME: "OpenLayers.Layer.Vector"
 });



More information about the Commits mailing list