diff options
Diffstat (limited to 'misc/openlayers/examples/snap-split.html')
-rw-r--r-- | misc/openlayers/examples/snap-split.html | 281 |
1 files changed, 0 insertions, 281 deletions
diff --git a/misc/openlayers/examples/snap-split.html b/misc/openlayers/examples/snap-split.html deleted file mode 100644 index 13306cc..0000000 --- a/misc/openlayers/examples/snap-split.html +++ /dev/null @@ -1,281 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> - <meta name="apple-mobile-web-app-capable" content="yes"> - <title>Snapping & Splitting</title> - <link rel="stylesheet" href="../theme/default/style.css" type="text/css"> - <!--[if lte IE 6]> - <link rel="stylesheet" href="../theme/default/ie6-style.css" type="text/css" /> - <![endif]--> - <link rel="stylesheet" href="style.css" type="text/css"> - <style type="text/css"> - .olControlEditingToolbar .olControlModifyFeatureItemInactive { - background-position: -1px -1px; - } - .olControlEditingToolbar .olControlModifyFeatureItemActive { - background-position: -1px -24px; - } - label.head { - font-weight: bold; - padding: 1em 0 0.1em 0; - border-bottom: 1px solid gray; - } - td { - padding: 0.25em 1em; - } - tr.head td { - text-align: center; - font-weight: bold; - } - </style> - <script src="../lib/Firebug/firebug.js"></script> - <script src="../lib/OpenLayers.js"></script> - <script type="text/javascript"> - - OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '2'; - - function init() { - initMap(); - initUI(); - } - - var map, draw, modify, snap, split, vectors; - function initMap() { - - map = new OpenLayers.Map('map'); - var styles = new OpenLayers.StyleMap({ - "default": new OpenLayers.Style(null, { - rules: [ - new OpenLayers.Rule({ - symbolizer: { - "Point": { - pointRadius: 5, - graphicName: "square", - fillColor: "white", - fillOpacity: 0.25, - strokeWidth: 1, - strokeOpacity: 1, - strokeColor: "#333333" - }, - "Line": { - strokeWidth: 3, - strokeOpacity: 1, - strokeColor: "#666666" - } - } - }) - ] - }), - "select": new OpenLayers.Style({ - strokeColor: "#00ccff", - strokeWidth: 4 - }), - "temporary": new OpenLayers.Style(null, { - rules: [ - new OpenLayers.Rule({ - symbolizer: { - "Point": { - pointRadius: 5, - graphicName: "square", - fillColor: "white", - fillOpacity: 0.25, - strokeWidth: 1, - strokeOpacity: 1, - strokeColor: "#333333" - }, - "Line": { - strokeWidth: 3, - strokeOpacity: 1, - strokeColor: "#00ccff" - } - } - }) - ] - }) - }); - - // allow testing of specific renderers via "?renderer=Canvas", etc - var renderer = OpenLayers.Util.getParameters(window.location.href).renderer; - renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers; - - // create three vector layers - vectors = new OpenLayers.Layer.Vector("Lines", { - isBaseLayer: true, - strategies: [new OpenLayers.Strategy.Fixed()], - protocol: new OpenLayers.Protocol.HTTP({ - url: "data/roads.json", - format: new OpenLayers.Format.GeoJSON() - }), - styleMap: styles, - maxExtent: new OpenLayers.Bounds( - 1549471.9221, 6403610.94, 1550001.32545, 6404015.8 - ), - renderers: renderer - }); - map.addLayer(vectors); - - // configure the snapping agent - snap = new OpenLayers.Control.Snapping({layer: vectors}); - map.addControl(snap); - snap.activate(); - - // configure split agent - split = new OpenLayers.Control.Split({ - layer: vectors, - source: vectors, - tolerance: 0.0001, - eventListeners: { - aftersplit: function(event) { - flashFeatures(event.features); - } - } - }); - map.addControl(split); - split.activate(); - - // add some editing tools to a panel - var panel = new OpenLayers.Control.Panel({ - displayClass: "olControlEditingToolbar" - }); - draw = new OpenLayers.Control.DrawFeature( - vectors, OpenLayers.Handler.Path, - {displayClass: "olControlDrawFeaturePoint", title: "Draw Features"} - ); - modify = new OpenLayers.Control.ModifyFeature( - vectors, {displayClass: "olControlModifyFeature", title: "Modify Features"} - ); - panel.addControls([ - new OpenLayers.Control.Navigation({title: "Navigate"}), - draw, modify - ]); - map.addControl(panel); - - map.addControl(new OpenLayers.Control.MousePosition()); - - map.zoomToMaxExtent(); - } - - function flashFeatures(features, index) { - if(!index) { - index = 0; - } - var current = features[index]; - if(current && current.layer === vectors) { - vectors.drawFeature(features[index], "select"); - } - var prev = features[index-1]; - if(prev && prev.layer === vectors) { - vectors.drawFeature(prev, "default"); - } - ++index; - if(index <= features.length) { - window.setTimeout(function() {flashFeatures(features, index)}, 75); - } - } - - /** - * Add behavior to page elements. This basically lets us set snapping - * target properties with the checkboxes and text inputs. The checkboxes - * toggle the target node, vertex, or edge (boolean) values. The - * text inputs set the nodeTolerance, vertexTolerance, or edgeTolerance - * property values. - */ - function initUI() { - // add behavior to snap elements - var snapCheck = document.getElementById("snap_toggle"); - snapCheck.checked = true; - snapCheck.onclick = function() { - if(snapCheck.checked) { - snap.activate(); - document.getElementById("snap_options").style.display = "block"; - } else { - snap.deactivate(); - document.getElementById("snap_options").style.display = "none"; - } - }; - var target, type, tog, tol; - var types = ["node", "vertex", "edge"]; - var target = snap.targets[0]; - for(var j=0; j<types.length; ++j) { - type = types[j]; - tog = document.getElementById("target_" + type); - tog.checked = target[type]; - tog.onclick = (function(tog, type, target) { - return function() {target[type] = tog.checked;} - })(tog, type, target); - tol = document.getElementById("target_" + type + "Tolerance"); - tol.value = target[type + "Tolerance"]; - tol.onchange = (function(tol, type, target) { - return function() { - target[type + "Tolerance"] = Number(tol.value) || 0; - } - })(tol, type, target); - } - - // add behavior to split elements - var splitCheck = document.getElementById("split_toggle"); - splitCheck.checked = true; - splitCheck.onclick = function() { - if(splitCheck.checked) { - split.activate(); - document.getElementById("split_options").style.display = "block"; - } else { - split.deactivate(); - document.getElementById("split_options").style.display = "none"; - } - }; - var edgeCheck = document.getElementById("edge_toggle"); - edgeCheck.checked = split.edge; - edgeCheck.onclick = function() { - split.edge = edgeCheck.checked; - }; - - document.getElementById("clear").onclick = function() { - modify.deactivate(); - vectors.destroyFeatures(); - }; - - } - - </script> - </head> - <body onload="init()"> - <h1 id="title">Snapping & Splitting Example</h1> - <div id="tags"> - vector, feature, splitting, snapping, stylemap, advanced - </div> - <div id="shortdesc">A demonstration snapping and splitting while editing vector features.</div> - <div id="map" class="smallmap"></div> - <br> - <input type="checkbox" id="snap_toggle" /> - <label for="snap_toggle" class="head">Enable Snapping</label> - <table id="snap_options"> - <tbody> - <tr class="head"> - <td>target</td><td>node</td><td>vertex</td><td>edge</td> - </tr> - <tr> - <td>roads</td> - <td><input type="checkbox" id="target_node" /><input id="target_nodeTolerance" type="text" size="3" /></td> - <td><input type="checkbox" id="target_vertex" /><input id="target_vertexTolerance" type="text" size="3" /></td> - <td><input type="checkbox" id="target_edge" /><input id="target_edgeTolerance" type="text" size="3" /></td> - </tr> - </tbody> - </table> - <br> - <input type="checkbox" id="split_toggle" /> - <label for="split_toggle" class="head">Enable Splitting</label> - <table id="split_options"> - <tbody> - <tr> - <td><label for="edge_toggle">edges split</label></td> - <td><input type="checkbox" id="edge_toggle" /></td> - </tr> - </tbody> - </table> - <br> - <button id="clear">clear</button> Clear all features. - </body> -</html> |