Hello Sajeer,
When I try to use {hover: true} in the SelectFeature definition, the
popups appear and dissapear when I hover the mouse over a marker. If I
use hover:false, I get the regular functionality - the popups
appear/dissapear when I click on them.
This is great... problem is - I would like to use both methods of
interaction: when the user hovers over a marker, he gets a small
div/popup with minimal information, and if the user clicks on the marker
he gets the whole information in a different popup.
From what I've seen, and from your example, there are no special events
for mouseOver/mouseOut. It can be achieved with hover true/false. In
this case, the only sollution would be to create a different
selectControl for the same layer that handles just hover events. I don't
know if I can associate different select controls with the same layer,
or if I can have two controls active and working at the same time (a
previous example I tried with 2 select cotrols on different layers
didn't allow the "bottom" select to work).
Here's what I tried so far:
//markers is a KML layer
map.addLayer(markers);
//add the regular select behaviour
select = new OpenLayers.Control.SelectFeature(markers);
markers.events.on({ "featureselected": onMarkerSelect,
"featureunselected": onMarkerUnselect, "visibilitychanged":
onMarkerToggle });
map.addControl(select);
select.activate();
//add the hover select control
var hoverSelect = new OpenLayers.Control.SelectFeature(markers,
{clickout:true, hover:true, onSelect:
tooltipSelect});
map.addControl(hoverSelect);
hoverSelect.activate();
The behavior is the following: when I hover over an item,
tooltipSelect() is executed, but also onMarkerSelect(). It seems the
hover:true "jumps" to the select object :)
Any ideas on how to get the behavior I need?
Thanks.
Regards,
Adrian
Sajeer... wrote:
Ok, then replace
selectControl = *new* OpenLayers.Control.SelectFeature(kmlLayer,
{hover: *true*,onSelect: onFeatureSelect, onUnselect: onFeatureUnselect});
with
selectControl = *new* OpenLayers.Control.SelectFeature(kmlLayer,
{ clickout: true, hover: false });
and add this too
kmlLayer.events.on({
"featureselected": function(e) {
onFeatureSelect(e.feature);
},
"featureunselected": function(e) {
onFeatureUnselect(e.feature);
}
});
Regards
Sajeer
On Thu, Jul 16, 2009 at 3:49 PM, Adrian Popa
<[email protected] <mailto:[email protected]>>
wrote:
Thank you Sajeer,
To make it clear for me: you would register the "featureselected"
event for mouse over? Where do you specify hover:true/hover:false?
I'd like to be able to keep featureselected for when the user
actually clicks on the feature - so I'd like to register 2 events
to generate 2 different popups...
Regards,
Adrian
Sajeer... wrote:
you can register this function for click event by replacing
hover:true with hover:false * *
Regards
Sajeer
On Thu, Jul 16, 2009 at 3:38 PM, Adrian Popa
<[email protected]
<mailto:[email protected]>> wrote:
Hello Sajeer,
How do you register your functions to events so that they are
executed on mouse over instead of on click? Or is your popup
created when you click a feature?
Thanks,
Adrian
Sajeer... wrote:
*
Hi,
try this one,
function
*onFeatureSelect(feature) {
selectedFeature = feature;
popup =
*new*
OpenLayers.Popup.FramedCloud("",
feature.geometry.getBounds().getCenterLonLat(),
*new* OpenLayers.Size(100,100), "<div style='padding:15px
5px 5px 10px;'>"+ "<table
style='font-size:13px;color:red'>"+ "<tr>"+ "<td
width='40%'>Name</td>"+ "<td width='5%'>:</td>"+
"<td>"+feature.attributes.label+"</td>"+ "</tr>"+
"</table></div>", *null*, *true*, onPopupClose);
feature.popup = popup;
map.addPopup(popup);
}
*function* onPopupClose(evt) {
selectControl.unselect(selectedFeature);
}
*function* onFeatureUnselect(feature) {
* *map.removePopup(feature.popup);
feature.popup.destroy();
feature.popup = *null*;
}
var kmlLayer = new OpenLayers.Layer.GML(.............);
var selectControl = *new*
OpenLayers.Control.SelectFeature(kmlLayer,
{hover: *true*,onSelect: onFeatureSelect, onUnselect:
onFeatureUnselect});
map.addControl(selectControl);
selectControl.activate();
Regards
Sajeer
On Thu, Jul 16, 2009 at 3:07 PM, Adrian Popa
<[email protected]
<mailto:[email protected]>> wrote:
Hello Pavel,
Great idea... However - I would like to keep popups for
when I click on an item.
Would it be possible to do something like:
layer.events.on({ "featureselected": onLocationSelect,
"featureunselected": onLocationUnselect, //open regular
popups
"onMouseOver":
onLocationMouseOver, "onMouseOut": onLocationMouseOut
});?
Problem is - I don't see those kinds of events on my
layer. These are the event types for a vector layer:
0 "beforefeatureadded"
1 "beforefeaturesadded"
2 "featureadded"
3 "featuresadded"
4 "beforefeatureremoved"
5 "featureremoved"
6 "featuresremoved"
7 "beforefeatureselected"
8 "featureselected"
9 "featureunselected"
10 "beforefeaturemodified"
11 "featuremodified"
12 "afterfeaturemodified"
13 "vertexmodified"
14 "sketchstarted"
15 "sketchmodified"
16 "sketchcomplete"
17 "refresh"
18 "loadstart"
19 "loadend"
20 "loadcancel"
21 "visibilitychanged"
22 "move"
23 "moveend"
Any idea what the events would be? If they are supported?
Pavel Iacovlev wrote:
There many possible ways around this problem.
One is rewrite/extend your popup code. Popup is triggered on
mouseover
and on mouseout popup is hidden. You can style the popup so it looks
more like a tooltip/label.
On Thu, Jul 16, 2009 at 2:34 PM, Adrian
Popa<[email protected]>
<mailto:[email protected]> wrote:
Hi,
Just a quick question - my users want to see the name of the city
when
they are hovering over points loaded through KML in a vector layer.
I
know this isn't supported, but are there plans to support such
labels?
I'm thinking a different strategy might be to override/inherit the
OpenLayers.Control.MousePosition class and based on coordinate
changes,
load the name from the closest KML feature. It doesn't need to be
too
accurate, but it can't be an exact match, because the mouse will
never
get that close to the KML coordinates.
However this solution will be costly - because on every mouse move
you
would have to go through all the KML items and see which match...
What are your ideas regarding this subject?
---
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
[email protected] <mailto:[email protected]>
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
[email protected] <mailto:[email protected]>
http://openlayers.org/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users