[OpenLayers-Users] ModifyControl Select/Delete Vertex?

Alexandre Dubé adube at mapgears.com
Thu Feb 28 09:07:00 PST 2013


Hi Rob,

   This small example should give you the idea I had in mind:
http://dev5.mapgears.com/openlayers/2.12/examples/modify-feature-vertex-click.html

   You'll notice I extended the ModifyFeature control class. It's 
recommended to do that than modifying the source code (in fact, you 
should never edit the source code of a lib).

   What do you think ?

HTH,

Alexandre


On 13-02-28 09:42 AM, Robert Smart wrote:
> Great! I’m using version 2.12.
> Thanks,
> Rob Smart
> *From:* Alexandre Dubé <mailto:adube at mapgears.com>
> *Sent:* Thursday, February 28, 2013 1:59 PM
> *Cc:* openlayers-users at lists.osgeo.org 
> <mailto:openlayers-users at lists.osgeo.org>
> *Subject:* Re: [OpenLayers-Users] ModifyControl Select/Delete Vertex?
> Sure, I'd be glad to help. What version do you use ?
>
> Alexandre
>
>
> On 13-02-27 12:36 PM, Robert Smart wrote:
>> Hi,
>> Thanks for a really in depth answer. It really explains it well.
>> Unfortunately my javascript skills are pretty basic at the moment, so 
>> a lot of that went over my head!
>>
>> I like the sound of the vertexselection event on the vector layer 
>> class. Could you give me a few more hints about how this might work?
>>
>> Or even better give me an example bit of code :)
>>
>> We would need to be able to access the vertex index of the selected 
>> vertex, and i guess there would have to be a method of removing the 
>> vertex from the feature, which would trigger a redraw of the feature 
>> on the map.
>>
>> We would have to also be able to define a style for that selected 
>> vertex too, and i suppose add some error trap to ensure that we can't 
>> select a virtual vertex?
>>
>> Thanks again,
>>
>> Rob
>>
>>
>>
>> On 27 Feb 2013, at 13:51, "Alexandre Dubé" <adube at mapgears.com 
>> <mailto:adube at mapgears.com>> wrote:
>>
>>> Hi Rob,
>>>
>>>   This would indeed be a nice feature to have. Looking at the 
>>> ModifyFeature control, I think this could be easily accomplished 
>>> with minor modifications.
>>>
>>>   If we look at the ModifyFeature control, it creates a DragFeature 
>>> control to allow dragging the vertices around.  When you "mouse 
>>> hover" a vertex feature, a callback function is triggered because it 
>>> was defined here :
>>> https://github.com/openlayers/openlayers/blob/master/lib/OpenLayers/Control/ModifyFeature.js#L267
>>>
>>>   That's the callbacks for the OpenLayers.Handler.Feature object the 
>>> drag control needs to interact with features on the map.  The drag 
>>> control defines its callbacks method in the featureCallbacks object :
>>> https://github.com/openlayers/openlayers/blob/master/lib/OpenLayers/Control/DragFeature.js#L119
>>>
>>>   and here's the list of callbacks you can set to a feature handler: 
>>> click, clickout, over, out, and dblclick.
>>> https://github.com/openlayers/openlayers/blob/master/lib/OpenLayers/Handler/Feature.js#L30
>>>
>>>   So, back in the ModifyFeature control, you could add a 'click' 
>>> callback function just next to the 'over' one.  Instead of coding 
>>> what you want it to do directly in the source, just define an 
>>> abstract function that needs to be overriden OR you could fire an 
>>> new vector layer event : vertexselected (which would need to be 
>>> added to OpenLayer.Layer.Vector).
>>>
>>>   Whoa, sorry for the long reply :)   In short, try to create a 
>>> delegate method or event we could register to to do whatever we 
>>> wanted on vertex selection.
>>>
>>>   Does that make sense ?
>>>
>>> HTH,
>>>
>>> Alexandre
>>>
>>>
>>> On 13-02-26 11:42 AM, Robert Smart wrote:
>>>> Hi All,
>>>>
>>>> I'm trying to port some existing functionality into open layers and 
>>>> have
>>>> managed to get most of it working. I'm just stuck on a seemingly 
>>>> simple
>>>> task.
>>>>
>>>> The current code allows a user to highlight a polygon vertex by 
>>>> clicking on
>>>> it (which changes its colour), so that the user can then press a 
>>>> delete
>>>> button to remove the vertex.
>>>>
>>>> Using the modify control I'm able to display the vertices, and even 
>>>> delete
>>>> them if I click on it and then press 'del' on my keyboard, but this 
>>>> is not a
>>>> great solution as there is no visual clue as to what vertex has been
>>>> selected.
>>>>
>>>> So is there a way to highlight or change the colour of a single 
>>>> vertex the
>>>> user has clicked on? is there then a way to remove that vertex via 
>>>> code and
>>>> have the polygon redraw on the screen to suit?
>>>>
>>>> I think this would actually be quite useful as a standard feature 
>>>> as there
>>>> are many cases where one might want to select an individual vertex.
>>>>
>>>> Thanks,
>>>>
>>>> Rob
>>>>
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/openlayers-users
>>>
>>>
>>> -- 
>>> Alexandre Dubé
>>> Mapgears
>>> www.mapgears.com
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.osgeo.org <mailto:Users at lists.osgeo.org>
>>> http://lists.osgeo.org/mailman/listinfo/openlayers-users
>
>
> -- 
> Alexandre Dubé
> Mapgears
> www.mapgears.com
>
> ------------------------------------------------------------------------
> _______________________________________________
> Users mailing list
> Users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/openlayers-users


-- 
Alexandre Dubé
Mapgears
www.mapgears.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20130228/7bbc8755/attachment-0001.html>


More information about the Users mailing list