[OpenLayers-Dev] Layers stopping mouseover events (?)
cozmotion
cozmotion at comcast.net
Sun Nov 23 19:39:23 EST 2008
I have a project that uses lines with markers at "waypoints". when I draw
the lines (features) in separate layers, as I'd like, the mouseover events
for the markers are hidden except for the markers of one of the layers.
...When I turn off the layer where the events do work, the events for the
(next?) layer start working, though only the events for that layer's
markers.
I see discussion of this same problem about a year ago, but I wonder if a
fix or a workaround has been developed.
Here's simplified code that shows the problem:
map = new OpenLayers.Map('map',{
controls:[
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.Attribution()],
numZoomLevels: 19,
units: 'm'
});
var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://labs.metacarta.com/wms/vmap0", {layers: 'basic'}
);
map.addLayer(layer);
/*
* Layer style
*/
// we want opaque external graphics and non-opaque internal
graphics
var layer_style = OpenLayers.Util.extend({},
OpenLayers.Feature.Vector.style['default']);
layer_style.fillOpacity = 0.2;
layer_style.graphicOpacity = 1;
/*
* Green style
*/
var style_green = {
strokeColor: "#00FF00",
strokeWidth: 3,
strokeDashstyle: "dashdot",
pointRadius: 6,
pointerEvents: "visiblePainted"
};
var vectorLayer = new OpenLayers.Layer.Vector("Track 1", {style:
layer_style});
// create a point feature
var point = new OpenLayers.Geometry.Point(-121.04, 47.68);
var point2 = new OpenLayers.Geometry.Point(-121.04, 48.68);
var point3 = new OpenLayers.Geometry.Point(-121.04, 49.68);
// create a line feature from a list of points
var pointList = [];
pointList.push(point);
pointList.push(point2);
pointList.push(point3);
var lineFeature = new OpenLayers.Feature.Vector( new
OpenLayers.Geometry.LineString(pointList),null,style_green);
map.addLayer(vectorLayer);
vectorLayer.addFeatures([ lineFeature]);
//MARKERS
var markers = new OpenLayers.Layer.Markers( "Points 1" );
map.addLayer(markers);
var size = new OpenLayers.Size(10,17);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new
OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png',size,offset);
marker = new OpenLayers.Marker(new OpenLayers.LonLat(-121.04,
47.68),icon.clone());
marker.events.register('mouseover', marker, function(evt) {
alert('pt 1/1');OpenLayers.Event.stop(evt); });
markers.addMarker(marker);
marker = new OpenLayers.Marker(new OpenLayers.LonLat(-121.04,
49.68),icon.clone());
marker.events.register('mouseover', marker, function(evt) {
alert('pt 1/2');OpenLayers.Event.stop(evt); });
markers.addMarker(marker);
//boat 2
var vectorLayer2 = new OpenLayers.Layer.Vector("Track 2",
{style: layer_style});
// create a point feature
var point = new OpenLayers.Geometry.Point(-131.04, 47.68);
var point2 = new OpenLayers.Geometry.Point(-131.04, 48.68);
var point3 = new OpenLayers.Geometry.Point(-131.04, 49.68);
// create a line feature from a list of points
var pointList = [];
pointList.push(point);
pointList.push(point2);
pointList.push(point3);
var lineFeature = new OpenLayers.Feature.Vector( new
OpenLayers.Geometry.LineString(pointList),null,style_green);
map.addLayer(vectorLayer2);
vectorLayer2.addFeatures([ lineFeature]);
//MARKERS
var markers = new OpenLayers.Layer.Markers( "Points 2" );
map.addLayer(markers);
var size = new OpenLayers.Size(10,17);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new
OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png',size,offset);
marker = new OpenLayers.Marker(new OpenLayers.LonLat(-131.04,
47.68),icon.clone());
marker.events.register('mouseover', marker, function(evt) {
alert('pt 2/1');OpenLayers.Event.stop(evt); });
markers.addMarker(marker);
marker = new OpenLayers.Marker(new OpenLayers.LonLat(-131.04,
49.68),icon.clone());
marker.events.register('mouseover', marker, function(evt) {
alert('pt 2/2');OpenLayers.Event.stop(evt); });
markers.addMarker(marker);
map.setCenter(new OpenLayers.LonLat(point.x, point.y), 5);
}
and I uploaded the html file to demo it
http://www.nabble.com/file/p20651777/line_test2.html line_test2.html
--
View this message in context: http://www.nabble.com/Layers-stopping-mouseover-events-%28-%29-tp20651777p20651777.html
Sent from the OpenLayers Dev mailing list archive at Nabble.com.
More information about the Dev
mailing list