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

Reply via email to