Thanks for your suggestion Eric. That was the first thing I tried,
but it doesn't clear the map, even with an explicit redraw()
vectorLayer.events.on({
"featuremodified": mapUpdated,
"beforefeatureadded": clearPreviousFeatures,
"featureadded": mapUpdated
});
function clearPreviousFeatures(evt) {
vectorLayer.destroyFeatures();
vectorLayer.redraw();
}
function mapUpdated(evt) {
console.log('Vector layer has '+vectorLayer.features.length+'
features');
dojo.publish('mapUpdated',[evt.feature.geometry]);
}
Setting it up this way also seems to clear the newly added feature as
well - when the featureadded handler runs, it reports no features in
the layer.
Is this what you had in mind?
I really appreciate your help with this.
--john
On Aug 15, 2009, at 1:26 AM, Eric Lemoine wrote:
On Friday, August 14, 2009, John Cartwright
<[email protected]> wrote:
Hello All,
I'm using OL 2.8 and trying to implement the behavior where the
user can
digitize points, lines, or polygons, but only the last created
feature
will be kept and displayed. I've attempted this via a handler on the
Layer's "beforefeatureadded" event like:
function clearPreviousFeatures(evt) {
dojo.forEach(vectorLayer.features, function(f) {
if (http://f.id != http://evt.feature.id) {
vectorLayer.removeFeatures([f], {silent:true});
}
});
vectorLayer.redraw();
removing objects within a dojo.forEach loop may not be safe.
why don't you have you beforefeatureadded listener destroy all
features (with layer.destroyFeature)?
Cheers,
}
However, I find that the previous drawn features remain until the
DrawFeature control is changed. Also as soon as the second feature
is
added, the code above complains that "f is undefined". Finally, any
features added subsequent to the first do not display in the style
defined for the layer.
I feel like this should be a simple task and that I'm missing
something
fundamental here. Can someone show me what's wrong or suggest a
better
strategy for accomplishing this goal?
Thanks!
--john
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users
--
Eric Lemoine
Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex
Tel : 00 33 4 79 44 44 96
Mail : [email protected]
http://www.camptocamp.com
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users