Hi Eric, The feature is a new feature that's created with the OpenLayers.Control.DrawFeature control. The feature belongs to a WFS layer and is saved via its Save strategy. It seems the FeatureStore is unaware of the change in the feature's state when the layer is saved.
Am I seeing this issue because the FeatureStore expects the layer to be saved via the store's save() method only? Cheers Adam On 21/05/2010, at 7:53 PM, Eric Lemoine wrote: > On Thursday, May 20, 2010, Adam Ratcliffe <[email protected]> wrote: >> I have a FeatureStore instance associated with a map vector layer, the >> vector layer has a DrawFeature control associated with it. >> >> When a new feature is created the FeatureStore.onFeaturesAdded() method is >> called to create a new record in the store for the feature. The record is >> created but it does not receive the Open Layers feature ID because it's in >> an INSERT state, as per this code in the FeatureReader class: >> >> // newly inserted features need to be made into phantom records >> var id = (feature.state === OpenLayers.State.INSERT) ? >> undefined : feature.id; >> records[records.length] = new recordType(values, id); >> >> If I save the vector layer the feature is updated to no longer be in an >> INSERT state. > > Is the feature updated or is a new feature created? > >> When I try to retrieve the record for the feature from the store using the >> FeatureStore.getRecordFromFeature() method it fails due to this logic in >> FeatureStore.getRecordFromFeature(): >> >> if(feature.state !== OpenLayers.State.INSERT) { >> record = this.getById(feature.id); >> } else { >> var index = this.findBy(function(r) { >> return r.get("feature") === feature; >> }); >> if(index > -1) { >> record = this.getAt(index); >> } >> } >> >> The record is no longer in an INSERT state so it will try to find the record >> by feature ID but the record only exists as a phantom (ID less) record in >> the store. >> >> Is this a bug or do I need to explicitly update the record in the store >> after the feature is saved? > > In my opunion you'd be better off destroying the feature marked > "INSERT" and creating and adding a new feature (with an id). > > Cheers, > > -- > 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://www.geoext.org/cgi-bin/mailman/listinfo/users
