[OpenLayers-Users] Restore feature's geometry

Alexandre Dube adube at mapgears.com
Thu Jul 30 08:48:12 EDT 2009


Alexandre Dube wrote:
> Hi Eric,
>
> Eric Lemoine wrote:
>   
>>>   I tried to clone the feature + fid before modifications, then on
>>> cancel destroy the original feature and add the clone but it's obviously
>>> wrong to do so since it becomes unbound to its source.
>>>     
>>>       
>> What do you mean by "becomes unbound to its source"? I'd tend to think
>> that cloning feature+fid is a good solution...
>>
>>   
>>     
>
> Yeah, it's not very clear.  What I meant is if I clone the feature, 
> modify the original then "cancel" --> if I destroy the original and 
> addFeature(clone), the clone becomes independent of the other features, 
> i.e. it was not added from a getFeature request, but manually.
>
> Even when explaining it, it doesn't make much sense.  It shouldn't 
> matter "how" a feature is added to a layer IMO.  Maybe I did something 
> wrong again.  I should make a sample and share it.
>
> I'll let you know when I'm done.
>
> Thanks
>
> Alexandre
>
>   

You were right.  I don't remember what I did first but obviously I made 
some mistake because feature.clone() + fid is working just fine.

Sorry for the noise.

Alexandre


== working cloning ==

    olWFSRoads.events.register("beforefeaturemodified",
                               '', onRoadModificationStart);
    olWFSRoads.events.register("afterfeaturemodified",
                               '', onRoadModificationEnd);

function onRoadModificationStart(evt) {
    var oFeature = evt.feature;

    // ### HERE ###
    if(oFeature.state != OpenLayers.State.INSERT){
        oFeature.myClone = oFeature.clone();
        oFeature.myClone.fid = oFeature.fid;
    }
};

function onRoadModificationEnd(evt) {
    var oFeature = evt.feature;
   
    // ### AND HERE ###
    switch (oFeature.state)
    {
      case OpenLayers.State.INSERT:
        olWFSRoads.destroyFeatures([oFeature]);
        break;
      case OpenLayers.State.UPDATE:
        //olWFSRoads.refresh({'force':true});
        olWFSRoads.addFeatures([oFeature.myClone]);
        olWFSRoads.destroyFeatures([oFeature]);
        break;
    }
};

-- 
Alexandre Dubé
Mapgears
www.mapgears.com




More information about the Users mailing list