[OpenLayers-Users] Multiple linestrings originating from the
same point disappear when zooming
Pierre GIRAUD
bluecarto at gmail.com
Sat Jan 19 06:31:40 EST 2008
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
> >
>
More information about the Users
mailing list