Mapnik's geometry_type (include/mapnik/geometry.hpp) stores the eGeomType as either Point, LineString, or Polygon. Now that we support user-driven arbitrary combinations of converters like stroking, smoothing, simplification, clipping, etc (vertex_converters) the resultant geometry type is not known because:
However, this limitation makes writing proper placement logic difficult. For example, if a user wants a single marker to be placed on the middle point of a line (say like in #1604), it would be great to know whether the original geometry was a line or polygon.
So, I propose modifying all necessary AGG headers to enable the type() method. It should report the original geometry type and all usage will need to be aware that that geometry type may not longer be correct. But, for placement conditions using the original geometry type may still be ideal.
modify agg conv classes to support type() member - closes #1607 refs #…
use middle_point placement algorithm for marker POINT placement on li…
…nes - closes #1604 - refs #1350 and refs #1607
close #1548 with explict handling of point geometries and amend 629d768…
… for cairo/grid renderers to ensure proper placement on lines (refs #1604,#1350,#1607)
Use middle_point placement for marker POINT placement on lines
REFS #1604, #1350, #1607 and #1625
Fix line placement of markers on points (#1548)