Advertisement
bah99

tinyows.js

Nov 28th, 2022
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 3.82 KB | Software | 0 0
  1. var map, wfs;
  2. OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
  3. var DeleteFeature = OpenLayers.Class(OpenLayers.Control, {
  4.   initialize: function(layer, options) {
  5.       OpenLayers.Control.prototype.initialize.apply(this, [options]);
  6.       this.layer = layer;
  7.       this.handler = new OpenLayers.Handler.Feature(
  8.           this, layer, {click: this.clickFeature}
  9.       );
  10.   },
  11.   clickFeature: function(feature) {
  12.       // if feature doesn't have a fid, destroy it
  13.       if(feature.fid == undefined) {
  14.           this.layer.destroyFeatures([feature]);
  15.       } else {
  16.           feature.state = OpenLayers.State.DELETE;
  17.           this.layer.events.triggerEvent("afterfeaturemodified",
  18.                                          {feature: feature});
  19.           feature.renderIntent = "select";
  20.           this.layer.drawFeature(feature);
  21.       }
  22.   },
  23.   setMap: function(map) {
  24.       this.handler.setMap(map);
  25.       OpenLayers.Control.prototype.setMap.apply(this, arguments);
  26.   },
  27.   CLASS_NAME: "OpenLayers.Control.DeleteFeature"
  28. });
  29. function showMsg(szMessage) {
  30.   document.getElementById("message").innerHTML = szMessage;
  31.   setTimeout(
  32.       "document.getElementById('message').innerHTML = ''",2000);
  33. }
  34. function showSuccessMsg(){
  35.   showMsg("Transaction successfully completed");
  36. };
  37. function showFailureMsg(){
  38.   showMsg("An error occured while operating the transaction");
  39. };
  40. function init() {
  41.   map = new OpenLayers.Map('map', {
  42.       projection: new OpenLayers.Projection("EPSG:31467"),
  43.       units: "m",
  44.       maxResolution: "auto",
  45.       maxExtent: new OpenLayers.Bounds(3427000,5788000,3444000,5800000),
  46.       controls: [
  47.           new OpenLayers.Control.PanZoom()
  48.       ]
  49.   });
  50.   var osm = new OpenLayers.Layer.WMS(
  51.       "OSM by Omniscale WMS",
  52.       "http://osm.omniscale.net/proxy/service",
  53.       {layers: 'osm', format: 'image/jpeg'},
  54.       {projection:"EPSG:31467",  units: "m", maxResolution: "auto", maxExtent: new OpenLayers.Bounds(3427000,5788000,3444000,5800000)}
  55.   );
  56.   var saveStrategy = new OpenLayers.Strategy.Save();
  57.   saveStrategy.events.register("success", '', showSuccessMsg);
  58.   saveStrategy.events.register("fail", '', showFailureMsg);
  59.   wfs = new OpenLayers.Layer.Vector("Editable Features", {
  60.       strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy],
  61.       projection: new OpenLayers.Projection("EPSG:31467"),
  62.       protocol: new OpenLayers.Protocol.WFS({
  63.           version: "1.1.0",
  64.           srsName: "EPSG:31467",
  65.           url: "http://127.0.0.1/cgi-bin/tinyows.exe",
  66.           featureNS :  "http://www.tinyows.org/",
  67.           featureType: "frida",
  68.           geometryName: "geom",
  69.           schema: "http://127.0.0.1/cgi-bin/tinyows.exe?service=wfs&request=DescribeFeatureType&version=1.1.0&typename=tows:frida"
  70.       })
  71.   });
  72.   map.addLayers([osm, wfs]);
  73.   var panel = new OpenLayers.Control.Panel(
  74.       {'displayClass': 'customEditingToolbar'}
  75.   );
  76.   var navigate = new OpenLayers.Control.Navigation({
  77.       title: "Pan Map"
  78.   });
  79.   var draw = new OpenLayers.Control.DrawFeature(
  80.       wfs, OpenLayers.Handler.Polygon,
  81.       {
  82.           title: "Draw Feature",
  83.           displayClass: "olControlDrawFeaturePolygon",
  84.           multi: true
  85.       }
  86.   );
  87.   var edit = new OpenLayers.Control.ModifyFeature(wfs, {
  88.       title: "Modify Feature",
  89.       displayClass: "olControlModifyFeature"
  90.   });
  91.   var del = new DeleteFeature(wfs, {title: "Delete Feature"});
  92.   var save = new OpenLayers.Control.Button({
  93.       title: "Save Changes",
  94.       trigger: function() {
  95.           if(edit.feature) {
  96.               edit.selectControl.unselectAll();
  97.           }
  98.           saveStrategy.save();
  99.       },
  100.       displayClass: "olControlSaveFeatures"
  101.   });
  102.   panel.addControls([navigate, save, del, edit, draw]);
  103.   panel.defaultControl = navigate;
  104.   map.addControl(panel);
  105.   map.zoomToMaxExtent();
  106. }
Tags: tinyows.js
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement