OpenLayers OpenLayers

Ticket #517 (closed bug: fixed)

Opened 2 years ago

Last modified 2 years ago

Vector: Renderer problems in IE6

Reported by: openlayers Assigned to:
Priority: major Milestone: 2.4 Release
Component: general Version:
Keywords: vector, editing, renderer, ie Cc:
State:

Description

I've just tested the vector functions from the sandbox: works well in Firefox but not so with IE6.

Seems that there are problems with the Renderer:

  • while drawing a line or polygon, the snapping points are not coincide with the end points of the rubber band line (digitizing of polygon looks weird)
  • features within vector layers don't maintain there exact position while panning the map

The more you are zooming into the map, the worse is the problem. Maybe a rounding problem with float numbers or translating screen coordinates to map coordinates?

Regards, Alex Karnstedt

Attachments

screenshot-editing-ie6.jpg (11.0 kB) - added by openlayers on 03/07/07 07:02:57.
Screenshot IE6: Editing a polygon (EditingDemo.html)

Change History

03/07/07 07:02:57 changed by openlayers

  • attachment screenshot-editing-ie6.jpg added.

Screenshot IE6: Editing a polygon (EditingDemo.html)

03/09/07 05:46:34 changed by openlayers

  • priority changed from minor to major.

I've done some debugging with the VML renderer. I am not an expert in VML but it seems the problem is: VML can't handle floating point numbers as coordinates. So you can't draw shapes into the map coordinate space.

for example:

i have a line geometry lon=55.107421875,lat=3.33984375,lon=63.896484375,lat=-0.791015625

the generated VML results in something like:

    <v:group id=OpenLayers.Layer.Vector_8181_root
        style="WIDTH: 1260px; HEIGHT: 500px" coordsize="111,-44"
        coordorigin="40,27">
        <v:shape id=OpenLayers.Geometry.Point_8947
            style="LEFT: 55px; WIDTH: 1px; TOP: 3px; HEIGHT: 1px"
            coordsize="10,10" filled="t" fillcolor="black" stroked="t"
            strokecolor="blue" strokeweight="1pt"
            path=" m0,-5 at-5,-5,5,5,0,-5,0,-5 x e">
            <v:path id=OpenLayers.Geometry.Point_8947_path></v:path>
            <v:fill opacity="26214f"></v:fill>
            <v:stroke opacity="1"></v:stroke>
        </v:shape>
        <v:shape id=OpenLayers.Geometry.LinearRing_9037
            style="LEFT: 55px; WIDTH: 0px; TOP: 3px; HEIGHT: 0px"
            coordsize="0,0" filled="t" fillcolor="black" stroked="t"
            strokecolor="blue" strokeweight="1pt"
            path=" m0,0 l0,0 xe">
            <v:fill opacity="26214f"></v:fill>
            <v:stroke opacity="1"></v:stroke>
        </v:shape>
        <v:shape id=OpenLayers.Geometry.Point_6311
            style="LEFT: 64px; WIDTH: 1px; TOP: 0px; HEIGHT: 1px"
            coordsize="10,10" filled="t" fillcolor="black" stroked="t"
            strokecolor="yellow" strokeweight="1pt"
            path=" m0,-5 at-5,-5,5,5,0,-5,0,-5 x e">
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
            <v:path id=OpenLayers.Geometry.Point_6311_path></v:path>
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
        </v:shape>
        <v:shape id=OpenLayers.Geometry.LineString_3400
            style="LEFT: 55px; WIDTH: 8px; TOP: 0px; HEIGHT: 4px"
            coordsize="9,4" filled="f" fillcolor="black" stroked="t"
            strokecolor="yellow" strokeweight="1pt"
            path=" m0,4 l9,0,0,4 e">
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
            <v:fill opacity="0"></v:fill>
            <v:stroke opacity="1"></v:stroke>
        </v:shape>
    </v:group>

In fact the shape should be: style="LEFT: 55.107421875px; WIDTH: 1px; TOP: 3.33984375px; HEIGHT: 1px"

Thats why for small scales the renderer doesn't work.

Alex

03/09/07 17:28:57 changed by sderle

  • milestone set to 2.4 Release.

03/18/07 08:56:36 changed by crschmidt

  • status changed from new to closed.
  • resolution set to fixed.

Fixed in trunk.