ThinkGeo.com    |     Documentation    |     Premium Support

Right Click event in EditOverlay

 I found this topic:


gis.thinkgeo.com/Support/Dis...aspx#24050


but it looks to be a year old.  I too would like to use the right mouse click to perform a process when editting.  I have been playing with the code for a while and can't get it to work.  I tried adding the code to the sample project and it doesn't seem to work there either. Does the download file "DeleteFeatureWithRighClick.zip" contain working code?


When using the EditOverlay, a right click appears to be the same as a left click.


Charles



I managed to capture the right click event using OpenLayers java script, but it doesn’t seem to work with Internet Explorer when the TrackMode is set to Point.  Has anyone else run into this issue?  Any ideas on how to work through this? 
  
 Charles

Hi Charles,


The post code works for me. You can try to create a real simple web edition project with our map control. 



Then add the server side code: 

  

protected void Page_Load(object sender, EventArgs e) 



if (!Page.IsPostBack) 

{                 

this.Map1.MapUnit = GeographyUnit.Meter; 

Map1.CurrentExtent = new RectangleShape(-131.22, 55.05, -54.03, 16.91); 

Map1.EditOverlay.Features.Add(new Feature(new RectangleShape(-131.22, 55.05, -54.03, 16.91)));                







 

And add client side code:


[CODE] <script type="text/javascript">
    var OnMapCreated = function (map) {
        Map1.SetDrawMode('Rectangle');
        var vectorLayer = map.getLayersByName("EditOverlay")[0];
        if (vectorLayer) {
            document.getElementById(map.clientId).oncontextmenu = function () { return false; };
            vectorLayer.events.register("mousedown", vectorLayer, function (evt) {
                if (evt && evt.button == 2) {
                    var feature = this.getFeatureFromEvent(evt);
                    if (feature != null) {
                        this.removeFeatures([feature]);
                    }
                }
            });
        }
    }
    </script>


When you see the rectangleshape, right click it will be deleted. 



Regards, 



Don



I don’t know why it didn’t work for me the first time.  The code worked for me when I created a new project and added your code as posted.  It also works only if there is a feature already on the EditOverlay and I click within the bounds of that feature.  What I need is to be able to capture the right click anywhere on the map control when the EditOverlay is actively adding features (EditOverlay.TrackMode = TrackMode.Point is my starting point). 
  
 Is there a good source for information about the OpenLayers API?  The OpenLayers.ORG API Documentation looks like it was generated by header comments. 
  
 Charles

I have been able to build some code that captures the right click event in the client map control.  It is rather clumsy since the point is already added to the EditOverlay when it fires.  I was looking at the beforefeatureadded event for the OpenLayers vector layer.  I can get it to fire, but I have no idea what can be found in the event arguments.  “evt.button” doesn’t appear to be part of the event arguments for beforefeatureadded. 
  
 Charles

beforefeatureadded appears to be a dead end.  I think that a large part of my problem is that the EditOverlay reacts differently depending on the track mode.  For instance, when placing a line or polygon, the feature is not added to the EditOverlay until a double click occurs.  For the other track modes, the feature is added to the EditOverlay on some other event, I'm guessing mouse down and mouse up.  Having different operations for different feature types will be very confusing both for my trainers and customers.  Is there any way to override this double click behavior?


This post is starting to merge with my other post about custom styles in the edit overlay:


gis.thinkgeo.com/Support/Dis...fault.aspx



Charles



Posted By Charles on 06-14-2011 07:47 AM 

I don’t know why it didn’t work for me the first time. The code worked for me when I created a new project and added your code as posted. It also works only if there is a feature already on the EditOverlay and I click within the bounds of that feature. What I need is to be able to capture the right click anywhere on the map control when the EditOverlay is actively adding features (EditOverlay.TrackMode = TrackMode.Point is my starting point). 



Is there a good source for information about the OpenLayers API? The OpenLayers.ORG API Documentation looks like it was generated by header comments. 



Charles 





 


Hi Charles,


I am sorry we didn’t have a better source for OpenLayers API than the documentation of Openlayers.orgdev.openlayers.org/releases/…es-js.html


I think you can download a OpenLayers package and unzip it. You can find a local documentation and some useful samples which helpful for understand their APIs.


Regards,


Don


 



Posted By Charles on 06-14-2011 11:30 AM 

beforefeatureadded appears to be a dead end. I think that a large part of my problem is that the EditOverlay reacts differently depending on the track mode. For instance, when placing a line or polygon, the feature is not added to the EditOverlay until a double click occurs. For the other track modes, the feature is added to the EditOverlay on some other event, I’m guessing mouse down and mouse up. Having different operations for different feature types will be very confusing both for my trainers and customers. Is there any way to override this double click behavior?


This post is starting to merge with my other post about custom styles in the edit overlay:


gis.thinkgeo.com/Support/Dis…fault.aspx



Charles





 


Hi Charles,


You can read my latest reply in your another post about this.


Regards,


Don