ThinkGeo.com    |     Documentation    |     Premium Support

Feature Context Menu

I am trying create a client-side ContextMenu based on the right click of a feature. I am trying to do this all on client-side. Could you pin-point me on how accomplish this? From what I read on OpenLayers forum, it recommends to disable the contextmenu ( map.div.oncontextmenu = function noContextMenu(e)). Then detect the mousedown event to trigger the menu. Don't know if this is the proper or correct way of doing via webedition. 


Here are the I functionalities I need to for the client-side ContextMenu.


1. Open ContextMenu while on 'Normal' Map1.SetDrawMode 


2. Programmatically select the feature (highlight) when right click on a feature (not on map)


3. Programmatically set the feature as Drag/Edit mode when ContextMenu item is selected


 


Please advise. Thanks



Hi Ttd,



One thing I want to confirm with you is what's the version are you using. It seems you are using our old version. Just a reminding and welcome to evaluate our latest version.



It's not very easy to implement this using our current APIs. The problem is that you want to highlight a feature on the client side; in this case we need use a lot of JavaScript.



If you are using OpenLayers to register the map event, here is the code for you to raise right click without oncontextmenu event. Also please do not forget disable the IE's default one.
opMap.events.register('mousedown', opMap, function(evt){
        if(evt && evt.button == 2){
                // raise your event here.
        }
});



Here are what I want to do:

1. Register map mouse down event on the client side.

2. In the event, we judge whether mouse left or right event is raised.

3. If it's right, raise a callback and query the click feature.

4. Serialize returned feature as string and transfer back to client.

5. Deserialize it on the client and add it into the EditOverlay on the client; at the same time display the context menu.

6. Change the settings for it.



It seems complicate, please let me know if you have any questions.



Thanks,

Howard

 



I am able to display the contextmenu on client-side using the below code. I am stuck on setting the feature as "selected" or "edit/drag" mode based on context menu item selection.  The below link demostrates the "selected" mode but it's all in Openlayers which I am not too strong with. 


gis.ibbeck.de/ginfo/apps/OLExamples/OL26/examples/select-feature-with-function.html


       map.events.register('mousedown', feature, function(evt) {

        if (OpenLayers.Event.isRightClick(evt)) {

            var objSelected = GetSelectedFeature(evt);

            OpenContextMenu(objSelected);

        }

        OpenLayers.Event.stop(evt);

    });


Please advise. 


 



Ttd, 



Howard is on a trip now, we are working on this and will provide you a reply tomorrow. 



Thanks, 



Ben



Ttd, 
  
 We are still working on this sample and hopefully we can give you a completely one at the early of next week. 
  
 Sorry for the inconvinience. 
  
 Let us know if any more problem. 
  
 Thanks. 
  
 Yale

No problem. I will check on Howard reply early next week. Thanks



Ttd,  
  
 So sorry to delay your post. I tried to satisfy your requirement but whenever I implement one thing, there will have another OpenLayers conflict issue need to be solve. I tried too many solution even changing OpenLayers library but failed.  
  
 You know we cannot spend too much time on supporting requirement of OpenLayers. If you want to implement this feature eagarly,  I recommend contacting our sells man to see if we can make a professional service for you. 
  
 Sorry for the inconvenience. Please let me know if you have any questions. 
  
 Thanks, 
 Howard