Hi, I'm sorry, but I have a problem.
When I implement this, I can "pan" the map, and when I go over a marker, A popup appears, and when I go out of the marker, the popup disappear. That's ok, but after the popup has appear an disappear, now I can not "pan" the map. Maybe the popup has deactivated something. Can anyone help me? Thanks Esteban Olm after a popup is how 2009/8/5 Adrian Popa <adrian_gh.p...@romtelecom.ro> > Following Alexandre's suggestion, here's what I did: > > ... //in init() > map.addLayer(markers); > //add the main select (for regular popups) > select = new OpenLayers.Control.SelectFeature(markers, {toggle:true, > clickout: true}); > markers.events.on({ "featureselected": onMarkerSelect, > "featureunselected": onMarkerUnselect}); > > //add the second select for tooltips: > var highlightCtrl = new OpenLayers.Control.SelectFeature(markers, { > hover: true, highlightOnly: true, renderIntent: "temporary", > eventListeners: { featurehighlighted: tooltipSelect, > featureunhighlighted: tooltipUnselect } }); > > //the order in which you add these lines seems to matter! > map.addControl(highlightCtrl); > map.addControl(select); > highlightCtrl.activate(); > select.activate(); > > ...//support functions > var lastFeature = null; > var tooltipPopup = null; > > function tooltipSelect(event){ > var feature = event.feature; > var selectedFeature = feature; > //if there is already an opened details window, don\'t draw the > tooltip > if(feature.popup != null){ > return; > } > //if there are other tooltips active, destroy them > if(tooltipPopup != null){ > map.removePopup(tooltipPopup); > tooltipPopup.destroy(); > if(lastFeature != null){ > delete lastFeature.popup; > tooltipPopup = null; > } > } > lastFeature = feature; > var tooltipPopup = new OpenLayers.Popup("activetooltip", > feature.geometry.getBounds().getCenterLonLat(), > new OpenLayers.Size(80,12), > " "+feature.attributes.name, > true ); > //this is messy, but I'm not a CSS guru > tooltipPopup.contentDiv.style.backgroundColor='ffffcb'; > tooltipPopup.closeDiv.style.backgroundColor='ffffcb'; > tooltipPopup.contentDiv.style.overflow='hidden'; > tooltipPopup.contentDiv.style.padding='3px'; > tooltipPopup.contentDiv.style.margin='0'; > tooltipPopup.closeOnMove = true; > tooltipPopup.autoSize = true; > feature.popup = tooltipPopup; > map.addPopup(tooltipPopup); > } > function tooltipUnselect(event){ > var feature = event.feature; > if(feature != null && feature.popup != null){ > map.removePopup(feature.popup); > feature.popup.destroy(); > delete feature.popup; > tooltipPopup = null; > lastFeature = null; > } > } > > function onMarkerSelect(event) { > //unselect any previous selections > tooltipUnselect(event); > var feature = event.feature; > var selectedFeature = feature; > var popup = new OpenLayers.Popup.FramedCloud("activeAlarm", > feature.geometry.getBounds().getCenterLonLat(), > new OpenLayers.Size(100,100), > "Loading...<img > src='http://$server/map/symbols/ajax-loader.gif' border=0>", > null, true, onMarkerPopupClose ); > feature.popup = popup; > popup.setOpacity(0.7); > map.addPopup(popup); > //call ajax to get the data > loadDetails(feature.attributes.description); > } > function onMarkerUnselect(event) { > var feature = event.feature; > if(feature.popup) { > map.removePopup(feature.popup); > feature.popup.destroy(); > delete feature.popup; > } > } > function onMarkerPopupClose(evt) { > select.unselectAll(); > } > I hope this helps others trying to add this feature. > > Thanks again for your help. > > Regards, > Adrian > > Alexandre Dube wrote: > > Hi Adrian, > > > > Take a look at this example (1). You can use 2 SelectFeature > > controls for what you need, one with hover:true and > > highlightOnly:true, the other with hover false. The first one won't > > actually select the feature and you can register 3 kinds of > > "highlight" events (see the source) to display your small div/popup. > > > > Hope this helps, > > > > Alexandre > > > > (1) http://openlayers.org/dev/examples/highlight-feature.html > > > > Adrian Popa wrote: > >> Hello everyone, > >> > >> This is sort of a repeat message of "Re: [OpenLayers-Users] > >> Labels/Tooltips on mouse over a Vector layer" - but with a slightly > >> different idea. > >> > >> Problem: I want to display a small div/popup with the marker's name > >> when the user hovers his mouse over the location, and I want to > >> display a bigger popup when the user actually clicks on the location. > >> > >> Current status: > >> * I can use {hover: true} to register > >> featureselected/featureunselected when I hover over a marker instead > >> on when I click on the maker. > >> * I haven't found any events that could differentiate between hover > >> and click > >> > >> I'm thinking I could register my select control with hover: true and > >> allow featureselected to execute the same function for both when I > >> click on the makrer as well as when I hover over the marker. I would > >> like to know if there's any way to find out in the event inside the > >> function if the user clicked or not his mouse. Depending on this, I > >> would show one popup or the other. > >> > >> Something like: > >> > >> select = new OpenLayers.Control.SelectFeature(markers, > >> {clickout:true, hover:true}); > >> markers.events.on({ "featureselected": onMarkerSelect, > >> "featureunselected": onMarkerUnselect, "visibilitychanged": > >> onMarkerToggle }); > >> map.addControl(select); > >> select.activate(); > >> > >> function onMarkerSelect(event){ > >> var feature = event.feature; > >> //find out if the user clicked or not > >> var clicked = event.*findAWayToSeeIfTheUserClicked()*; > >> if(clicked){ > >> //show larger popup > >> } > >> else{ > >> //show smaller popup > >> } > >> } > >> > >> Suggestions are welcome. > >> > >> Thanks, > >> Adrian > >> ------------------------------------------------------------------------ > >> > >> _______________________________________________ > >> Users mailing list > >> Users@openlayers.org > >> http://openlayers.org/mailman/listinfo/users > >> > > > > > > > -- > --- > Adrian Popa > NOC Division > Network Engineer > Divizia Centrul National de Operare Retea > Departament Transport IP & Metro > Compartiment IP Core & Backbone > Phone: +40 21 400 3099 > > _______________________________________________ > Users mailing list > Users@openlayers.org > http://openlayers.org/mailman/listinfo/users >
_______________________________________________ Users mailing list Users@openlayers.org http://openlayers.org/mailman/listinfo/users