[OpenLayers-Users] Create feature from sketch by imitating a bouble-click event

Andreas Hocevar ahocevar at opengeo.org
Tue Sep 1 17:58:24 EDT 2009


Andreas Hocevar wrote:
> Hi Amit,
>
> why don't you just use a DrawFeature control with a Path handler on a
> vector layer and listen to the layer's sketchmodified event, checking
> for feature.geometry.components.length?
>
> var layer = new OpenLayers.Layer.Vector("result");
> var control = new OpenLayers.Control.DrawFeature(layer,
> OpenLayers.Handler.Path);
> layer.events.on({
>     sketchmodified: function(evt) {
>         if(evt.feature.geometry.component.length == 2) {
>   

The above line should read

        if(evt.feature.geometry.components.length == 2) {


Regards,
Andreas.

>             control.handler.finalize();
>         }
>     }
> );
>
> You will then have the feature on your layer. Nothing else to do.
>
> Regards,
> Andreas.
>
> Amit Andersen wrote:
>   
>> Hi All
>>
>> I wonder if there is a good reason why my post is being ignored.
>> Is it to hard or is the problem posted not clear enough?
>>
>> Mails with different problems have been streaming to my mailbox, and got an
>> answer quite fast. Kan someone write back if my post is not answerable in
>> some way.. :-)
>>
>> Thanks
>> Amit
>>
>>
>> Amit Andersen wrote:
>>   
>>     
>>> Hi
>>>
>>> This should be a simple question.
>>> I'm working on limiting a path to one single line. What I did was to fire
>>> a function on "Point" event. A global var is counting the points created.
>>> In this function when the global var is 2, I have an alert which pops up
>>> fine.
>>>
>>> What I want to do instead of the alert, is create the feature from the
>>> line sketch on second single-click. Basically imitate a double-click event
>>> on the second single-click.
>>>
>>> This is my DrawFeature control:
>>>
>>> ...
>>> line: new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.Path,
>>> {callbacks: { "point": this.TwoClickPath.bind(this) }}),
>>> ...
>>>
>>> And this is the function that is being fired:
>>>
>>> TwoClickPath: function(e) {
>>>     this.TwoClickPathCount++;
>>>     if (this.TwoClickPathCount == 2) {
>>>         /*
>>>             Here I want to create the a feature out of the sketch (which
>>> is a single line)
>>>         */  
>>>         // alert("");  fires ok
>>>         controls.line.deactivate();
>>>         this.TwoClickPathCount = 0;
>>>     }
>>> },
>>>
>>> Thanks in advance for any reply.
>>> Amit
>>>
>>>     
>>>       
>>   
>>     
>
>
>   


-- 
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.




More information about the Users mailing list