changeset 1267:9c09ab5b46ec

added Polygon and LineString aka polylline shape rendering. no creation yet.
author robcast
date Wed, 22 Jan 2014 20:11:36 +0100
parents 52aeee70d2af
children 0b04336453cb
files webapp/src/main/webapp/jquery/digilib-vector.html webapp/src/main/webapp/jquery/jquery.digilib.vector.js
diffstat 2 files changed, 75 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/digilib-vector.html	Wed Jan 22 10:40:17 2014 +0100
+++ b/webapp/src/main/webapp/jquery/digilib-vector.html	Wed Jan 22 20:11:36 2014 +0100
@@ -53,6 +53,15 @@
                         'editable' : true
                     },
                     'id' : 'myBestRect'
+                },{
+                    'geometry' : {
+                        'type' : 'LineString',
+                        'coordinates' : [[0.5, 0.5], [0.7, 0.5], [0.6, 0.6]]
+                    },
+                    'properties' : {
+                        'stroke' : 'green',
+                        'editable' : true
+                    }
                 }]);
                 $('#test-squares')[0].addEventListener('load', function (evt) {
                     var layer = {'projection': 'relative', 
--- a/webapp/src/main/webapp/jquery/jquery.digilib.vector.js	Wed Jan 22 10:40:17 2014 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.vector.js	Wed Jan 22 20:11:36 2014 +0100
@@ -377,6 +377,66 @@
                 $e1.one("mousedown.dlVertexDrag", getVertexDragHandler(data, shape, 0));
                 $e2.one("mousedown.dlVertexDrag", getVertexDragHandler(data, shape, 1));
             }
+        } else if (gt === 'Polygon') {
+            /*
+             * Polygon
+             */
+            var ps = [];
+            for (var i in coords) {
+                ps[i] = trafo.transform(geom.position(coords[i]));
+            }
+            var $elem = $(svgElement('polygon', {
+                'id': id,
+                'points': ps.join(" "),
+                'stroke': stroke, 'stroke-width': strokeWidth,
+                'fill': fill}));
+            shape.$elem = $elem;
+            $svg.append($elem);
+            if (props.editable) {
+                var $vertexElems = [];
+                shape.$vertexElems = $vertexElems;
+                for (var i in ps) {
+                    var p = ps[i];
+                    var $vertexElem = $(svgElement('rect', {
+                        'x': p.x-hs/2, 'y': p.y-hs/2, 'width': hs, 'height': hs,
+                        'stroke': 'darkgrey', 'stroke-width': 1, 'fill': 'none',
+                        'class': css+'svg-handle', 'style': 'pointer-events:all'}));
+                    $vertexElems[i] = $vertexElem;
+                    // getVertexDragHandler needs shape.$vertexElems
+                    $vertexElem.one("mousedown.dlVertexDrag", getVertexDragHandler(data, shape, i));
+                }
+                $svg.append($vertexElems);
+            }
+        } else if (gt === 'LineString') {
+            /*
+             * Polyline
+             */
+            var ps = [];
+            for (var i in coords) {
+                ps[i] = trafo.transform(geom.position(coords[i]));
+            }
+            var $elem = $(svgElement('polyline', {
+                'id': id,
+                'points': ps.join(" "),
+                'stroke': stroke, 'stroke-width': strokeWidth,
+                'fill': 'none'}));
+            shape.$elem = $elem;
+            $svg.append($elem);
+            if (props.editable) {
+                var $vertexElems = [];
+                shape.$vertexElems = $vertexElems;
+                for (var i in ps) {
+                    var p = ps[i];
+                    var $vertexElem = $(svgElement('rect', {
+                        'x': p.x-hs/2, 'y': p.y-hs/2, 'width': hs, 'height': hs,
+                        'stroke': 'darkgrey', 'stroke-width': 1, 'fill': 'none',
+                        'class': css+'svg-handle', 'style': 'pointer-events:all'}));
+                    $vertexElems[i] = $vertexElem;
+                    // getVertexDragHandler needs shape.$vertexElems
+                    $vertexElem.one("mousedown.dlVertexDrag", getVertexDragHandler(data, shape, i));
+                }
+                $svg.append($vertexElems);
+            }
         }
     };
 
@@ -431,6 +491,12 @@
                 }
                 $shape.attr({'x': rect.x, 'y': rect.y,
                     'width': rect.width, 'height': rect.height});               
+            } else if (shapeType === 'Polygon' || shapeType === 'LineString' ) {
+                var points = $shape.attr('points');
+                var ps = points.split(' ');
+                ps[vtx] = pt.x + ',' + pt.y;
+                points = ps.join(' ');
+                $shape.attr('points', points);
             }
             return false;
         };