[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