[OpenLayers-Users] Multiple linestrings originating from the same point disappear when zooming

cmose cjmose at gmail.com
Wed Jan 23 14:51:15 EST 2008


And follow-up part II. I was wrong about the ie being effected, I had some
funky issue with something on my end. The patch listed in 713 is
incorporated into the version of OL that I'm using (2.5) and I still
experience the disappearing line phenomenon. I'll have to look into the code
in SVG.js I suppose.


cmose wrote:
> 
> Thanks, I'll check out the patch and give that a try. I need to rework my
> example as I am experiencing the same problem in IE on my production app
> but the example I knocked up isn't showing that (in fact it looks like it
> errors out in ie).
> 
> 
> Pierre GIRAUD wrote:
>> 
>> Ok, I just remembered this was an already discussed issue.
>> http://trac.openlayers.org/ticket/719
>> http://trac.openlayers.org/ticket/713
>> 
>> Regards,
>> Pierre
>> 
>> On Jan 19, 2008 12:13 PM, Pierre GIRAUD <bluecarto at gmail.com> wrote:
>>> For your information, your code is correct and I think I've found what
>>> part of the OpenLayers' code is involved in this weird behavior.
>>> I'll try to find out a fix or at least a workaround for this issue. If
>>> your interested in fixing this too, you can have a look at the SVG
>>> renderer (lib/OpenLayers/Renderer/SVG.js) and in particular at
>>> getShortString(), inValidRange() and MAX_PIXEL.
>>>
>>> I plan to fill a bug report, but don't hesitate to do so if your
>>> quicker.
>>>
>>> Hum, I was unable to reproduce the issue under IE with your example.
>>>
>>> Regards,
>>> Pierre
>>>
>>>
>>>
>>> On Jan 18, 2008 5:23 PM, cmose <cjmose at gmail.com> wrote:
>>> >
>>> > I have several lineStrings on a vector layer that originate from the
>>> same
>>> > lat/lon coordinate. As you zoom in on the map, the lineStrings
>>> randomly
>>> > disappear, e.g,. if you start out with 6 lines originating from the
>>> same
>>> > point, as you zoom in on the map lines will randomly disappear until
>>> there
>>> > are <6 lines left.
>>> >
>>> > I've verified this behavior using a modified version of
>>> vector-features.html
>>> > from the examples directory. I don't have anywhere to host my example
>>> but
>>> > here is my modified script declaration from vector-features.html:
>>> >
>>> >     <script src="../lib/OpenLayers.js"
>>> type="text/javascript"></script>
>>> >     <script type="text/javascript">
>>> >         var map;
>>> >
>>> >         function init(){
>>> >             map = new OpenLayers.Map('map');
>>> >             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;
>>> >
>>> >             /*
>>> >              * Blue style
>>> >              */
>>> >             var style_blue = OpenLayers.Util.extend({}, layer_style);
>>> >             style_blue.strokeColor = "blue";
>>> >             style_blue.fillColor = "blue";
>>> >
>>> >             /*
>>> >              * Green style
>>> >              */
>>> >             var style_green = {
>>> >                 strokeColor: "#00FF00",
>>> >                 strokeWidth: 2,
>>> >                 pointRadius: 4,
>>> >                 pointerEvents: "visiblePainted"
>>> >             };
>>> >
>>> >             /*
>>> >              * Mark style
>>> >              */
>>> >             var style_mark = OpenLayers.Util.extend({},
>>> > OpenLayers.Feature.Vector.style['default']);
>>> >             // each of the three lines below means the same, if only
>>> one of
>>> >             // them is active: the image will have a size of 24px, and
>>> the
>>> >             // aspect ratio will be kept
>>> >             // style_mark.pointRadius = 12;
>>> >             // style_mark.graphicHeight = 24;
>>> >             // style_mark.graphicWidth = 24;
>>> >
>>> >             // if graphicWidth and graphicHeight are both set, the
>>> aspect
>>> > ratio
>>> >             // of the image will be ignored
>>> >             style_mark.graphicWidth = 24;
>>> >             style_mark.graphicHeight = 20;
>>> >             style_mark.graphicXOffset = -(style_mark.graphicWidth/2); 
>>> //
>>> > this is the default value
>>> >             style_mark.graphicYOffset = -style_mark.graphicHeight;
>>> >             style_mark.externalGraphic = "../img/marker.png";
>>> >
>>> >             var vectorLayer = new OpenLayers.Layer.Vector("Simple
>>> Geometry",
>>> > {style: layer_style});
>>> >                 var point = OpenLayers.Geometry.Point;
>>> >                 var ls = OpenLayers.Geometry.LineString;
>>> >                 var vector = OpenLayers.Feature.Vector;
>>> >                 var lines = [];
>>> >                 var features = [];
>>> >
>>> >                 lines.push(new ls([new point(1,50), new
>>> point(75,60)]));
>>> >                 lines.push(new ls([new point(1,50), new
>>> point(-60,-30)]));
>>> >                 lines.push(new ls([new point(1,50), new
>>> point(40,89)]));
>>> >                 lines.push(new ls([new point(1,50), new
>>> point(-150,-55)]));
>>> >                 lines.push(new ls([new point(1,50), new
>>> point(-30,-25)]));
>>> >                 lines.push(new ls([new point(1,50), new
>>> point(-5,-10)]));
>>> >
>>> >                 for(var i=0;i<lines.length;i++){
>>> >                         features.push(new vector(lines[i], null,
>>> style_green));
>>> >                 }
>>> >
>>> >             map.addLayer(vectorLayer);
>>> >             map.setCenter(new OpenLayers.LonLat(1,50), 5);
>>> >             vectorLayer.addFeatures(features);
>>> >         }
>>> >     </script>
>>> >
>>> > The map is initialized with a zoom level of 5. Once you get to 8 one
>>> of the
>>> > 6 lines disappears, leaving you with 5. Zoom level 9 removes all but
>>> one
>>> > line. Zoom level 10 removes all lines.
>>> >
>>> > I haven't traced the issue beyond drawFeature() in Vector.js. I've
>>> tested
>>> > the example in Firefox thus far but in my app I'm getting the same
>>> behavior
>>> > in ff and ie.
>>> >
>>> > Any ideas?
>>> > --
>>> > View this message in context:
>>> http://www.nabble.com/Multiple-linestrings-originating-from-the-same-point-disappear-when-zooming-tp14952551p14952551.html
>>> > Sent from the OpenLayers Users mailing list archive at Nabble.com.
>>> >
>>> > _______________________________________________
>>> > Users mailing list
>>> > Users at openlayers.org
>>> > http://openlayers.org/mailman/listinfo/users
>>> >
>>>
>> _______________________________________________
>> Users mailing list
>> Users at openlayers.org
>> http://openlayers.org/mailman/listinfo/users
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Multiple-linestrings-originating-from-the-same-point-disappear-when-zooming-tp14952551p15050415.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.




More information about the Users mailing list