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é" <[email protected]> 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
>> [email protected]
>> http://lists.osgeo.org/mailman/listinfo/openlayers-users
> 
> 
> -- 
> Alexandre Dubé
> Mapgears
> www.mapgears.com
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.osgeo.org/mailman/listinfo/openlayers-users
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to