Forgot the code, sorry. Best Regards, André Matos http://maps.sapo.pt
-----Original Message----- From: Andre Pereira de Matos Sent: sexta-feira, 16 de Janeiro de 2009 11:02 To: 'Andreas Hocevar' Cc: [email protected]; [email protected] Subject: RE: [OpenLayers-Dev] New DragFeature Control and SelectFeatureControl cross layers. Want to share Hi, I sent the code and a short explanation to OpenLayers dev and users... I didn't see your code yet... But I promise that I will. Thanks for sharing ;) Here is the mail, that I sent: I have done controls and handlers to handle events in features that are in different layers (with OpenLayers controls you only can handle events in a single layer, and that layer must be on the top), and as I received on mail requests to share my code, I decided to send it for the list. With an explanation how it works. Actually I made two controls, FeatureEventHandlerControl and DragFeatureControl and an handler (FeatureHandler) to help the FeatureEventHandlerControl. This two controls works pretty like the SelectFeature and DragFeature OpenLayers controls, but they work cross layers. They don't care about the layers. When you want to get an event from a feature, you must register that feature on the control, and when that event occurres you will be notified. For example: ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Var dragControl = new Sapo.Control.DragFeatureControl([], { 'dragstart': { callback: function(feacture, pixel){/*do something*/} context: this} 'drag': { callback: function(feacture, pixel){/*do something*/} context: this} 'dragend': { callback: function(feacture, pixel){/*do something*/} context: this} } ); Var featureEvtHandler = new Sapo.Control.FeatureEventHandlers([], { 'click': { callback: function(feacture, pixel){/*do something*/} context: this} 'mouseover': { callback: function(feacture, pixel){/*do something*/} context: this} 'mouseout': { callback: function(feacture, pixel){/*do something*/} context: this} } ); Map.addControl(dragControl); Map.addControl(featureEvtHandler); dragControl.activate(); featureEvtHandler.activate(); Var layer1 = new OpenLayers.Layer.Vector("Markers", { projection: new OpenLayers.Projection("EPSG:4326"), styleMap: new OpenLayers.StyleMap({ externalGraphic: "http://openlayers.org/dev/img/marker-gold.png", backgroundGraphic: "http://openlayers.org/dev/examples/marker_shadow.png", graphicYOffset: -20, backgroundXOffset: 0, backgroundYOffset: -17, pointRadius: 10 }) } ); Var layer2 = new OpenLayers.Layer.Vector("Markers 2", { projection: new OpenLayers.Projection("EPSG:4326"), styleMap: new OpenLayers.StyleMap({ externalGraphic: "http://openlayers.org/dev/img/marker-gold.png", backgroundGraphic: "http://openlayers.org/dev/examples/marker_shadow.png", graphicYOffset: -20, backgroundXOffset: 0, backgroundYOffset: -17, pointRadius: 10 }) } ); Map.addLayer(layer1); Map.addLayer(layer2); Var feature1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(-1904105.3415234375, 4392319.753066596)); Var feature2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(-1504105.3415234375, 4392319.753066596)); Layer1.addFeatures([feature1]); Layer2.addFeatures([feature2]); dragControl.addFeature(feature1); featureEvtHandler.addFeature(feature2); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// When occurs an event(dragstart, drag, dragend, click, mouseover, mouseout) in any of this features, in different layers, the callbacks will be notified. If you have any questions just ask us (André or João)! Regards, André Matos http://maps.sapo.pt -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Andreas Hocevar Sent: quinta-feira, 15 de Janeiro de 2009 15:11 To: Andre Pereira de Matos Cc: [email protected]; [email protected] Subject: Re: [OpenLayers-Dev] New DragFeature Control and SelectFeatureControl cross layers. Want to share Hi Andre, 2009/1/13 Andre Pereira de Matos <[email protected]>: > I have made a Project with openlayers, and at some point I had to make a new > handler and a new control to provide draggable feature and handle events > like, click, mouseover, mouseout in features that was in different layers. > > The Openlayers control (DragFeature, SelectFeature) and handlers (Drag, > Feature) only works if the features are all in the same layer and the layer > is on the top. I have no experience with the DragFeature control, but I have created a solution for feature selection that works with multiple layers recently [1]. An example is also avaialable [2]. You may want to check this out, and I'd be interested to see your approach. Also, it would be cool to see if my approach also works with the DragFeature control. Regards, Andreas. [1] http://trac.openlayers.org/ticket/1666 [2] http://dev.openlayers.org/sandbox/ahocevar/singleroot/openlayers/examples/select-feature-multilayer.html -- Andreas Hocevar OpenGeo - http://opengeo.org/ Expert service straight from the developers.
Controls.rar
Description: Controls.rar
_______________________________________________ Dev mailing list [email protected] http://openlayers.org/mailman/listinfo/dev
