I have a vectorLayer, polygonLayer, which I am calling destroyFeatures(polygonLayer.features) on. I can confirm that after calling it, the features go away in the polygonLayer.features variable. However, the features (polygons drawn by the DrawFeatures controller as per the example found at: http://openlayers.org/dev/examples/regular-polygons.html http://openlayers.org/dev/examples/regular-polygons.html ) don't actually go away on screen (they are still drawn on the map).
I thought maybe calling redraw() on the vectorLayer would help, but no dice. Even though I have only one feature in the layers' array, I am seeing several circles on screen. >From the API, I got the impression that the features would be both erased AND removed from the array. Was I wrong? How can I get the features to go away? Background: I only want one polygon on screen at a time, thus when the event "beforeaddingfeature" is called, I clear all existing features, and then let the current feature be added like normal. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Code: <html> <head> <h1> Select Blackout Area </h1> <script type="text/javascript" src="javascripts/jquery-1.3.2.js"></script> <script type="text/javascript" src="javascripts/jquery.timers-1.2.js"></script> <!-- bring in the OpenLayers javascript library (here we bring it from the remote site, but you could easily serve up this javascript yourself) --> <script src="http://www.openlayers.org/api/OpenLayers.js"></script> <script src="/javascripts/OpenStreetMap.js"></script> <script type="text/javascript"> // making this a global variable so that it is accessible for // debugging/inspecting in Firebug var map, polygonControl, polygonLayer; var bounds = new OpenLayers.Bounds(-125, 25, -65, 50); function init(){ var navControl = new OpenLayers.Control.Navigation(); map = new OpenLayers.Map ("map", { controls:[ navControl, //new OpenLayers.Control.PanZoomBar(), //new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.Attribution()], numZoomLevels: 10, //restrictedExtent: bounds.clone().transform(EPSG4326, EPSG900913), restrictedExtent: bounds.clone().transform( new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")), maxExtent: bounds.clone().transform( new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")), maxResolution: "auto", units: 'm', projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326") } ); //actually draws the map layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { displayOutsideMaxExtent: false, wrapDateLine: true //numZoomLevels: 4 }); polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer"); map.addLayer(layerMapnik); map.addLayer(polygonLayer); map.addControl(new OpenLayers.Control.MousePosition()); map.addControl(new OpenLayers.Control.LayerSwitcher()); var polyOptions = {sides: 40}; polygonControl = new OpenLayers.Control.DrawFeature(polygonLayer, OpenLayers.Handler.RegularPolygon, {handlerOptions: polyOptions}); map.setCenter(new OpenLayers.LonLat(0, 0), 3); //polygonControl.activate(); map.addControl(polygonControl); map.zoomToMaxExtent(); var feature; polygonLayer.events.register("beforefeatureadded", feature, function(evt){ //only one circle at a time clearCircles(); });//end attempt at events registration }//end init function setSize(fraction) { var radius = fraction * map.getExtent().getHeight(); polygonControl.handler.setOptions({radius: radius, angle: 0}); }//end setSize function clearCircles(){ console.log("Clearing existing circles"); console.log(polygonLayer.features.length); polygonLayer.destroyFeatures(polygonLayer.features); polygonLayer.redraw(); }//end clearCircles </script> </script> </head> <body onload="init()"> <ul id="controls">Map Controls <input type="radio" name="type" value="none" id="noneToggle" onclick="polygonControl.deactivate()" checked="checked" /> <label for="noneToggle">navigate</label> <input type="radio" name="type" value="polygon" id="polygonToggle" onclick="polygonControl.activate()" /> <label for="polygonToggle">draw polygon</label> </ul> <div id="map" class="small_map"></div> </body> </html> -- View this message in context: http://n2.nabble.com/VectorLayer-destroyFeatures-doesn-t-work-properly-tp4860918p4860918.html Sent from the OpenLayers Users mailing list archive at Nabble.com. _______________________________________________ Users mailing list Users@openlayers.org http://openlayers.org/mailman/listinfo/users