"Do you know a way to just change the color of a feature on "hover" without selecting it ? That would be useful......"
Hi Alexandre, I was wondering about the same funcionality here: http://openlayers.org/pipermail/dev/2008-July/003183.html but with featureSelect control thats not possible...I still didnt have time to look into it, but Eric said that I should create my own feature handler-based control. Unfortunatly I still dont have enough knowledge for that, but I think that it maybe could work by using callback functions in featureSelect control. var control = new OpenLayers.Control.SelectFeature(vectorLayer, { hover: true, clickout: false, toggle: false, multiple: false, renderIntent:OpenLayers.Util.extend({},OpenLayers.Feature.Vector.style["select"]), //onSelect: addPopup, //onUnselect: removePopup, callbacks: { 'over':feature_changeColor, 'out':feature_restoreColor } }); And in 'over':feature_changeColor, 'out':feature_restoreColor functions I would change/restore color of one feature like its described here: http://openlayers.org/pipermail/users/2008-July/006586.html Maybe it will work..dunno for sure. I will try this soon and I let you know back! Greets, Ivan On Wed, Jul 30, 2008 at 9:33 PM, Alexandre Dube <[EMAIL PROTECTED]> wrote: > Hi Arnd, > > Thanks for very much for your tips. That works just fine ! > > But for my little application it's not really useful. Do you know a > way to just change the color of a feature on "hover" without selecting > it ? That would be useful for me because I have lines as vector > features and those are really hard to select by clicking on them. You > have to be really precise. > > With a color change, that would be easier to know you can now click > on it. And I don't know if that's possible but it would be nice to have > a bigger "pixel tolerance" when I click. Any clues about that ? > > Arnd Wippermann wrote: >> Hi Alexandre, >> >> i have also tried your example and get it working for me. Also for the >> 'select' rule mentioned by Todd, but on the modifyFeature control instead on >> the selectFeature control. I don't know why. Thanks for the example source. >> >> To select a feature with hover you can set 'hover' to true for the >> selectFeature control. See below. >> >> It's the first time I tried the options for the selectFeature control in an >> own application. They work great. Only 'shiftKey' is a bit awksome, because >> if you don't hit the feature you zoom one level high. >> >> Arnd Wippermann >> >> part from select-feature.html: >> >> drawControls = { >> point: new OpenLayers.Control.DrawFeature( >> vectors, OpenLayers.Handler.Point >> ), >> line: new OpenLayers.Control.DrawFeature( >> vectors, OpenLayers.Handler.Path >> ), >> polygon: new OpenLayers.Control.DrawFeature( >> vectors, OpenLayers.Handler.Polygon >> ), >> select: new OpenLayers.Control.SelectFeature( >> vectors, >> { >> clickout: false, toggle: false, >> multiple: false, hover: false, >> toggleKey: "ctrlKey", // ctrl key removes from selection >> multipleKey: "shiftKey" // shift key adds to selection >> } >> ) >> }; >> >> for(var key in drawControls) { >> map.addControl(drawControls[key]); >> } >> >> >> -----Ursprüngliche Nachricht----- >> Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im >> Auftrag von Alexandre Dube >> Gesendet: Mittwoch, 30. Juli 2008 16:05 >> An: Brenningmeyer, Todd >> Cc: [email protected] >> Betreff: Re: [OpenLayers-Users] wfs stylemap example? >> >> Hi Todd, >> >> You're right. That would be the good way to set a color to a selected >> feature. But first I suggest you to pick an other color than blue because >> it is the default color for "select". >> >> Second, you actually have to select it, like with a selectFeature or >> modifyFeature control. By clicking on it, it will change your color. >> See the example : http://openlayers.org/dev/examples/modify-feature.html >> >> About the "hover" stuff, anybody correct me if I am wrong, but I would try >> to register an event with "mousemove" that would call the clickFeature >> function in the selectFeature.js file ( or an other function that does the >> same thing ). Instead of having to click on the feature directly, being >> over it would select it and change its color. >> >> But, that would be annoying because if you would actually want to select >> it ( and keep it selected ) you would not be able to because as soon as your >> mouse would not be over it, it would be unselected. >> >> Hope this can be of any help, >> >> Brenningmeyer, Todd wrote: >> >>> Thanks so much!!! That's just what I was looking for. My features are now >>> >> displaying as I'd hoped. Is it difficult to extend this to change features >> that are selected onhover? I added: >> >>> var selrules = [new OpenLayers.Rule({ >>> symbolizer: {strokeColor:"blue",strokeWidth: 2}, >>> elseFilter: true >>> })]; >>> oStyleMap.styles["select"].addRules(selrules); >>> >>> to your .js file but nothing happens when I hover over the points >>> (it's a bit gawdy but I just wanted to see if it would work). I think >>> I need to add a control but haven't tried this before. Will this >>> work? The points aren't currently changing. Are there additional >>> considerations that I need to think about. I'm just trying to port my >>> old mapserver interface to openlayers and any help is appreciated. >>> Thanks again, Todd >>> >>> -----Original Message----- >>> From: Alexandre Dube [mailto:[EMAIL PROTECTED] >>> Sent: Tue 7/29/2008 3:22 PM >>> To: Brenningmeyer, Todd >>> Cc: [email protected] >>> Subject: Re: [OpenLayers-Users] wfs stylemap example? >>> >>> Hi Todd, >>> >>> I have some to share. My WFS layer contains line features ( roads ) >>> and they have different color depending on their type ( Local road, >>> Highway, etc ). I hope this can be of any help : >>> >>> ============= otherfile.js ============= >>> >>> // prepare to style the data >>> var oStyleMap = new OpenLayers.StyleMap(); >>> >>> // Array of symbolizer and other values for ROL_CO_CLA attribute // >>> this will be used to create a html select list and will be used // as >>> the symbolizer array for the addUniqueValueRules function // sorry, >>> there's some french words here :) var aRoadType = new Array(); >>> aRoadType = { >>> AUT: { >>> text: "Autoroute", >>> strokeColor: "#ff0000", strokeWidth: 3 }, >>> NAT: { >>> text: "Nationale", >>> strokeColor:"#ff8c00", strokeWidth: 2 }, >>> REG: { >>> text: "Régionale - Reg", >>> strokeColor:"#ff8c00", strokeWidth: 2 }, >>> COL: { >>> text: "Régionale - Col", >>> strokeColor:"#ff8c00", strokeWidth: 2 }, >>> ACC: { >>> text: "Locale - Acc", >>> strokeColor:"#d2b48c", strokeWidth: 2 }, >>> LOC: { >>> text: "Locale - Loc", >>> strokeColor:"#d2b48c", strokeWidth: 2 }, >>> ACH: { >>> text: "Chemin forestier - Ach", >>> strokeColor:"#734c00", strokeWidth: 2 }, >>> MRN: { >>> text:"Chemin forestier - Mrn", >>> strokeColor:"#734c00", strokeWidth: 2 } } >>> >>> // a style will applies to each drawned vector feature depending on // >>> the ROL_CO_CLA attribute value. It will match the good value and >>> applies // the corresponding symbolizers >>> oStyleMap.addUniqueValueRules("default", "ROL_CO_CLA", aRoadType); >>> >>> // If no rules applies to the current vector feature, that means it's >>> // not a road, but an other type of feature like a circle for drag // >>> control. The "elseFilter: true" is used to display those vectors. >>> var rules = [new OpenLayers.Rule({ >>> symbolizer: {strokeColor:"#FF0000",strokeWidth: 2}, >>> elseFilter: true >>> })]; >>> oStyleMap.styles["default"].addRules(rules); >>> >>> ============= yourHTMLFile.html ============= >>> >>> --- inside your <head> section --- >>> <script src="otherfile.js"></script> >>> >>> --- inside your init() function --- >>> >>> OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '2'; >>> >>> // then some variables... map definition... base layer ... some WMS >>> layers ... and : >>> >>> olWFSRoads = new OpenLayers.Layer.WFS( "Roads - WFS", sMSURL, { >>> typename: "roads", map: sMapPath }, { extractAttributes: true, >>> minScale: 49999, >>> typename: "roads", styleMap: oStyleMap } ); >>> >>> // then addlayers, controls, etc. and your <body> >>> >>> Brenningmeyer, Todd wrote: >>> >>> >>>> Hello, >>>> Does anyone have an example code snippet that shows how to use a stylemap >>>> >> with wfs data that is being served as vectors (I'm trying to serve up >> points). I've been trying to get this to work using some of the examples on >> the wiki but I can't quite get the syntax to work properly. If anyone has >> ideas or an example that would be great. >> >>>> Thanks, >>>> Todd >>>> _______________________________________________ >>>> Users mailing list >>>> [email protected] >>>> http://openlayers.org/mailman/listinfo/users >>>> >>>> >>>> >>> >>> >> >> >> -- >> Alexandre Dubé >> Mapgears >> www.mapgears.com >> >> _______________________________________________ >> Users mailing list >> [email protected] >> http://openlayers.org/mailman/listinfo/users >> >> > > > -- > Alexandre Dubé > Mapgears > www.mapgears.com > > _______________________________________________ > Users mailing list > [email protected] > http://openlayers.org/mailman/listinfo/users > _______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
