Roald de Wit wrote: > On Fri, 2007-10-26 at 09:52 -0600, Tim Schaub wrote: > >> I'm entirely in favor of this. I don't think the renderer is the right >> place to bomb (or hey maybe even throw an exception!) on an empty geometry. >> >> I think it makes sense to have our format classes throw exceptions on >> empty geometries. They could even have an option to allow empty >> geometry. In any case, it should be up to the application designer to >> decide what to do with empty geometry. As library developers, I don't >> think we should impose our beliefs about empty geometries on all others. >> >> Breaking in only one browser, and only when rendering, is a bit late and >> a bit inconsistent. >> >> >> >>> See ticket #1111 for a simple 'fix'. >>> >> See also http://trac.openlayers.org/ticket/968 >> >> I'd like to see some tests for the renderers really. I haven't looked >> closely at your patch, but it would be nice to make sure we don't slip >> once we decide to make a change (like make browser behavior consistent). >> > > That fix in the patch I mentioned is probably not the best solution > (although it worked for us). > > A few places where I can imagine we could prevent the renderer from > trying to render the empty geometry is: > > - Renderer/Elements.js: drawGeometryNode() > - Renderer.js: drawFeature() > - Format/*.js: parseGeometry() > > It would be nice if we can come up with a clean solution for this. > > Roald > >
Chris has noted on IRC that he doesn't think VML.setNodeDimension() is the right place to catch this error and after digging around I agree. The problem is that a point geometry is created which has an x,y point of (null, null). This eventually causes an exception in the VML renderer. I propose we fix in Geometry/Point.initialize(x,y) where we should throw an exception if x or y is null. Reason: 1. Exceptions are already raised by Format/KML.js if it needs to create a (null,null) point, so I believe we have a precedence for handling errors by raising exceptions. 2. Our error was caused because Format/GML.js allows the creation of (null,null) points, probably from an empty <Point></Point> tag. 3. I don't expect to break any legacy code by forcing Geometry to have valid values because old code would have caused exceptions in VML.js as we discovered. -- Cameron Shorter Geospatial Systems Architect Tel: +61 (0)2 8570 5050 Mob: +61 (0)419 142 254 Think Globally, Fix Locally Commercial Support for Geospatial Open Source Software http://www.lisasoft.com/LISAsoft/SupportedProducts.html _______________________________________________ Dev mailing list [email protected] http://openlayers.org/mailman/listinfo/dev
