From 5dea397dec26ba50e696752aa5954dab9768fc34 Mon Sep 17 00:00:00 2001 From: sebastian_pauli Date: Mon, 2 Jan 2023 19:31:33 +0100 Subject: [PATCH] Revert "LANIS Update: - Config Layers Min-Max-Zoom Options - Config Layers Output Format Option - Draw Points / Lines Auto Buffer - Draw Polygons Tracing - Draw Polygons Area Labels - Import Spatialite - Import GeoPackage - Export Time Stamp - Layer Tree Add Custom WMS / WFS" This reverts commit f14585386af29e04fdf611b02fae6f8ed8eabfb1. --- demo/lanis.html | 25 +- dist/netgis.min.css | 2 +- dist/netgis.min.js | 232 +++++------- src/netgis/Client.js | 2 - src/netgis/Events.js | 17 +- src/netgis/LayerTree.css | 24 -- src/netgis/LayerTree.js | 92 +---- src/netgis/MapOpenLayers.js | 712 +++++++----------------------------- src/netgis/Menu.js | 12 - src/netgis/Modal.css | 3 +- src/netgis/Modal.js | 412 --------------------- src/netgis/Toolbar.js | 121 +----- src/netgis/Util.js | 57 +-- 13 files changed, 246 insertions(+), 1465 deletions(-) diff --git a/demo/lanis.html b/demo/lanis.html index 18bdc22..a91aa0e 100644 --- a/demo/lanis.html +++ b/demo/lanis.html @@ -11,7 +11,7 @@ - + @@ -50,16 +50,14 @@ - + - + - - @@ -97,12 +95,12 @@ { "folder": 1, "type": "WMS", "title": "Lagebezeichnungen", "url": "https://geo5.service24.rlp.de/wms/liegenschaften_rp.fcgi?", "name": "Lagebezeichnungen" }, { "folder": 1, "type": "WMS", "title": "Flurstücke", "url": "https://geo5.service24.rlp.de/wms/liegenschaften_rp.fcgi?", "name": "Flurstueck", "username": "abc", "password": "123" }, { "folder": 1, "type": "WMS", "title": "Gebäude / Bauwerke", "url": "https://geo5.service24.rlp.de/wms/liegenschaften_rp.fcgi?", "name": "GebaeudeBauwerke" }, - { "folder": 1, "type": "WMS", "title": "Nutzung", "url": "https://geo5.service24.rlp.de/wms/liegenschaften_rp.fcgi?", "name": "Nutzung", "active": false }, + { "folder": 1, "type": "WMS", "title": "Nutzung", "url": "https://geo5.service24.rlp.de/wms/liegenschaften_rp.fcgi?", "name": "Nutzung", "active": true }, - { "folder": 2, "type": "WFS", "title": "Überschwemmungsgebiete WFS Test", "url": "http://213.139.159.34:80/geoserver/uesg/wfs?", "name": "uesg:uesg_gesetzlich", "outputFormat": "application/json" }, + { "folder": 2, "type": "WFS", "title": "Überschwemmungsgebiete WFS Test", "url": "http://213.139.159.34:80/geoserver/uesg/wfs?", "name": "uesg:uesg_gesetzlich" }, - { "folder": 3, "type": "WMS", "title": "TopPlusOpen", "attribution": "BKG", "url": "https://sgx.geodatenzentrum.de/wms_topplus_open?", "name": "web", "active": false }, - { "folder": 3, "type": "OSM", "title": "Open Street Map", "attribution": "OSM", "active": true, "minZoom": 8, "maxZoom": 11 } + { "folder": 3, "type": "WMS", "title": "TopPlusOpen", "attribution": "BKG", "url": "https://sgx.geodatenzentrum.de/wms_topplus_open?", "name": "web", "active": true }, + { "folder": 3, "type": "OSM", "title": "Open Street Map", "attribution": "OSM" } ], "folders": @@ -143,15 +141,10 @@ "nameURL": "./proxy.php?https://geodaten.naturschutz.rlp.de/kartendienste_naturschutz/mod_alkis/gem_search.php?placename={q}", "parcelURL": "./proxy.php?https://geodaten.naturschutz.rlp.de/kartendienste_naturschutz/mod_alkis/flur_search.php?gmk_gmn={district}&fln={field}&fsn_zae={parcelA}&fsn_nen={parcelB}&export=json" }, - - "import": - { - "geopackageLibURL": "/libs/geopackage/4.2.3/" - }, "export": { - "logo": "/geoportal/client/assets/logo.png", + "logo": "./assets/logo.png", "gifWebWorker": "/libs/gifjs/0.2.0/gif.worker.js", "defaultFilename": "Export", "defaultMargin": 10 @@ -161,7 +154,7 @@ { "buffer": { - "defaultRadius": 100, + "defaultRadius": 10, "defaultSegments": 3 } }, diff --git a/dist/netgis.min.css b/dist/netgis.min.css index a760282..5da995e 100644 --- a/dist/netgis.min.css +++ b/dist/netgis.min.css @@ -1 +1 @@ -.netgis-attribution{position:absolute;left:0;bottom:0;padding:1mm;background:rgba(255,255,255,0.5);font-size:.8em!important;z-index:100}.netgis-client{position:absolute;width:100%;height:100%;overflow:hidden;background:#aaa}.netgis-client *{box-sizing:border-box}.netgis-client .netgis-loader{position:absolute;width:100%;height:100%;z-index:9999;text-align:center;font-size:12mm}.netgis-client .netgis-hide{display:none}.netgis-client .netgis-loader i{position:absolute;top:50%;transform:translateY(-50%);animation:netgis-spin 2s linear infinite}@keyframes netgis-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}.netgis-controls{position:absolute;width:12mm;left:0;bottom:8mm;z-index:100}.netgis-controls button{font-size:6mm!important;width:100%;height:12mm;padding:0;border:none;background:none;cursor:pointer;color:white;text-shadow:-0.5mm 0 .3mm #000,.5mm 0 .3mm #000,0 -0.5mm .3mm #000,0 .5mm .3mm #000,0 1mm 3mm rgba(0,0,0,0.7)}.netgis-controls button:hover{text-shadow:-0.5mm 0 .3mm #a7233f,.5mm 0 .3mm #a7233f,0 -0.5mm .3mm #a7233f,0 .5mm .3mm #a7233f,0 1mm 3mm rgba(0,0,0,0.7)}.netgis-layer-list{position:absolute;right:0;width:100%;max-width:100mm;top:12mm;bottom:0;overflow:auto;z-index:200;-webkit-transform:none;transform:none;transition:transform 150ms ease}.netgis-layer-list.netgis-hide{display:initial;-webkit-transform:translateX(110%);transform:translateX(110%);transition:transform 150ms ease;will-change:transform}.netgis-layer-list ul{list-style-type:none}.netgis-layer-list>ul{display:block;position:relative;width:100%;margin:0;padding:0}.netgis-folder{position:relative;overflow:hidden;list-style:none;padding:0;margin:0;min-height:12mm;width:100%;white-space:nowrap}.netgis-folder label{cursor:pointer}.netgis-folder input[type=checkbox]{cursor:pointer}.netgis-folder>button{display:inline-block;width:100%;padding:0;padding-right:16mm;margin:0;line-height:12mm;text-align:left}.netgis-folder>ul{display:none;padding-left:8mm}.netgis-folder.netgis-active>ul{display:block}.netgis-folder-item{height:12mm;line-height:12mm}.netgis-folder-item>label{display:block;padding-right:4mm}.netgis-layer-list .netgis-icon{display:inline-block;width:12mm;line-height:12mm;text-align:center}.netgis-layer-list i{margin-right:4mm}.netgis-folder i{color:#eab000}.netgis-folder-item i{color:#bbb}.netgis-folder .netgis-partial{opacity:.5}.netgis-layer-tools{padding:4mm;padding-top:0;text-align:center}.netgis-layer-tools hr{margin:4mm 0;color:#eee;border-color:#eee}.netgis-layer-tools button{padding:2mm 4mm}.netgis-layer-tools button i{margin-right:1mm}.netgis-map{position:absolute;left:0;right:0;top:12mm;bottom:0;background:#f2efe9}.netgis-drop-target{position:absolute;left:0;right:0;top:0;bottom:0;line-height:40mm;text-align:center;z-index:1;pointer-events:none;background:rgba(0,0,0,0.5);color:#fff}.netgis-drop-target.netgis-hide{display:none}.netgis-map{cursor:default}.netgis-map .netgis-toolbar,.netgis-map .netgis-dialog{cursor:auto}.netgis-map.netgis-mode-view,.netgis-map.netgis-mode-search-place{cursor:default;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.netgis-map.netgis-mode-panning{cursor:move;cursor:all-scroll;cursor:grabbing;cursor:-moz-grabbing;cursor:-webkit-grabbing}.netgis-map.netgis-mode-zooming-in{cursor:zoom-in}.netgis-map.netgis-mode-zooming-out{cursor:zoom-out}.netgis-map.netgis-mode-draw-points,.netgis-map.netgis-mode-draw-lines,.netgis-map.netgis-mode-draw-polygons,.netgis-map.netgis-mode-cut-feature-draw,.netgis-map.netgis-mode-modify-features{cursor:pointer;cursor:crosshair}.netgis-map.netgis-mode-delete-features,.netgis-map.netgis-mode-cut-feature-begin,.netgis-map.netgis-mode-buffer-feature-begin{cursor:pointer}.netgis-map.netgis-mode-buffer-feature-edit{cursor:default}.netgis-menu{position:absolute;left:0;right:0;top:0;height:12mm;line-height:12mm;white-space:nowrap;font-size:0;z-index:1000;background:lightsalmon}.netgis-menu>div{height:12mm;white-space:nowrap}.netgis-menu>div>*{display:inline-block;height:100%;margin:0;font-size:4mm}.netgis-menu .netgis-right{float:right;padding-right:0;padding-left:4mm}.netgis-menu span{padding:0 4mm 0 0}.netgis-menu button i{font-size:5mm;width:12mm;line-height:12mm;text-align:center}.netgis-dropdown{position:relative;padding:0}.netgis-dropdown .netgis-dropdown-content{display:none;position:absolute;min-width:100%;padding:0;margin:0;margin-top:-1px;z-index:1;font-size:4mm;list-style-type:none}.netgis-dropdown:hover .netgis-dropdown-content{display:block}.netgis-dropdown .netgis-dropdown-content i{font-size:4mm;color:#bbb}.netgis-dropdown button{width:100%;padding:0 4mm 0 0;white-space:nowrap;text-align:left}.netgis-modal{display:none;position:absolute;width:100%;height:100%;top:0;left:0;padding:6mm;z-index:5000;background:rgba(0,0,0,0.6)}.netgis-modal.netgis-show{display:block}.netgis-modal .netgis-dialog{display:none;max-width:160mm;max-height:160mm;margin:auto;border-radius:1mm;border:1mm solid #a7233f;overflow:hidden;overflow-y:auto;cursor:default}.netgis-modal .netgis-dialog.netgis-show{display:block}.netgis-modal header{width:100%;height:12mm;line-height:12mm;text-align:center}.netgis-modal header button{position:relative;width:100%;min-height:12mm}.netgis-modal header button span{display:block;position:absolute;right:0;top:0;line-height:12mm;padding:0 4mm;text-align:center}.netgis-modal-content{padding:6mm;overflow:auto}.netgis-modal-content>table{width:100%;border:none;border-spacing:0}.netgis-modal-content>table td,.netgis-modal-content>table th{width:50%;overflow:hidden;vertical-align:top;text-align:left}.netgis-modal-content .netgis-padding{padding:4mm}.netgis-modal-content .netgis-space{height:6mm}.netgis-modal-content button,.netgis-modal-content label{width:100%;min-height:12mm}.netgis-modal-content button i{margin-right:4mm}.netgis-modal-content button[disabled]{opacity:.5;cursor:not-allowed}.netgis-modal-content input,.netgis-modal-content select{width:100%}.netgis-modal-content input[type=file]{cursor:pointer}.netgis-modal-content ul{margin:0;padding:0;padding-left:4mm;list-style-type:square}.netgis-modal-content li:not(:last-child){margin-bottom:4mm}.netgis-modal h3{margin:0}.netgis-search-parcel{position:absolute;right:0;width:100%;max-width:100mm;top:12mm;bottom:0;overflow:auto;z-index:200;padding:4mm;-webkit-transform:none;transform:none;transition:transform 150ms ease}.netgis-search-parcel.netgis-hide{display:initial;-webkit-transform:translateX(110%);transform:translateX(110%);transition:transform 150ms ease;will-change:transform}.netgis-search-parcel h3{margin:0;margin-bottom:4mm}.netgis-search-parcel label{display:block;margin:3mm 0;margin-bottom:0;cursor:pointer}.netgis-search-parcel input{width:100%;height:12mm;margin:3mm 0;padding:0 3mm}.netgis-search-parcel .netgis-loader{width:6mm;height:6mm;top:8mm;right:6mm;font-size:6mm}.netgis-search-parcel ul{margin:0;padding:0;list-style-type:none}.netgis-search-parcel li button{text-align:left}.netgis-search-parcel button{display:block;width:100%;height:12mm;padding:0 3mm;margin:0}.netgis-search-parcel .netgis-table-wrapper{width:100%;max-height:120mm;margin-top:4mm;overflow:auto}.netgis-search-parcel table{border-collapse:collapse;white-space:nowrap}.netgis-search-parcel tr{height:12mm}.netgis-search-parcel th{text-align:left;padding:0 3mm}.netgis-search-parcel td{text-align:left;padding:0 3mm;cursor:pointer}.netgis-search-parcel td:first-child{padding:0}.netgis-search-parcel table button{display:inline-block;width:12mm;height:12mm}.netgis-search-parcel p{margin:4mm 3mm;font-style:italic}.netgis-client,.netgis-client button{font-family:Verdana,sans-serif;font-size:4mm}.netgis-primary{background-color:#a7233f!important;color:white!important}.netgis-hover-primary:hover{background-color:#c82a4b!important;color:white!important}.netgis-light,.netgis-hover-light:hover{background-color:#f4f4f4!important}.netgis-text-primary{color:#a7233f!important}.netgis-hover-text-primary:hover{color:#c82a4b!important}.netgis-dialog{background:#fff;color:#000}.netgis-dropdown:hover>button{background-color:#c82a4b!important}.netgis-shadow{box-shadow:0 .5mm 1mm 0 rgba(0,0,0,0.2),0 1mm 2.5mm 0 rgba(0,0,0,0.1)!important}.netgis-shadow-large{box-shadow:0 1mm 2mm 0 rgba(0,0,0,0.3),0 2mm 5mm 0 rgba(0,0,0,0.15)!important}.netgis-text-shadow{text-shadow:0 0 1mm rgba(0,0,0,1.0)}.netgis-client button{border:none;background:none;cursor:pointer}.netgis-clip-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.netgis-toolbars{position:absolute;left:0;right:0;top:0}.netgis-toolbar{position:absolute;left:0;right:0;top:12mm;min-height:12mm;line-height:12mm;font-size:0;white-space:nowrap;z-index:1;-webkit-transform:none;transform:none;transition:transform 150ms ease}.netgis-toolbar.netgis-hide{-webkit-transform:translateY(-24mm);transform:translateY(-24mm);transition:transform 150ms ease;will-change:transform}.netgis-toolbar>div{height:12mm;white-space:nowrap}.netgis-toolbar>div>*{display:inline-block;font-size:4mm}.netgis-toolbar button{padding:0 4mm 0 0}.netgis-toolbar>div>button{line-height:12mm}.netgis-toolbar button i{width:12mm}.netgis-toolbar button:last-child{padding-right:0}.netgis-toolbar button:last-child span{margin-right:4mm}.netgis-toolbar label{display:inline-block;height:12mm;padding:0 4mm;cursor:pointer}.netgis-toolbar input[type=checkbox]{margin-right:2mm}.netgis-toolbar input[type=number]{margin-left:2mm;width:20mm}.netgis-toolbar input[type=text]{width:60mm}.netgis-toolbar .netgis-search-list{position:absolute;min-width:68mm;padding:0;margin:0;margin-left:-4mm;z-index:1;list-style-type:none;overflow:hidden;box-shadow:0 .5mm .5mm 0 rgba(0,0,0,0.2)!important}.netgis-toolbar .netgis-search-list.netgis-hide{display:none}.netgis-toolbar .netgis-search-list li{width:100%;padding:0;margin:0}.netgis-toolbar .netgis-search-list li button{width:100%;height:12mm;padding:0 4mm;white-space:nowrap;text-align:left} \ No newline at end of file +.netgis-attribution{position:absolute;left:0;bottom:0;padding:1mm;background:rgba(255,255,255,0.5);font-size:.8em!important;z-index:100}.netgis-client{position:absolute;width:100%;height:100%;overflow:hidden;background:#aaa}.netgis-client *{box-sizing:border-box}.netgis-client .netgis-loader{position:absolute;width:100%;height:100%;z-index:9999;text-align:center;font-size:12mm}.netgis-client .netgis-hide{display:none}.netgis-client .netgis-loader i{position:absolute;top:50%;transform:translateY(-50%);animation:netgis-spin 2s linear infinite}@keyframes netgis-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}.netgis-controls{position:absolute;width:12mm;left:0;bottom:8mm;z-index:100}.netgis-controls button{font-size:6mm!important;width:100%;height:12mm;padding:0;border:none;background:none;cursor:pointer;color:white;text-shadow:-0.5mm 0 .3mm #000,.5mm 0 .3mm #000,0 -0.5mm .3mm #000,0 .5mm .3mm #000,0 1mm 3mm rgba(0,0,0,0.7)}.netgis-controls button:hover{text-shadow:-0.5mm 0 .3mm #a7233f,.5mm 0 .3mm #a7233f,0 -0.5mm .3mm #a7233f,0 .5mm .3mm #a7233f,0 1mm 3mm rgba(0,0,0,0.7)}.netgis-layer-list{position:absolute;right:0;width:100%;max-width:100mm;top:12mm;bottom:0;overflow:auto;z-index:200;-webkit-transform:none;transform:none;transition:transform 150ms ease}.netgis-layer-list.netgis-hide{display:initial;-webkit-transform:translateX(110%);transform:translateX(110%);transition:transform 150ms ease;will-change:transform}.netgis-layer-list ul{list-style-type:none}.netgis-layer-list>ul{display:block;position:relative;width:100%;margin:0;padding:0}.netgis-folder{position:relative;overflow:hidden;list-style:none;padding:0;margin:0;min-height:12mm;width:100%;white-space:nowrap}.netgis-folder label{cursor:pointer}.netgis-folder input[type=checkbox]{cursor:pointer}.netgis-folder>button{display:inline-block;width:100%;padding:0;padding-right:16mm;margin:0;line-height:12mm;text-align:left}.netgis-folder>ul{display:none;padding-left:8mm}.netgis-folder.netgis-active>ul{display:block}.netgis-folder-item{height:12mm;line-height:12mm}.netgis-folder-item>label{display:block;padding-right:4mm}.netgis-layer-list .netgis-icon{display:inline-block;width:12mm;line-height:12mm;text-align:center}.netgis-layer-list i{margin-right:4mm}.netgis-folder i{color:#eab000}.netgis-folder-item i{color:#bbb}.netgis-folder .netgis-partial{opacity:.5}.netgis-map{position:absolute;left:0;right:0;top:12mm;bottom:0;background:#f2efe9}.netgis-drop-target{position:absolute;left:0;right:0;top:0;bottom:0;line-height:40mm;text-align:center;z-index:1;pointer-events:none;background:rgba(0,0,0,0.5);color:#fff}.netgis-drop-target.netgis-hide{display:none}.netgis-map{cursor:default}.netgis-map .netgis-toolbar,.netgis-map .netgis-dialog{cursor:auto}.netgis-map.netgis-mode-view,.netgis-map.netgis-mode-search-place{cursor:default;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.netgis-map.netgis-mode-panning{cursor:move;cursor:all-scroll;cursor:grabbing;cursor:-moz-grabbing;cursor:-webkit-grabbing}.netgis-map.netgis-mode-zooming-in{cursor:zoom-in}.netgis-map.netgis-mode-zooming-out{cursor:zoom-out}.netgis-map.netgis-mode-draw-points,.netgis-map.netgis-mode-draw-lines,.netgis-map.netgis-mode-draw-polygons,.netgis-map.netgis-mode-cut-feature-draw,.netgis-map.netgis-mode-modify-features{cursor:pointer;cursor:crosshair}.netgis-map.netgis-mode-delete-features,.netgis-map.netgis-mode-cut-feature-begin,.netgis-map.netgis-mode-buffer-feature-begin{cursor:pointer}.netgis-map.netgis-mode-buffer-feature-edit{cursor:default}.netgis-menu{position:absolute;left:0;right:0;top:0;height:12mm;line-height:12mm;white-space:nowrap;font-size:0;z-index:1000;background:lightsalmon}.netgis-menu>div{height:12mm;white-space:nowrap}.netgis-menu>div>*{display:inline-block;height:100%;margin:0;font-size:4mm}.netgis-menu .netgis-right{float:right;padding-right:0;padding-left:4mm}.netgis-menu span{padding:0 4mm 0 0}.netgis-menu button i{font-size:5mm;width:12mm;line-height:12mm;text-align:center}.netgis-dropdown{position:relative;padding:0}.netgis-dropdown .netgis-dropdown-content{display:none;position:absolute;min-width:100%;padding:0;margin:0;margin-top:-1px;z-index:1;font-size:4mm;list-style-type:none}.netgis-dropdown:hover .netgis-dropdown-content{display:block}.netgis-dropdown .netgis-dropdown-content i{font-size:4mm;color:#bbb}.netgis-dropdown button{width:100%;padding:0 4mm 0 0;white-space:nowrap;text-align:left}.netgis-modal{display:none;position:absolute;width:100%;height:100%;top:0;left:0;padding:6mm;z-index:5000;background:rgba(0,0,0,0.6)}.netgis-modal.netgis-show{display:block}.netgis-modal .netgis-dialog{display:none;max-width:160mm;max-height:160mm;margin:auto;border-radius:1mm;border:1mm solid #a7233f;overflow:hidden;overflow-y:auto;cursor:default}.netgis-modal .netgis-dialog.netgis-show{display:block}.netgis-modal header{width:100%;height:12mm;line-height:12mm;text-align:center}.netgis-modal header button{position:relative;width:100%;min-height:12mm}.netgis-modal header button span{display:block;position:absolute;right:0;top:0;line-height:12mm;padding:0 4mm;text-align:center}.netgis-modal-content{padding:6mm;overflow:auto}.netgis-modal-content>table{width:100%;border:none;border-spacing:0}.netgis-modal-content>table td,.netgis-modal-content>table th{width:50%;overflow:hidden;vertical-align:top;text-align:left}.netgis-modal-content .netgis-padding{padding:4mm}.netgis-modal-content .netgis-space{height:6mm}.netgis-modal-content button,.netgis-modal-content label{width:100%;min-height:12mm}.netgis-modal-content button i{margin-right:4mm}.netgis-modal-content button[disabled]{opacity:.5;cursor:not-allowed}.netgis-modal-content input{width:100%}.netgis-modal-content input[type=file]{cursor:pointer}.netgis-modal-content ul{margin:0;padding:0;padding-left:4mm;list-style-type:square}.netgis-modal-content li:not(:last-child){margin-bottom:4mm}.netgis-modal h3{margin:0}.netgis-search-parcel{position:absolute;right:0;width:100%;max-width:100mm;top:12mm;bottom:0;overflow:auto;z-index:200;padding:4mm;-webkit-transform:none;transform:none;transition:transform 150ms ease}.netgis-search-parcel.netgis-hide{display:initial;-webkit-transform:translateX(110%);transform:translateX(110%);transition:transform 150ms ease;will-change:transform}.netgis-search-parcel h3{margin:0;margin-bottom:4mm}.netgis-search-parcel label{display:block;margin:3mm 0;margin-bottom:0;cursor:pointer}.netgis-search-parcel input{width:100%;height:12mm;margin:3mm 0;padding:0 3mm}.netgis-search-parcel .netgis-loader{width:6mm;height:6mm;top:8mm;right:6mm;font-size:6mm}.netgis-search-parcel ul{margin:0;padding:0;list-style-type:none}.netgis-search-parcel li button{text-align:left}.netgis-search-parcel button{display:block;width:100%;height:12mm;padding:0 3mm;margin:0}.netgis-search-parcel .netgis-table-wrapper{width:100%;max-height:120mm;margin-top:4mm;overflow:auto}.netgis-search-parcel table{border-collapse:collapse;white-space:nowrap}.netgis-search-parcel tr{height:12mm}.netgis-search-parcel th{text-align:left;padding:0 3mm}.netgis-search-parcel td{text-align:left;padding:0 3mm;cursor:pointer}.netgis-search-parcel td:first-child{padding:0}.netgis-search-parcel table button{display:inline-block;width:12mm;height:12mm}.netgis-search-parcel p{margin:4mm 3mm;font-style:italic}.netgis-client,.netgis-client button{font-family:Verdana,sans-serif;font-size:4mm}.netgis-primary{background-color:#a7233f!important;color:white!important}.netgis-hover-primary:hover{background-color:#c82a4b!important;color:white!important}.netgis-light,.netgis-hover-light:hover{background-color:#f4f4f4!important}.netgis-text-primary{color:#a7233f!important}.netgis-hover-text-primary:hover{color:#c82a4b!important}.netgis-dialog{background:#fff;color:#000}.netgis-dropdown:hover>button{background-color:#c82a4b!important}.netgis-shadow{box-shadow:0 .5mm 1mm 0 rgba(0,0,0,0.2),0 1mm 2.5mm 0 rgba(0,0,0,0.1)!important}.netgis-shadow-large{box-shadow:0 1mm 2mm 0 rgba(0,0,0,0.3),0 2mm 5mm 0 rgba(0,0,0,0.15)!important}.netgis-text-shadow{text-shadow:0 0 1mm rgba(0,0,0,1.0)}.netgis-client button{border:none;background:none;cursor:pointer}.netgis-clip-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.netgis-toolbars{position:absolute;left:0;right:0;top:0}.netgis-toolbar{position:absolute;left:0;right:0;top:12mm;min-height:12mm;line-height:12mm;font-size:0;white-space:nowrap;overflow-x:auto;overflow-y:hidden;z-index:1;-webkit-transform:none;transform:none;transition:transform 150ms ease}.netgis-toolbar.netgis-hide{-webkit-transform:translateY(-24mm);transform:translateY(-24mm);transition:transform 150ms ease;will-change:transform}.netgis-toolbar>div{height:12mm;white-space:nowrap}.netgis-toolbar>div>*{display:inline-block;font-size:4mm}.netgis-toolbar button{padding:0 4mm 0 0}.netgis-toolbar>div>button{line-height:12mm}.netgis-toolbar button i{width:12mm}.netgis-toolbar button:last-child{padding-right:0}.netgis-toolbar button:last-child span{margin-right:4mm}.netgis-toolbar label{display:inline-block;height:12mm;padding:0 4mm;cursor:pointer}.netgis-toolbar input[type=checkbox]{margin-right:2mm}.netgis-toolbar input[type=number]{margin-left:2mm;width:20mm}.netgis-toolbar input[type=text]{width:60mm}.netgis-toolbar .netgis-search-list{position:fixed;min-width:68mm;padding:0;margin:0;margin-left:-4mm;z-index:1;list-style-type:none;overflow:hidden;box-shadow:0 .5mm .5mm 0 rgba(0,0,0,0.2)!important}.netgis-toolbar .netgis-search-list.netgis-hide{display:none}.netgis-toolbar .netgis-search-list li{width:100%;padding:0;margin:0}.netgis-toolbar .netgis-search-list li button{width:100%;height:12mm;padding:0 4mm;white-space:nowrap;text-align:left} \ No newline at end of file diff --git a/dist/netgis.min.js b/dist/netgis.min.js index 52f3363..fa8e432 100644 --- a/dist/netgis.min.js +++ b/dist/netgis.min.js @@ -1,14 +1,8 @@ var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)}; $jscomp.getGlobal=function(a){a=["object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global,a];for(var b=0;bc&&(c=Math.max(0,b+c));if(null==d||d>b)d=b;d=Number(d);0>d&&(d=Math.max(0,b+d));for(c=Number(c||0);cc&&(c=Math.max(0,b+c));if(null==d||d>b)d=b;d=Number(d);0>d&&(d=Math.max(0,b+d));for(c=Number(c||0);c";a.title="Hineinzoomen";a.addEventListener("click",this.onZoomIn.bind(this));this.root.appendChild(a);a=document.createElement("button");a.setAttribute("type","button");a.innerHTML="";a.title="Herauszoomen";a.addEventListener("click", this.onZoomOut.bind(this));this.root.appendChild(a);this.client.root.appendChild(this.root)};netgis.Controls.prototype.onZoomIn=function(a){this.client.invoke(netgis.Events.MAP_CHANGE_ZOOM,1)};netgis.Controls.prototype.onZoomOut=function(a){this.client.invoke(netgis.Events.MAP_CHANGE_ZOOM,-1)};netgis.Controls.prototype.onSettings=function(a){alert("TODO: settings dialog")};netgis=netgis||{}; netgis.Events=Object.freeze({CONTEXT_UPDATE:"CONTEXT_UPDATE",SET_MODE:"SET_MODE",LAYER_LIST_TOGGLE:"LAYER_LIST_TOGGLE",PANEL_TOGGLE:"PANEL_TOGGLE",PANEL_SHOW:"PANEL_SHOW",PANEL_HIDE:"PANEL_HIDE",LAYER_SHOW:"LAYER_SHOW",LAYER_HIDE:"LAYER_HIDE",LAYER_CREATED:"LAYER_CREATED",MAP_ZOOM_WKT:"MAP_ZOOM_WKT",MAP_SET_EXTENT:"MAP_SET_EXTENT",MAP_CHANGE_ZOOM:"MAP_CHANGE_ZOOM",MAP_UPDATE_STYLE:"MAP_UPDATE_STYLE",MAP_MODE_POINTS:"MAP_MODE_POINTS",MAP_MODE_LINES:"MAP_MODE_LINES",MAP_MODE_POLYGONS:"MAP_MODE_POLYGONS",EDIT_FEATURES_LOADED:"EDIT_FEATURES_LOADED", -EDIT_FEATURES_CHANGE:"EDIT_FEATURES_CHANGE",SEARCH_PLACE_REQUEST:"SEARCH_PLACE_REQUEST",SEARCH_PLACE_RESPONSE:"SEARCH_PLACE_RESPONSE",PARCEL_SHOW_PREVIEW:"PARCEL_SHOW_PREVIEW",PARCEL_HIDE_PREVIEW:"PARCEL_HIDE_PREVIEW",BUFFER_CHANGE:"BUFFER_CHANGE",BUFFER_ACCEPT:"BUFFER_ACCEPT",BUFFER_CANCEL:"BUFFER_CANCEL",DRAW_BUFFER_ON:"DRAW_BUFFER_ON",DRAW_BUFFER_OFF:"DRAW_BUFFER_OFF",DRAW_BUFFER_RADIUS_CHANGE:"DRAW_BUFFER_RADIUS_CHANGE",DRAW_BUFFER_SEGMENTS_CHANGE:"DRAW_BUFFER_SEGMENTS_CHANGE",SNAP_ON:"SNAP_ON", -SNAP_OFF:"SNAP_OFF",TRACING_ON:"TRACING_ON",TRACING_OFF:"TRACING_OFF",IMPORT_SHAPEFILE_SHOW:"IMPORT_SHAPEFILE_SHOW",IMPORT_GEOJSON_SHOW:"IMPORT_GEOJSON_SHOW",IMPORT_GML_SHOW:"IMPORT_GML_SHOW",IMPORT_SPATIALITE_SHOW:"IMPORT_SPATIALITE_SHOW",IMPORT_GEOPACKAGE_SHOW:"IMPORT_GEOPACKAGE_SHOW",IMPORT_SHAPEFILE:"IMPORT_SHAPEFILE",IMPORT_GEOJSON:"IMPORT_GEOJSON",IMPORT_GML:"IMPORT_GML",IMPORT_WKT:"IMPORT_WKT",IMPORT_SPATIALITE:"IMPORT_SPATIALITE",IMPORT_GEOPACKAGE:"IMPORT_GEOPACKAGE",EXPORT_PDF_SHOW:"EXPORT_PDF_SHOW", -EXPORT_JPEG_SHOW:"EXPORT_JPEG_SHOW",EXPORT_PNG_SHOW:"EXPORT_PNG_SHOW",EXPORT_GIF_SHOW:"EXPORT_GIF_SHOW",EXPORT_PDF:"EXPORT_PDF",EXPORT_JPEG:"EXPORT_JPEG",EXPORT_PNG:"EXPORT_PNG",EXPORT_GIF:"EXPORT_GIF",EXPORT_BEGIN:"EXPORT_BEGIN",EXPORT_END:"EXPORT_END",ADD_SERVICE_SHOW:"ADD_SERVICE_SHOW",ADD_SERVICE_WMS:"ADD_SERVICE_WMS",ADD_SERVICE_WFS:"ADD_SERVICE_WFS"});netgis=netgis||{};netgis.LayerTree=function(){this.folderDraw=this.folderImport=this.list=this.root=this.client=null}; -netgis.LayerTree.prototype.load=function(){this.root=document.createElement("section");this.root.className="netgis-layer-list netgis-dialog netgis-shadow netgis-hide";this.list=document.createElement("ul");this.list.className="root";this.root.appendChild(this.list);this.initDefaultFolders();this.tools=document.createElement("div");this.tools.className="netgis-layer-tools";this.tools.innerHTML="
";this.root.appendChild(this.tools);this.buttonAddService=document.createElement("button");this.buttonAddService.className= -"netgis-text-primary netgis-hover-primary";this.buttonAddService.innerHTML=" Dienst hinzuf\u00fcgen";this.buttonAddService.addEventListener("click",this.onAddServiceClick.bind(this));this.tools.appendChild(this.buttonAddService);this.client.root.appendChild(this.root);this.client.on(netgis.Events.CONTEXT_UPDATE,this.onContextUpdate.bind(this));this.client.on(netgis.Events.LAYER_LIST_TOGGLE,this.onLayerListToggle.bind(this));this.client.on(netgis.Events.LAYER_CREATED, -this.onLayerCreated.bind(this));this.client.on(netgis.Events.EDIT_FEATURES_CHANGE,this.onEditFeaturesChange.bind(this));this.client.on(netgis.Events.ADD_SERVICE_WMS,this.onAddServiceWMS.bind(this));this.client.on(netgis.Events.ADD_SERVICE_WFS,this.onAddServiceWFS.bind(this));this.client.on(netgis.Events.SET_MODE,this.onSetMode.bind(this))}; -netgis.LayerTree.prototype.initDefaultFolders=function(){this.folderDraw=this.createFolder("Zeichnung");this.folderDraw.classList.add("netgis-hide");this.list.appendChild(this.folderDraw);this.folderImport=this.createFolder("Importierte Ebenen");this.folderImport.classList.add("netgis-hide");this.list.appendChild(this.folderImport);this.folderServices=this.createFolder("Eigene Dienste");this.folderServices.classList.add("netgis-hide");this.list.appendChild(this.folderServices)}; -netgis.LayerTree.prototype.clearAll=function(){this.list.innerHTML="";this.initDefaultFolders()}; +EDIT_FEATURES_CHANGE:"EDIT_FEATURES_CHANGE",SEARCH_PLACE_REQUEST:"SEARCH_PLACE_REQUEST",SEARCH_PLACE_RESPONSE:"SEARCH_PLACE_RESPONSE",PARCEL_SHOW_PREVIEW:"PARCEL_SHOW_PREVIEW",PARCEL_HIDE_PREVIEW:"PARCEL_HIDE_PREVIEW",BUFFER_CHANGE:"BUFFER_CHANGE",BUFFER_ACCEPT:"BUFFER_ACCEPT",BUFFER_CANCEL:"BUFFER_CANCEL",SNAP_ON:"SNAP_ON",SNAP_OFF:"SNAP_OFF",IMPORT_SHAPEFILE_SHOW:"IMPORT_SHAPEFILE_SHOW",IMPORT_GEOJSON_SHOW:"IMPORT_GEOJSON_SHOW",IMPORT_GML_SHOW:"IMPORT_GML_SHOW",IMPORT_SHAPEFILE:"IMPORT_SHAPEFILE", +IMPORT_GEOJSON:"IMPORT_GEOJSON",IMPORT_GML:"IMPORT_GML",IMPORT_WKT:"IMPORT_WKT",EXPORT_PDF_SHOW:"EXPORT_PDF_SHOW",EXPORT_JPEG_SHOW:"EXPORT_JPEG_SHOW",EXPORT_PNG_SHOW:"EXPORT_PNG_SHOW",EXPORT_GIF_SHOW:"EXPORT_GIF_SHOW",EXPORT_PDF:"EXPORT_PDF",EXPORT_JPEG:"EXPORT_JPEG",EXPORT_PNG:"EXPORT_PNG",EXPORT_GIF:"EXPORT_GIF",EXPORT_BEGIN:"EXPORT_BEGIN",EXPORT_END:"EXPORT_END"});netgis=netgis||{};netgis.LayerTree=function(){this.folderDraw=this.folderImport=this.list=this.root=this.client=null}; +netgis.LayerTree.prototype.load=function(){this.root=document.createElement("section");this.root.className="netgis-layer-list netgis-dialog netgis-shadow netgis-hide";this.list=document.createElement("ul");this.list.className="root";this.root.appendChild(this.list);this.client.root.appendChild(this.root);this.client.on(netgis.Events.CONTEXT_UPDATE,this.onContextUpdate.bind(this));this.client.on(netgis.Events.LAYER_LIST_TOGGLE,this.onLayerListToggle.bind(this));this.client.on(netgis.Events.LAYER_CREATED, +this.onLayerCreated.bind(this));this.client.on(netgis.Events.EDIT_FEATURES_CHANGE,this.onEditFeaturesChange.bind(this));this.client.on(netgis.Events.SET_MODE,this.onSetMode.bind(this))};netgis.LayerTree.prototype.clearAll=function(){this.list.innerHTML=""}; netgis.LayerTree.prototype.createFolder=function(a){var b=document.createElement("li");b.className="netgis-folder netgis-hover-light";b.setAttribute("title",a);var c=document.createElement("label");c.className="netgis-icon";b.appendChild(c);var d=document.createElement("input");d.setAttribute("type","checkbox");d.addEventListener("change",this.onFolderChange.bind(this));c.appendChild(d);c=document.createElement("button");c.setAttribute("type","button");c.className="netgis-clip-text netgis-hover-text-primary"; c.innerHTML=''+a;c.addEventListener("click",this.onFolderClick.bind(this));b.appendChild(c);a=document.createElement("ul");b.appendChild(a);return b}; netgis.LayerTree.prototype.createLayer=function(a,b,c){var d=document.createElement("li");d.setAttribute("title",b);d.className="netgis-folder-item netgis-hover-text-primary";var e=document.createElement("label");e.className="netgis-label netgis-clip-text";d.appendChild(e);var f=document.createElement("span");f.className="netgis-icon";e.appendChild(f);var g=document.createElement("input");g.setAttribute("type","checkbox");g.dataset.id=a;g.checked=c;g.addEventListener("change",this.onItemChange.bind(this)); -f.appendChild(g);a=document.createElement("i");a.className="fas fa-th-large";e.appendChild(a);b=document.createTextNode(b);e.appendChild(b);b=document.createElement("span");e.appendChild(b);return d};netgis.LayerTree.prototype.addToFolder=function(a,b,c){a?(a=a.getElementsByTagName("ul")[0],a.appendChild(b)):a=this.list;c?a.insertBefore(b,a.firstChild):a.appendChild(b)};netgis.LayerTree.prototype.onFolderClick=function(a){a.currentTarget.parentElement.classList.toggle("netgis-active")}; +f.appendChild(g);a=document.createElement("i");a.className="fas fa-th-large";e.appendChild(a);b=document.createTextNode(b);e.appendChild(b);return d};netgis.LayerTree.prototype.addToFolder=function(a,b,c){a?(a=a.getElementsByTagName("ul")[0],a.appendChild(b)):a=this.list;c?a.insertBefore(b,a.firstChild):a.appendChild(b)};netgis.LayerTree.prototype.onFolderClick=function(a){a.currentTarget.parentElement.classList.toggle("netgis-active")}; netgis.LayerTree.prototype.onFolderChange=function(a){var b=a.currentTarget;a=b.checked;b=b.parentElement.parentElement;for(var c=b.getElementsByTagName("input"),d=1;da.length)){var b=this.previewLayer.getSource().getFeatures()[0];b&&(a=a[0].getGeometry(),a=this.createBufferGeometry(a,this.drawBufferRadius,this.drawBufferSegments),b.setGeometry(a))}}; -netgis.MapOpenLayers.prototype.onEditLayerAdd=function(a){this.updateEditLayerItem();this.updateEditOutput();this.snapFeatures.push(a.feature)};netgis.MapOpenLayers.prototype.onEditLayerRemove=function(a){this.updateEditOutput();this.snapFeatures.remove(a.feature)};netgis.MapOpenLayers.prototype.onEditLayerChange=function(a){this.updateEditOutput()}; -netgis.MapOpenLayers.prototype.updateEditOutput=function(){var a=this.editLayer.getSource().getFeatures(),b=this.client.config.map.projection,c=(new ol.format.GeoJSON).writeFeaturesObject(a,{dataProjection:b,featureProjection:b});c.crs={type:"name",properties:{name:"urn:ogc:def:crs:"+b.replace(":","::")}};for(var d=b=0;dn.width){var u=v;w=u*t;w>r&&(w=r,u=w/t)}else w=r,u=w/t,u>v&&(u=v,w=u*t);t=new jsPDF(d?"l":"p");var x=e;x+=(r-w)/2;r=e;r+=(v-u)/2;t.addImage(n.toDataURL("image/png,1.0",1),"PNG",x,r,w,u);t.setFillColor(255,255, -255);t.rect(x,r+u-11,80,11,"F");t.setFontSize(8);t.text("Datum: "+netgis.util.getTimeStamp(),x+2,r+u-2-4);t.text("Quelle: "+window.location.href,x+2,r+u-2);n=t.output("bloburl",{filename:k.export.defaultFilename+".pdf"});window.open(n,"_blank");break;case "jpeg":window.navigator.msSaveBlob?window.navigator.msSaveBlob(n.msToBlob(),k.export.defaultFilename+".jpg"):(q.setAttribute("download",k.export.defaultFilename+".jpg"),q.setAttribute("href",n.toDataURL("image/jpeg",1)),q.click());break;case "png":window.navigator.msSaveBlob? -window.navigator.msSaveBlob(n.msToBlob(),k.export.defaultFilename+".png"):(q.setAttribute("download",k.export.defaultFilename+".png"),q.setAttribute("href",n.toDataURL("image/png",1)),q.click());break;case "gif":q.setAttribute("download",k.export.defaultFilename+".gif"),v=new GIF({workerScript:k.export.gifWebWorker,quality:1}),v.addFrame(n),v.on("finished",function(a){q.setAttribute("href",window.URL.createObjectURL(a));q.click()}),v.render()}h.setTarget(g);g.removeChild(m);f.client.invoke(netgis.Events.EXPORT_END, -null)});h.renderSync()};l.src=k.export.logo};netgis.MapOpenLayers.prototype.splitMultiPolygons=function(a){a=a.getSource();for(var b=a.getFeatures(),c=[],d=[],e=0;en.width){var v=q;r=v*u;r>p&&(r=p,v=r/u)}else r=p,v=r/u,v>q&&(v=q,r=v*u);u=new jsPDF(d?"l":"p");var x=e;x+=(p-r)/2;p=e;p+=(q-v)/2;u.addImage(n.toDataURL("image/png,1.0",1),"PNG",x,p,r,v);u.setFontSize(8);u.text("Quelle: "+window.location.href,x+2,p+v-2);n=u.output("bloburl",{filename:k.export.defaultFilename+".pdf"});window.open(n,"_blank");break;case "jpeg":window.navigator.msSaveBlob? +window.navigator.msSaveBlob(n.msToBlob(),k.export.defaultFilename+".jpg"):(t.setAttribute("download",k.export.defaultFilename+".jpg"),t.setAttribute("href",n.toDataURL("image/jpeg",1)),t.click());break;case "png":window.navigator.msSaveBlob?window.navigator.msSaveBlob(n.msToBlob(),k.export.defaultFilename+".png"):(t.setAttribute("download",k.export.defaultFilename+".png"),t.setAttribute("href",n.toDataURL("image/png",1)),t.click());break;case "gif":t.setAttribute("download",k.export.defaultFilename+ +".gif"),q=new GIF({workerScript:k.export.gifWebWorker,quality:1}),q.addFrame(n),q.on("finished",function(a){t.setAttribute("href",window.URL.createObjectURL(a));t.click()}),q.render()}h.setTarget(g);g.removeChild(m);f.client.invoke(netgis.Events.EXPORT_END,null)});h.renderSync()};l.src=k.export.logo}; +netgis.MapOpenLayers.prototype.splitMultiPolygons=function(a){a=a.getSource();for(var b=a.getFeatures(),c=[],d=[],e=0;e',!0);b.addEventListener("click",this.onToggleClick.bind(this));a.appendChild(b);b=this.createButton('Suche',!0);b.addEventListener("click",this.onSearchPlaceClick.bind(this)); a.appendChild(b);b=this.createButton('Flurst\u00fccke',!0);b.addEventListener("click",this.onSearchParcelClick.bind(this));a.appendChild(b);if(this.client.editable){b=this.createMenu('Zeichnen');var c=b.getElementsByTagName("ul")[0];a.appendChild(b);c.appendChild(this.createMenuItem('Punkte',this.onDrawPointClick.bind(this)));c.appendChild(this.createMenuItem('Linien', this.onDrawLineClick.bind(this)));c.appendChild(this.createMenuItem('Polygone',this.onDrawPolygonClick.bind(this)));b=this.createMenu('Bearbeiten');c=b.getElementsByTagName("ul")[0];a.appendChild(b);c.appendChild(this.createMenuItem('Ausschneiden',this.onCutFeatureClick.bind(this)));c.appendChild(this.createMenuItem('Verschieben',this.onModifyFeaturesClick.bind(this)));c.appendChild(this.createMenuItem('L\u00f6schen', this.onDeleteFeaturesClick.bind(this)));c.appendChild(this.createMenuItem('Puffern',this.onBufferFeatureClick.bind(this)));b=this.createMenu('Import');a.appendChild(b);b=b.getElementsByTagName("ul")[0];b.appendChild(this.createMenuItem('GeoJSON',this.onImportGeoJSONClick.bind(this)));b.appendChild(this.createMenuItem('GML',this.onImportGMLClick.bind(this)));b.appendChild(this.createMenuItem('Shapefile', -this.onImportShapefileClick.bind(this)));b.appendChild(this.createMenuItem('Spatialite',this.onImportSpatialiteClick.bind(this)));b.appendChild(this.createMenuItem('GeoPackage',this.onImportGeopackageClick.bind(this)));b=this.createMenu('Export');a.appendChild(b);a=b.getElementsByTagName("ul")[0];a.appendChild(this.createMenuItem('PDF',this.onExportPDFClick.bind(this)));a.appendChild(this.createMenuItem('JPEG', -this.onExportJPEGClick.bind(this)));a.appendChild(this.createMenuItem('PNG',this.onExportPNGClick.bind(this)));a.appendChild(this.createMenuItem('GIF',this.onExportGIFClick.bind(this)))}this.client.root.appendChild(this.root)};netgis.Menu.prototype.createButton=function(a,b){var c=document.createElement("button");c.setAttribute("type","button");c.className="netgis-primary netgis-hover-primary";b&&(c.className+=" netgis-right");c.innerHTML=a;return c}; +this.onImportShapefileClick.bind(this)));b=this.createMenu('Export');a.appendChild(b);a=b.getElementsByTagName("ul")[0];a.appendChild(this.createMenuItem('PDF',this.onExportPDFClick.bind(this)));a.appendChild(this.createMenuItem('JPEG',this.onExportJPEGClick.bind(this)));a.appendChild(this.createMenuItem('PNG',this.onExportPNGClick.bind(this)));a.appendChild(this.createMenuItem('GIF', +this.onExportGIFClick.bind(this)))}this.client.root.appendChild(this.root)};netgis.Menu.prototype.createButton=function(a,b){var c=document.createElement("button");c.setAttribute("type","button");c.className="netgis-primary netgis-hover-primary";b&&(c.className+=" netgis-right");c.innerHTML=a;return c}; netgis.Menu.prototype.createMenu=function(a){var b=document.createElement("div");b.className="netgis-dropdown";var c=document.createElement("button");c.setAttribute("type","button");c.className="netgis-primary netgis-hover-primary";c.innerHTML=a;b.appendChild(c);a=document.createElement("ul");a.className="netgis-dropdown-content netgis-dialog netgis-shadow";b.appendChild(a);return b}; netgis.Menu.prototype.createMenuItem=function(a,b){var c=document.createElement("li");c.className="netgis-hover-light";var d=document.createElement("button");d.setAttribute("type","button");d.innerHTML=a;d.addEventListener("click",b);c.appendChild(d);return c};netgis.Menu.prototype.onToggleClick=function(a){this.client.invoke(netgis.Events.LAYER_LIST_TOGGLE,null)};netgis.Menu.prototype.onDrawPointClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.DRAW_POINTS)}; netgis.Menu.prototype.onDrawLineClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.DRAW_LINES)};netgis.Menu.prototype.onDrawPolygonClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.DRAW_POLYGONS)};netgis.Menu.prototype.onCutFeatureClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.CUT_FEATURE_BEGIN)};netgis.Menu.prototype.onModifyFeaturesClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.MODIFY_FEATURES)}; netgis.Menu.prototype.onDeleteFeaturesClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.DELETE_FEATURES)};netgis.Menu.prototype.onBufferFeatureClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.BUFFER_FEATURE_BEGIN)};netgis.Menu.prototype.onSearchPlaceClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.SEARCH_PLACE)};netgis.Menu.prototype.onSearchParcelClick=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.SEARCH_PARCEL)}; netgis.Menu.prototype.onSearchDataClick=function(a){alert("TODO: data search interface")};netgis.Menu.prototype.onImportOWSClick=function(a){alert("TODO: ows import interface, try setting url parameter '?ows='")};netgis.Menu.prototype.onImportShapefileClick=function(a){this.client.invoke(netgis.Events.IMPORT_SHAPEFILE_SHOW,null)};netgis.Menu.prototype.onImportGeoJSONClick=function(a){this.client.invoke(netgis.Events.IMPORT_GEOJSON_SHOW,null)};netgis.Menu.prototype.onImportKMLClick=function(a){alert("TODO: kml import interface")}; -netgis.Menu.prototype.onImportGMLClick=function(a){this.client.invoke(netgis.Events.IMPORT_GML_SHOW,null)};netgis.Menu.prototype.onImportSpatialiteClick=function(a){this.client.invoke(netgis.Events.IMPORT_SPATIALITE_SHOW,null)};netgis.Menu.prototype.onImportGeopackageClick=function(a){this.client.invoke(netgis.Events.IMPORT_GEOPACKAGE_SHOW,null)};netgis.Menu.prototype.onExportPDFClick=function(a){this.client.invoke(netgis.Events.EXPORT_PDF_SHOW,null)}; -netgis.Menu.prototype.onExportJPEGClick=function(a){this.client.invoke(netgis.Events.EXPORT_JPEG_SHOW,null)};netgis.Menu.prototype.onExportPNGClick=function(a){this.client.invoke(netgis.Events.EXPORT_PNG_SHOW,null)};netgis.Menu.prototype.onExportGIFClick=function(a){this.client.invoke(netgis.Events.EXPORT_GIF_SHOW,null)};netgis=netgis||{};netgis.Modal=function(){this.addService=this.exportGIF=this.exportPNG=this.exportJPEG=this.exportPDF=this.importShapefile=this.importGML=this.importGeoJSON=this.client=null;this.addServiceID=1E4}; -netgis.Modal.prototype.load=function(){this.root=document.createElement("section");this.root.className="netgis-modal";this.root.addEventListener("click",this.onRootClick.bind(this));this.importGeoJSON=this.createImportGeoJSON();this.root.appendChild(this.importGeoJSON);this.importGML=this.createImportGML();this.root.appendChild(this.importGML);this.importShapefile=this.createImportShapefile();this.root.appendChild(this.importShapefile);this.importSpatialite=this.createImportSpatialite();this.root.appendChild(this.importSpatialite); -this.importGeopackage=this.createImportGeopackage();this.root.appendChild(this.importGeopackage);this.exportPDF=this.createExportPDF();this.root.appendChild(this.exportPDF);this.exportJPEG=this.createExportJPEG();this.root.appendChild(this.exportJPEG);this.exportPNG=this.createExportPNG();this.root.appendChild(this.exportPNG);this.exportGIF=this.createExportGIF();this.root.appendChild(this.exportGIF);this.addService=this.createAddService();this.root.appendChild(this.addService);this.client.root.appendChild(this.root); -this.client.on(netgis.Events.IMPORT_GEOJSON_SHOW,this.onImportGeoJSONShow.bind(this));this.client.on(netgis.Events.IMPORT_GML_SHOW,this.onImportGMLShow.bind(this));this.client.on(netgis.Events.IMPORT_SHAPEFILE_SHOW,this.onImportShapefileShow.bind(this));this.client.on(netgis.Events.IMPORT_SPATIALITE_SHOW,this.onImportSpatialiteShow.bind(this));this.client.on(netgis.Events.IMPORT_GEOPACKAGE_SHOW,this.onImportGeopackageShow.bind(this));this.client.on(netgis.Events.EXPORT_PDF_SHOW,this.onExportPDFShow.bind(this)); -this.client.on(netgis.Events.EXPORT_JPEG_SHOW,this.onExportJPEGShow.bind(this));this.client.on(netgis.Events.EXPORT_PNG_SHOW,this.onExportPNGShow.bind(this));this.client.on(netgis.Events.EXPORT_GIF_SHOW,this.onExportGIFShow.bind(this));this.client.on(netgis.Events.ADD_SERVICE_SHOW,this.onAddServiceShow.bind(this))}; +netgis.Menu.prototype.onImportGMLClick=function(a){this.client.invoke(netgis.Events.IMPORT_GML_SHOW,null)};netgis.Menu.prototype.onExportPDFClick=function(a){this.client.invoke(netgis.Events.EXPORT_PDF_SHOW,null)};netgis.Menu.prototype.onExportJPEGClick=function(a){this.client.invoke(netgis.Events.EXPORT_JPEG_SHOW,null)};netgis.Menu.prototype.onExportPNGClick=function(a){this.client.invoke(netgis.Events.EXPORT_PNG_SHOW,null)}; +netgis.Menu.prototype.onExportGIFClick=function(a){this.client.invoke(netgis.Events.EXPORT_GIF_SHOW,null)};netgis=netgis||{};netgis.Modal=function(){this.exportGIF=this.exportPNG=this.exportJPEG=this.exportPDF=this.importShapefile=this.importGML=this.importGeoJSON=this.client=null}; +netgis.Modal.prototype.load=function(){this.root=document.createElement("section");this.root.className="netgis-modal";this.root.addEventListener("click",this.onRootClick.bind(this));this.importGeoJSON=this.createImportGeoJSON();this.root.appendChild(this.importGeoJSON);this.importGML=this.createImportGML();this.root.appendChild(this.importGML);this.importShapefile=this.createImportShapefile();this.root.appendChild(this.importShapefile);this.exportPDF=this.createExportPDF();this.root.appendChild(this.exportPDF); +this.exportJPEG=this.createExportJPEG();this.root.appendChild(this.exportJPEG);this.exportPNG=this.createExportPNG();this.root.appendChild(this.exportPNG);this.exportGIF=this.createExportGIF();this.root.appendChild(this.exportGIF);this.client.root.appendChild(this.root);this.client.on(netgis.Events.IMPORT_GEOJSON_SHOW,this.onImportGeoJSONShow.bind(this));this.client.on(netgis.Events.IMPORT_GML_SHOW,this.onImportGMLShow.bind(this));this.client.on(netgis.Events.IMPORT_SHAPEFILE_SHOW,this.onImportShapefileShow.bind(this)); +this.client.on(netgis.Events.EXPORT_PDF_SHOW,this.onExportPDFShow.bind(this));this.client.on(netgis.Events.EXPORT_JPEG_SHOW,this.onExportJPEGShow.bind(this));this.client.on(netgis.Events.EXPORT_PNG_SHOW,this.onExportPNGShow.bind(this));this.client.on(netgis.Events.EXPORT_GIF_SHOW,this.onExportGIFShow.bind(this))}; netgis.Modal.prototype.createImportGeoJSON=function(){var a=this.createContainer("Import GeoJSON");this.createText(a,"Unterst\u00fctzte Koordinatensysteme:","
  • World Geodetic System 1984 (EPSG:4326)
  • ETRS89 / UTM zone 32N (EPSG:25832)
");this.createInputFile(a,"Datei ausw\u00e4hlen / ablegen:",".geojson,.json",this.onImportGeoJSONChange.bind(this));this.createSpace(a);this.createButton(a,"Importieren",this.onImportGeoJSONAccept.bind(this));return a}; netgis.Modal.prototype.createImportGML=function(){var a=this.createContainer("Import GML");this.createText(a,"Unterst\u00fctzte Koordinatensysteme:","
  • World Geodetic System 1984 (EPSG:4326)
  • ETRS89 / UTM zone 32N (EPSG:25832)
");this.createInputFile(a,"Datei ausw\u00e4hlen / ablegen:",".gml,.xml",this.onImportGMLChange.bind(this));this.createSpace(a);this.createButton(a,"Importieren",this.onImportGMLAccept.bind(this));return a}; netgis.Modal.prototype.createImportShapefile=function(){var a=this.createContainer("Import Shapefile");this.createText(a,"Unterst\u00fctzte Koordinatensysteme:","
  • World Geodetic System 1984 (EPSG:4326)
  • ETRS89 / UTM zone 32N (EPSG:25832)
");this.createInputFile(a,"Datei ausw\u00e4hlen / ablegen:","application/zip",this.onImportShapefileChange.bind(this));this.createSpace(a);this.createButton(a,"Importieren",this.onImportShapefileAccept.bind(this)); -return a}; -netgis.Modal.prototype.createImportSpatialite=function(){var a=this.createContainer("Import Spatialite");this.createText(a,"Unterst\u00fctzte Koordinatensysteme:","
  • World Geodetic System 1984 (EPSG:4326)
  • ETRS89 / UTM zone 32N (EPSG:25832)
");this.createInputFile(a,"Datei ausw\u00e4hlen / ablegen:",".sqlite",this.onImportSpatialiteChange.bind(this));this.createSpace(a);this.createButton(a,"Importieren",this.onImportSpatialiteAccept.bind(this));return a}; -netgis.Modal.prototype.createImportGeopackage=function(){var a=this.createContainer("Import GeoPackage");this.createText(a,"Unterst\u00fctzte Koordinatensysteme:","
  • World Geodetic System 1984 (EPSG:4326)
  • ETRS89 / UTM zone 32N (EPSG:25832)
");this.createInputFile(a,"Datei ausw\u00e4hlen / ablegen:",".gpkg",this.onImportGeopackageChange.bind(this));this.createSpace(a);this.createButton(a,"Importieren",this.onImportGeopackageAccept.bind(this));return a}; -netgis.Modal.prototype.createExportPDF=function(){var a=this.createContainer("Export PDF");this.createInputInteger(a,"Breite (Pixel):",800,0,4096);this.createInputInteger(a,"H\u00f6he (Pixel):",600,0,4096);this.createInputInteger(a,"Seitenr\u00e4nder (Millimeter):",10,0,100);this.createInputCheckbox(a,"Querformat:",!0);this.createSpace(a);this.createButton(a,"Exportieren",this.onExportPDFAccept.bind(this));return a}; +return a};netgis.Modal.prototype.createExportPDF=function(){var a=this.createContainer("Export PDF");this.createInputInteger(a,"Breite (Pixel):",800,0,4096);this.createInputInteger(a,"H\u00f6he (Pixel):",600,0,4096);this.createInputInteger(a,"Seitenr\u00e4nder (Millimeter):",10,0,100);this.createInputCheckbox(a,"Querformat:",!0);this.createSpace(a);this.createButton(a,"Exportieren",this.onExportPDFAccept.bind(this));return a}; netgis.Modal.prototype.createExportJPEG=function(){var a=this.createContainer("Export JPEG");this.createInputInteger(a,"Breite (Pixel):",800,0,4096);this.createInputInteger(a,"H\u00f6he (Pixel):",600,0,4096);this.createSpace(a);this.createButton(a,"Exportieren",this.onExportJPEGAccept.bind(this));return a}; netgis.Modal.prototype.createExportPNG=function(){var a=this.createContainer("Export PNG");this.createInputInteger(a,"Breite (Pixel):",800,0,4096);this.createInputInteger(a,"H\u00f6he (Pixel):",600,0,4096);this.createSpace(a);this.createButton(a,"Exportieren",this.onExportPNGAccept.bind(this));return a}; netgis.Modal.prototype.createExportGIF=function(){var a=this.createContainer("Export GIF");this.createInputInteger(a,"Breite (Pixel):",800,0,4096);this.createInputInteger(a,"H\u00f6he (Pixel):",600,0,4096);this.createSpace(a);this.createButton(a,"Exportieren",this.onExportGIFAccept.bind(this));return a}; -netgis.Modal.prototype.createAddService=function(){var a=this.createContainer("Dienst hinzuf\u00fcgen");this.createInputText(a,"WMS/WFS URL:");this.createSpace(a);this.createButton(a,"Dienst laden",this.onAddServiceLoad.bind(this));this.createSpace(a);this.createInputHidden(a);this.createText(a,"Bezeichnung:","");this.createInputSelect(a,"Kartenebene:",[]);this.createInputSelect(a,"Format:",[]);this.createSpace(a);this.createButton(a,"Dienst hinzuf\u00fcgen", -this.onAddServiceAccept.bind(this));return a};netgis.Modal.prototype.show=function(a){this.root.classList.add("netgis-show");for(var b=this.root.getElementsByClassName("netgis-dialog"),c=0;c";d.addEventListener("click",this.onHeaderClick.bind(this));c.appendChild(d);a=document.createElement("span");a.innerHTML="";d.appendChild(a);b.appendChild(c); c=document.createElement("div");c.className="netgis-modal-content";b.appendChild(c);d=document.createElement("table");c.appendChild(d);return b};netgis.Modal.prototype.createSpace=function(a){var b=document.createElement("tr");b.className="netgis-space";var c=document.createElement("td");c.setAttribute("colspan",100);b.appendChild(c);a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(b);return c}; netgis.Modal.prototype.createButton=function(a,b,c){var d=document.createElement("tr"),e=document.createElement("td");e.setAttribute("colspan",100);d.appendChild(e);var f=document.createElement("button");f.setAttribute("type","button");f.className="netgis-primary netgis-hover-primary";f.innerHTML=b;c&&f.addEventListener("click",c);e.appendChild(f);a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(d);return f}; -netgis.Modal.prototype.createInputHidden=function(a){var b=document.createElement("tr");b.className="netgis-hidden";var c=document.createElement("td");b.appendChild(c);var d=document.createElement("input");d.setAttribute("type","hidden");c.appendChild(d);a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(b);return d}; -netgis.Modal.prototype.createInputText=function(a,b){var c=document.createElement("tr"),d=document.createElement("th");d.className="netgis-padding";var e=document.createElement("label");e.innerHTML=b;d.appendChild(e);c.appendChild(d);b=document.createElement("td");b.className="netgis-padding";c.appendChild(b);d=document.createElement("input");d.setAttribute("type","text");b.appendChild(d);e.htmlFor=d;a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(c); -return d};netgis.Modal.prototype.createInputSelect=function(a,b,c){c=document.createElement("tr");var d=document.createElement("th");d.className="netgis-padding";var e=document.createElement("label");e.innerHTML=b;d.appendChild(e);c.appendChild(d);b=document.createElement("td");b.className="netgis-padding";c.appendChild(b);d=document.createElement("select");b.appendChild(d);e.htmlFor=d;a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(c);return d}; -netgis.Modal.prototype.createInputInteger=function(a,b,c,d,e){var f=document.createElement("tr"),g=document.createElement("th");g.className="netgis-padding";var h=document.createElement("label");h.innerHTML=b;g.appendChild(h);f.appendChild(g);b=document.createElement("td");b.className="netgis-padding";g=document.createElement("input");g.setAttribute("type","number");g.setAttribute("min",d);g.setAttribute("max",e);g.value=Number.parseInt(c);b.appendChild(g);f.appendChild(b);h.htmlFor=g;a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(f); -return g}; -netgis.Modal.prototype.createInputCheckbox=function(a,b,c){var d=document.createElement("tr"),e=document.createElement("th");e.className="netgis-padding";var f=document.createElement("label");f.innerHTML=b;e.appendChild(f);d.appendChild(e);b=document.createElement("td");b.className="netgis-padding";e=document.createElement("input");e.setAttribute("type","checkbox");e.checked=c;b.appendChild(e);d.appendChild(b);f.htmlFor=e;a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(d);return e}; -netgis.Modal.prototype.createInputFile=function(a,b,c,d){var e=document.createElement("tr"),f=document.createElement("th");f.className="netgis-padding";var g=document.createElement("label");g.innerHTML=b;f.appendChild(g);e.appendChild(f);b=document.createElement("td");b.className="netgis-padding";f=document.createElement("input");f.setAttribute("type","file");f.setAttribute("accept",c);d&&f.addEventListener("change",d);b.appendChild(f);e.appendChild(b);a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(e); -return f};netgis.Modal.prototype.createText=function(a,b,c){var d=document.createElement("tr"),e=document.createElement("th");e.className="netgis-padding";e.innerHTML=b;d.appendChild(e);b=document.createElement("td");b.className="netgis-padding";b.innerHTML=c;d.appendChild(b);a.getElementsByClassName("netgis-modal-content")[0].getElementsByTagName("table")[0].appendChild(d);return b};netgis.Modal.prototype.onRootClick=function(a){a.target===this.root&&this.hide()}; -netgis.Modal.prototype.onHeaderClick=function(a){this.hide()};netgis.Modal.prototype.onImportGeoJSONShow=function(a){a=this.importGeoJSON.getElementsByTagName("input")[0];var b=this.importGeoJSON.getElementsByTagName("button")[1];a.value="";b.disabled=!0;this.show(this.importGeoJSON)};netgis.Modal.prototype.onImportGeoJSONChange=function(a){a=this.importGeoJSON.getElementsByTagName("input")[0];this.importGeoJSON.getElementsByTagName("button")[1].disabled=a.value&&0Punkte zeichnen:',this.onToolbarClose.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_POINTS],this.createToolbarCheckbox("Einrasten",this.onSnapChange.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_POINTS],this.createToolbarCheckbox("Puffern",this.onDrawBufferChange.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_POINTS],this.createToolbarInput("Radius (Meter):",b,this.onDrawBufferRadiusChange.bind(this))); -this.append(this.toolbars[netgis.Modes.DRAW_POINTS],this.createToolbarInput("Segmente:",c,this.onDrawBufferSegmentsChange.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.DRAW_POINTS]);this.toolbars[netgis.Modes.DRAW_LINES]=this.createToolbar();this.append(this.toolbars[netgis.Modes.DRAW_LINES],this.createToolbarButton('Linien zeichnen:',this.onToolbarClose.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_LINES],this.createToolbarCheckbox("Einrasten", -this.onSnapChange.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_LINES],this.createToolbarCheckbox("Puffern",this.onDrawBufferChange.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_LINES],this.createToolbarInput("Radius (Meter):",b,this.onDrawBufferRadiusChange.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_LINES],this.createToolbarInput("Segmente:",c,this.onDrawBufferSegmentsChange.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.DRAW_LINES]);this.showDrawBufferOptions(!1); -this.toolbars[netgis.Modes.DRAW_POLYGONS]=this.createToolbar();this.append(this.toolbars[netgis.Modes.DRAW_POLYGONS],this.createToolbarButton('Polygone zeichnen:',this.onToolbarClose.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_POLYGONS],this.createToolbarCheckbox("Einrasten",this.onSnapChange.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_POLYGONS],this.createToolbarCheckbox("Tracing",this.onTracingChange.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.DRAW_POLYGONS]); -this.toolbars[netgis.Modes.CUT_FEATURE_BEGIN]=this.createToolbar();this.append(this.toolbars[netgis.Modes.CUT_FEATURE_BEGIN],this.createToolbarButton('Feature zum Ausschneiden w\u00e4hlen:',this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.CUT_FEATURE_BEGIN]);this.toolbars[netgis.Modes.CUT_FEATURE_DRAW]=this.createToolbar();this.append(this.toolbars[netgis.Modes.CUT_FEATURE_DRAW],this.createToolbarButton('Fl\u00e4che zum Ausschneiden zeichnen:', -this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.CUT_FEATURE_DRAW]);this.toolbars[netgis.Modes.MODIFY_FEATURES]=this.createToolbar();this.append(this.toolbars[netgis.Modes.MODIFY_FEATURES],this.createToolbarButton('Features verschieben:',this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.MODIFY_FEATURES]);this.toolbars[netgis.Modes.DELETE_FEATURES]=this.createToolbar();this.append(this.toolbars[netgis.Modes.DELETE_FEATURES], -this.createToolbarButton('Features l\u00f6schen:',this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.DELETE_FEATURES]);this.toolbars[netgis.Modes.BUFFER_FEATURE_BEGIN]=this.createToolbar();this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_BEGIN],this.createToolbarButton('Feature zum Puffern w\u00e4hlen:',this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.BUFFER_FEATURE_BEGIN]); -this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT]=this.createToolbar();this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT],this.createToolbarButton('Feature puffern:',this.onBufferCancel.bind(this)));this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT],this.createToolbarInput("Radius (Meter):",b,this.onBufferChange.bind(this)));this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT],this.createToolbarInput("Segmente:",c,this.onBufferChange.bind(this))); -this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT],this.createToolbarButton('OK',this.onBufferAccept.bind(this)));a=this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT].getElementsByTagName("input");a[0].addEventListener("keyup",this.onBufferKeyUp.bind(this));a[1].addEventListener("keyup",this.onBufferKeyUp.bind(this));a[1].setAttribute("min",1);this.root.appendChild(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT])}this.toolbars[netgis.Modes.SEARCH_PLACE]= -this.createToolbar();this.append(this.toolbars[netgis.Modes.SEARCH_PLACE],this.createToolbarButton('Suche:',this.onToolbarClose.bind(this)));a=this.createToolbarInputText("Adresse...","",null);a.style.position="relative";this.searchInput=a.getElementsByTagName("input")[0];this.searchInput.addEventListener("keyup",this.onSearchKeyUp.bind(this));this.searchInput.addEventListener("focus",this.onSearchFocus.bind(this));this.searchInput.addEventListener("blur", -this.onSearchBlur.bind(this));this.append(this.toolbars[netgis.Modes.SEARCH_PLACE],a);this.searchList=document.createElement("ul");this.searchList.className="netgis-dropdown-content netgis-search-list netgis-dialog netgis-shadow netgis-hide";a.appendChild(this.searchList);this.append(this.toolbars[netgis.Modes.SEARCH_PLACE],this.createToolbarButton('',this.onSearchClear.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.SEARCH_PLACE]);this.client.root.appendChild(this.root); -this.client.on(netgis.Events.SET_MODE,this.onSetMode.bind(this));this.client.on(netgis.Events.SEARCH_PLACE_RESPONSE,this.onSearchPlaceResponse.bind(this))};netgis.Toolbar.prototype.createToolbar=function(){var a=document.createElement("div");a.className="netgis-toolbar netgis-dialog netgis-shadow netgis-hide";var b=document.createElement("div");a.appendChild(b);return a};netgis.Toolbar.prototype.append=function(a,b){a.getElementsByTagName("div")[0].appendChild(b)}; -netgis.Toolbar.prototype.createToolbarButton=function(a,b){var c=document.createElement("button");c.setAttribute("type","button");c.className="netgis-hover-light";c.innerHTML=a;c.addEventListener("click",b);return c}; +netgis.Toolbar.prototype.load=function(){var a=this.client.config;this.root=document.createElement("section");this.root.className="netgis-toolbars";if(this.client.editable){this.toolbars[netgis.Modes.DRAW_POINTS]=this.createToolbar();this.append(this.toolbars[netgis.Modes.DRAW_POINTS],this.createToolbarButton('Punkte zeichnen:',this.onToolbarClose.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_POINTS],this.createToolbarCheckbox("Einrasten",this.onSnapChange.bind(this))); +this.root.appendChild(this.toolbars[netgis.Modes.DRAW_POINTS]);this.toolbars[netgis.Modes.DRAW_LINES]=this.createToolbar();this.append(this.toolbars[netgis.Modes.DRAW_LINES],this.createToolbarButton('Linien zeichnen:',this.onToolbarClose.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_LINES],this.createToolbarCheckbox("Einrasten",this.onSnapChange.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.DRAW_LINES]);this.toolbars[netgis.Modes.DRAW_POLYGONS]= +this.createToolbar();this.append(this.toolbars[netgis.Modes.DRAW_POLYGONS],this.createToolbarButton('Polygone zeichnen:',this.onToolbarClose.bind(this)));this.append(this.toolbars[netgis.Modes.DRAW_POLYGONS],this.createToolbarCheckbox("Einrasten",this.onSnapChange.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.DRAW_POLYGONS]);this.toolbars[netgis.Modes.CUT_FEATURE_BEGIN]=this.createToolbar();this.append(this.toolbars[netgis.Modes.CUT_FEATURE_BEGIN], +this.createToolbarButton('Feature zum Ausschneiden w\u00e4hlen:',this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.CUT_FEATURE_BEGIN]);this.toolbars[netgis.Modes.CUT_FEATURE_DRAW]=this.createToolbar();this.append(this.toolbars[netgis.Modes.CUT_FEATURE_DRAW],this.createToolbarButton('Fl\u00e4che zum Ausschneiden zeichnen:',this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.CUT_FEATURE_DRAW]); +this.toolbars[netgis.Modes.MODIFY_FEATURES]=this.createToolbar();this.append(this.toolbars[netgis.Modes.MODIFY_FEATURES],this.createToolbarButton('Features verschieben:',this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.MODIFY_FEATURES]);this.toolbars[netgis.Modes.DELETE_FEATURES]=this.createToolbar();this.append(this.toolbars[netgis.Modes.DELETE_FEATURES],this.createToolbarButton('Features l\u00f6schen:', +this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.DELETE_FEATURES]);this.toolbars[netgis.Modes.BUFFER_FEATURE_BEGIN]=this.createToolbar();this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_BEGIN],this.createToolbarButton('Feature zum Puffern w\u00e4hlen:',this.onToolbarClose.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.BUFFER_FEATURE_BEGIN]);this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT]=this.createToolbar(); +var b=1E3,c=3;netgis.util.isDefined(a.tools)&&(netgis.util.isDefined(a.tools.buffer.defaultRadius)&&(b=a.tools.buffer.defaultRadius),netgis.util.isDefined(a.tools.buffer.defaultSegments)&&(c=a.tools.buffer.defaultSegments));this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT],this.createToolbarButton('Feature puffern:',this.onBufferCancel.bind(this)));this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT],this.createToolbarInput("Radius in Meter:", +b,this.onBufferChange.bind(this)));this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT],this.createToolbarInput("Segmente:",c,this.onBufferChange.bind(this)));this.append(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT],this.createToolbarButton('OK',this.onBufferAccept.bind(this)));a=this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT].getElementsByTagName("input");a[0].addEventListener("keyup",this.onBufferKeyUp.bind(this));a[1].addEventListener("keyup", +this.onBufferKeyUp.bind(this));a[1].setAttribute("min",1);this.root.appendChild(this.toolbars[netgis.Modes.BUFFER_FEATURE_EDIT])}this.toolbars[netgis.Modes.SEARCH_PLACE]=this.createToolbar();this.append(this.toolbars[netgis.Modes.SEARCH_PLACE],this.createToolbarButton('Suche:',this.onToolbarClose.bind(this)));a=this.createToolbarInputText("Adresse...","",null);a.style.position="relative";this.searchInput=a.getElementsByTagName("input")[0];this.searchInput.addEventListener("keyup", +this.onSearchKeyUp.bind(this));this.searchInput.addEventListener("focus",this.onSearchFocus.bind(this));this.searchInput.addEventListener("blur",this.onSearchBlur.bind(this));this.append(this.toolbars[netgis.Modes.SEARCH_PLACE],a);this.searchList=document.createElement("ul");this.searchList.className="netgis-dropdown-content netgis-search-list netgis-dialog netgis-shadow netgis-hide";a.appendChild(this.searchList);this.append(this.toolbars[netgis.Modes.SEARCH_PLACE],this.createToolbarButton('', +this.onSearchClear.bind(this)));this.root.appendChild(this.toolbars[netgis.Modes.SEARCH_PLACE]);this.client.root.appendChild(this.root);this.client.on(netgis.Events.SET_MODE,this.onSetMode.bind(this));this.client.on(netgis.Events.SEARCH_PLACE_RESPONSE,this.onSearchPlaceResponse.bind(this))};netgis.Toolbar.prototype.createToolbar=function(){var a=document.createElement("div");a.className="netgis-toolbar netgis-dialog netgis-shadow netgis-hide";var b=document.createElement("div");a.appendChild(b);return a}; +netgis.Toolbar.prototype.append=function(a,b){a.getElementsByTagName("div")[0].appendChild(b)};netgis.Toolbar.prototype.createToolbarButton=function(a,b){var c=document.createElement("button");c.setAttribute("type","button");c.className="netgis-hover-light";c.innerHTML=a;c.addEventListener("click",b);return c}; netgis.Toolbar.prototype.createToolbarCheckbox=function(a,b){var c=document.createElement("label");c.className="netgis-hover-light";var d=document.createElement("input");d.setAttribute("type","checkbox");d.addEventListener("change",b);c.appendChild(d);a=document.createTextNode(a);c.appendChild(a);return c}; netgis.Toolbar.prototype.createToolbarInput=function(a,b,c){var d=document.createElement("label");d.className="netgis-hover-light";a=document.createTextNode(a);d.appendChild(a);a=document.createElement("input");a.setAttribute("type","number");a.setAttribute("min",0);a.value=b;a.addEventListener("change",c);d.appendChild(a);return d}; netgis.Toolbar.prototype.createToolbarInputText=function(a,b,c){var d=document.createElement("label");d.className="netgis-hover-light";var e=document.createElement("input");e.setAttribute("type","text");e.setAttribute("placeholder",a);e.value=b;c&&e.addEventListener("change",c);d.appendChild(e);return d}; -netgis.Toolbar.prototype.onSetMode=function(a){var b=!this.toolbars[netgis.Modes.SEARCH_PLACE].classList.contains("netgis-hide");netgis.util.foreach(this.toolbars,function(b,d){b===a?d.classList.remove("netgis-hide"):d.classList.add("netgis-hide")});switch(a){case netgis.Modes.SEARCH_PLACE:b?this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.VIEW):this.searchInput.focus();break;case netgis.Modes.BUFFER_FEATURE_EDIT:this.updateBuffer();break;case netgis.Modes.DRAW_POINTS:case netgis.Modes.DRAW_LINES:this.toolbars[netgis.Modes.DRAW_POINTS].getElementsByTagName("input")[1].checked&& -this.client.invoke(netgis.Events.DRAW_BUFFER_ON,null)}};netgis.Toolbar.prototype.onToolbarClose=function(a){this.client.invoke(netgis.Events.SET_MODE,netgis.Modes.VIEW)};netgis.Toolbar.prototype.searchRequest=function(a){a=a.trim();a!==this.searchValue&&(this.searchValue=a,0")},create:function(a){var b=document.createElement("tbody");b.innerHTML= -a;return b.children[0]},size:function(a){a=(new TextEncoder).encode(JSON.stringify(a)).length;var b=a/1024;return{bytes:a,kilobytes:b,megabytes:b/1024}},request:function(a,c){var b=new XMLHttpRequest;b.onload=function(){c(this.responseText)};b.open("GET",a,!0);b.send()},padstr:function(a,c){for(a=a.toString();a.length 0 ) { - //console.info( "INPUT:", this.output.value ); var json = JSON.parse( this.output.value ); this.invoke( netgis.Events.EDIT_FEATURES_LOADED, json ); } @@ -289,7 +288,6 @@ netgis.Client.prototype.onHtmlResponse = function( data ) netgis.Client.prototype.onEditFeaturesChange = function( e ) { var geojson = JSON.stringify( e ); - //console.info( "OUTPUT:", geojson ); this.output.value = geojson; }; diff --git a/src/netgis/Events.js b/src/netgis/Events.js index f0ba901..8cd2028 100644 --- a/src/netgis/Events.js +++ b/src/netgis/Events.js @@ -40,27 +40,18 @@ netgis.Events = Object.freeze BUFFER_CHANGE: "BUFFER_CHANGE", BUFFER_ACCEPT: "BUFFER_ACCEPT", BUFFER_CANCEL: "BUFFER_CANCEL", - DRAW_BUFFER_ON: "DRAW_BUFFER_ON", - DRAW_BUFFER_OFF: "DRAW_BUFFER_OFF", - DRAW_BUFFER_RADIUS_CHANGE: "DRAW_BUFFER_RADIUS_CHANGE", - DRAW_BUFFER_SEGMENTS_CHANGE: "DRAW_BUFFER_SEGMENTS_CHANGE", + SNAP_ON: "SNAP_ON", SNAP_OFF: "SNAP_OFF", - TRACING_ON: "TRACING_ON", - TRACING_OFF: "TRACING_OFF", IMPORT_SHAPEFILE_SHOW: "IMPORT_SHAPEFILE_SHOW", IMPORT_GEOJSON_SHOW: "IMPORT_GEOJSON_SHOW", IMPORT_GML_SHOW: "IMPORT_GML_SHOW", - IMPORT_SPATIALITE_SHOW: "IMPORT_SPATIALITE_SHOW", - IMPORT_GEOPACKAGE_SHOW: "IMPORT_GEOPACKAGE_SHOW", IMPORT_SHAPEFILE: "IMPORT_SHAPEFILE", IMPORT_GEOJSON: "IMPORT_GEOJSON", IMPORT_GML: "IMPORT_GML", IMPORT_WKT: "IMPORT_WKT", - IMPORT_SPATIALITE: "IMPORT_SPATIALITE", - IMPORT_GEOPACKAGE: "IMPORT_GEOPACKAGE", EXPORT_PDF_SHOW: "EXPORT_PDF_SHOW", EXPORT_JPEG_SHOW: "EXPORT_JPEG_SHOW", @@ -72,10 +63,6 @@ netgis.Events = Object.freeze EXPORT_PNG: "EXPORT_PNG", EXPORT_GIF: "EXPORT_GIF", EXPORT_BEGIN: "EXPORT_BEGIN", - EXPORT_END: "EXPORT_END", - - ADD_SERVICE_SHOW: "ADD_SERVICE_SHOW", - ADD_SERVICE_WMS: "ADD_SERVICE_WMS", - ADD_SERVICE_WFS: "ADD_SERVICE_WFS" + EXPORT_END: "EXPORT_END" } ); diff --git a/src/netgis/LayerTree.css b/src/netgis/LayerTree.css index 29d0017..a032d58 100644 --- a/src/netgis/LayerTree.css +++ b/src/netgis/LayerTree.css @@ -157,27 +157,3 @@ { opacity: 0.5; } - -.netgis-layer-tools -{ - padding: 4mm; - padding-top: 0mm; - text-align: center; -} - -.netgis-layer-tools hr -{ - margin: 4mm 0mm; - color: #eee; - border-color: #eee; -} - -.netgis-layer-tools button -{ - padding: 2mm 4mm; -} - -.netgis-layer-tools button i -{ - margin-right: 1mm; -} diff --git a/src/netgis/LayerTree.js b/src/netgis/LayerTree.js index afbff5b..57c9a2a 100644 --- a/src/netgis/LayerTree.js +++ b/src/netgis/LayerTree.js @@ -24,55 +24,20 @@ netgis.LayerTree.prototype.load = function() this.list.className = "root"; this.root.appendChild( this.list ); - this.initDefaultFolders(); - - this.tools = document.createElement( "div" ); - this.tools.className = "netgis-layer-tools"; - this.tools.innerHTML = "
"; - this.root.appendChild( this.tools ); - - this.buttonAddService = document.createElement( "button" ); - //this.buttonAddService.className = "netgis-primary netgis-hover-primary netgis-shadow"; - this.buttonAddService.className = "netgis-text-primary netgis-hover-primary"; - //this.buttonAddService.innerHTML = " Dienst hinzufügen"; - this.buttonAddService.innerHTML = " Dienst hinzufügen"; - //this.buttonAddService.innerHTML = " Dienst hinzufügen"; - this.buttonAddService.addEventListener( "click", this.onAddServiceClick.bind( this ) ); - this.tools.appendChild( this.buttonAddService ); - this.client.root.appendChild( this.root ); this.client.on( netgis.Events.CONTEXT_UPDATE, this.onContextUpdate.bind( this ) ); this.client.on( netgis.Events.LAYER_LIST_TOGGLE, this.onLayerListToggle.bind( this ) ); this.client.on( netgis.Events.LAYER_CREATED, this.onLayerCreated.bind( this ) ); this.client.on( netgis.Events.EDIT_FEATURES_CHANGE, this.onEditFeaturesChange.bind( this ) ); - this.client.on( netgis.Events.ADD_SERVICE_WMS, this.onAddServiceWMS.bind( this ) ); - this.client.on( netgis.Events.ADD_SERVICE_WFS, this.onAddServiceWFS.bind( this ) ); //TODO: kind of hack to hide if parcel search open this.client.on( netgis.Events.SET_MODE, this.onSetMode.bind( this ) ); }; -netgis.LayerTree.prototype.initDefaultFolders = function() -{ - this.folderDraw = this.createFolder( "Zeichnung" ); - this.folderDraw.classList.add( "netgis-hide" ); - this.list.appendChild( this.folderDraw ); - - this.folderImport = this.createFolder( "Importierte Ebenen" ); - this.folderImport.classList.add( "netgis-hide" ); - this.list.appendChild( this.folderImport ); - - this.folderServices = this.createFolder( "Eigene Dienste" ); - this.folderServices.classList.add( "netgis-hide" ); - this.list.appendChild( this.folderServices ); -}; - netgis.LayerTree.prototype.clearAll = function() { this.list.innerHTML = ""; - - this.initDefaultFolders(); }; netgis.LayerTree.prototype.createFolder = function( title ) @@ -137,9 +102,6 @@ netgis.LayerTree.prototype.createLayer = function( id, title, checked ) var text = document.createTextNode( title ); label.appendChild( text ); - var appendix = document.createElement( "span" ); - label.appendChild( appendix ); - return item; }; @@ -380,26 +342,21 @@ netgis.LayerTree.prototype.onLayerCreated = function( e ) //TODO: this is a hack to get special folders working if ( e.folder === "import" ) { - /*if ( ! this.folderImport ) + if ( ! this.folderImport ) { this.folderImport = this.createFolder( "Importierte Ebenen" ); this.list.insertBefore( this.folderImport, this.folderDraw ? this.folderDraw.nextSibling : this.list.firstChild ); } - */ - - this.folderImport.classList.remove( "netgis-hide" ); - + folder = this.folderImport; } else if ( e.folder === "draw" ) { - /*if ( ! this.folderDraw ) + if ( ! this.folderDraw ) { this.folderDraw = this.createFolder( "Zeichnung" ); this.list.insertBefore( this.folderDraw, this.list.firstChild ); - }*/ - - this.folderDraw.classList.remove( "netgis-hide" ); + } folder = this.folderDraw; } @@ -425,54 +382,13 @@ netgis.LayerTree.prototype.onEditFeaturesChange = function( e ) this.updateFolderChecks( this.folderDraw ); this.client.invoke( netgis.Events.LAYER_SHOW, { id: id } ); } - - // Update Area - var label = list.getElementsByTagName( "label" )[ 0 ]; - var spans = label.getElementsByTagName( "span" ); - var appendix = spans[ spans.length - 1 ]; - - if ( e.area && e.area > 0.0 ) - { - appendix.innerText = " (Fläche: " + netgis.util.formatArea( e.area, true ) + ")"; - } - else - { - appendix.innerText = ""; - } }; }; -netgis.LayerTree.prototype.onAddServiceWMS = function( e ) -{ - var item = this.createLayer( e.id, e.title, true ); - - this.folderServices.classList.remove( "netgis-hide" ); - this.addToFolder( this.folderServices, item, true ); - this.updateFolderChecks( this.folderServices ); - - this.client.invoke( netgis.Events.LAYER_SHOW, { id: e.id } ); -}; - -netgis.LayerTree.prototype.onAddServiceWFS = function( e ) -{ - var item = this.createLayer( e.id, e.title, true ); - - this.folderServices.classList.remove( "netgis-hide" ); - this.addToFolder( this.folderServices, item, true ); - this.updateFolderChecks( this.folderServices ); - - this.client.invoke( netgis.Events.LAYER_SHOW, { id: e.id } ); -}; - netgis.LayerTree.prototype.onSetMode = function( e ) { if ( e === netgis.Modes.SEARCH_PARCEL ) { this.root.classList.add( "netgis-hide" ); } -}; - -netgis.LayerTree.prototype.onAddServiceClick = function( e ) -{ - this.client.invoke( netgis.Events.ADD_SERVICE_SHOW, null ); }; \ No newline at end of file diff --git a/src/netgis/MapOpenLayers.js b/src/netgis/MapOpenLayers.js index 7a8c6bb..5321cce 100644 --- a/src/netgis/MapOpenLayers.js +++ b/src/netgis/MapOpenLayers.js @@ -28,11 +28,8 @@ netgis.MapOpenLayers = function() this.editEventsSilent = false; - this.importLayerID = 20000; - this.editLayerID = 30000; - this.labelFont = "4mm Verdana, sans-serif"; - this.drawBufferRadius = 100.0; - this.drawBufferSegments = 3; + this.importLayerID = 1000; + this.editLayerID = 2000; }; netgis.MapOpenLayers.prototype = Object.create( netgis.Map.prototype ); @@ -57,9 +54,9 @@ netgis.MapOpenLayers.prototype.load = function() this.root.addEventListener( "drop", this.onDragDrop.bind( this ) ); // Map Renderer - this.initMap(); - this.initDefaultLayers(); - this.initInteractions(); + this.createMap(); + this.createDefaultLayers(); + this.createInteractions(); // Events this.client.on( netgis.Events.CONTEXT_UPDATE, this.onContextUpdate.bind( this ) ); @@ -68,8 +65,6 @@ netgis.MapOpenLayers.prototype.load = function() this.client.on( netgis.Events.SET_MODE, this.onSetMode.bind( this ) ); this.client.on( netgis.Events.SNAP_ON, this.onSnapOn.bind( this ) ); this.client.on( netgis.Events.SNAP_OFF, this.onSnapOff.bind( this ) ); - this.client.on( netgis.Events.TRACING_ON, this.onTracingOn.bind( this ) ); - this.client.on( netgis.Events.TRACING_OFF, this.onTracingOff.bind( this ) ); this.client.on( netgis.Events.LAYER_SHOW, this.onLayerShow.bind( this ) ); this.client.on( netgis.Events.LAYER_HIDE, this.onLayerHide.bind( this ) ); this.client.on( netgis.Events.MAP_ZOOM_WKT, this.onZoomWKT.bind( this ) ); @@ -82,23 +77,15 @@ netgis.MapOpenLayers.prototype.load = function() this.client.on( netgis.Events.IMPORT_GML, this.onImportGML.bind( this ) ); this.client.on( netgis.Events.IMPORT_SHAPEFILE, this.onImportShapefile.bind( this ) ); this.client.on( netgis.Events.IMPORT_WKT, this.onImportWKT.bind( this ) ); - this.client.on( netgis.Events.IMPORT_SPATIALITE, this.onImportSpatialite.bind( this ) ); - this.client.on( netgis.Events.IMPORT_GEOPACKAGE, this.onImportGeopackage.bind( this ) ); this.client.on( netgis.Events.EXPORT_PDF, this.onExportPDF.bind( this ) ); this.client.on( netgis.Events.EXPORT_JPEG, this.onExportJPEG.bind( this ) ); this.client.on( netgis.Events.EXPORT_PNG, this.onExportPNG.bind( this ) ); this.client.on( netgis.Events.EXPORT_GIF, this.onExportGIF.bind( this ) ); this.client.on( netgis.Events.PARCEL_SHOW_PREVIEW, this.onParcelShowPreview.bind( this ) ); this.client.on( netgis.Events.PARCEL_HIDE_PREVIEW, this.onParcelHidePreview.bind( this ) ); - this.client.on( netgis.Events.ADD_SERVICE_WMS, this.onAddServiceWMS.bind( this ) ); - this.client.on( netgis.Events.ADD_SERVICE_WFS, this.onAddServiceWFS.bind( this ) ); - this.client.on( netgis.Events.DRAW_BUFFER_ON, this.onDrawBufferOn.bind( this ) ); - this.client.on( netgis.Events.DRAW_BUFFER_OFF, this.onDrawBufferOff.bind( this ) ); - this.client.on( netgis.Events.DRAW_BUFFER_RADIUS_CHANGE, this.onDrawBufferRadiusChange.bind( this ) ); - this.client.on( netgis.Events.DRAW_BUFFER_SEGMENTS_CHANGE, this.onDrawBufferSegmentsChange.bind( this ) ); }; -netgis.MapOpenLayers.prototype.initMap = function() +netgis.MapOpenLayers.prototype.createMap = function() { var config = this.client.config; @@ -146,17 +133,14 @@ netgis.MapOpenLayers.prototype.initMap = function() this.view.on( "change:resolution", this.onChangeResolution.bind( this ) ); }; -netgis.MapOpenLayers.prototype.initDefaultLayers = function() +netgis.MapOpenLayers.prototype.createDefaultLayers = function() { //TODO: why id as z index ? this.editLayer = new ol.layer.Vector( { source: new ol.source.Vector( { features: [] } ), style: this.styleEdit.bind( this ), zIndex: this.editLayerID } ); this.map.addLayer( this.editLayer ); - this.previewLayer = new ol.layer.Vector( { source: new ol.source.Vector( { features: [] } ), style: this.styleSketch.bind( this ), zIndex: this.editLayerID + 10 } ); - this.map.addLayer( this.previewLayer ); - - this.parcelLayer = new ol.layer.Vector( { source: new ol.source.Vector( { features: [] } ), style: this.styleParcel.bind( this ), zIndex: this.editLayerID + 20 } ); + this.parcelLayer = new ol.layer.Vector( { source: new ol.source.Vector( { features: [] } ), style: this.styleParcel.bind( this ), zIndex: this.editLayerID + 10 } ); this.map.addLayer( this.parcelLayer ); this.editEventsOn(); @@ -179,7 +163,7 @@ netgis.MapOpenLayers.prototype.editEventsOff = function() //this.editLayer.getSource().un( "removefeature"/*, this.onEditLayerRemove*/ ); }; -netgis.MapOpenLayers.prototype.initInteractions = function() +netgis.MapOpenLayers.prototype.createInteractions = function() { // View this.interactions[ netgis.Modes.VIEW ] = @@ -200,8 +184,6 @@ netgis.MapOpenLayers.prototype.initInteractions = function() new ol.interaction.MouseWheelZoom() ]; - this.interactions[ netgis.Modes.DRAW_POINTS ][ 0 ].on( "drawend", this.onDrawPointsEnd.bind( this ) ); - this.interactions[ netgis.Modes.DRAW_LINES ] = [ new ol.interaction.Draw( { type: "LineString", source: this.editLayer.getSource(), style: this.styleSketch.bind( this ) } ), @@ -209,8 +191,6 @@ netgis.MapOpenLayers.prototype.initInteractions = function() new ol.interaction.MouseWheelZoom() ]; - this.interactions[ netgis.Modes.DRAW_LINES ][ 0 ].on( "drawend", this.onDrawLinesEnd.bind( this ) ); - this.interactions[ netgis.Modes.DRAW_POLYGONS ] = [ new ol.interaction.Draw( { type: "Polygon", source: this.editLayer.getSource(), style: this.styleSketch.bind( this ) } ), @@ -277,175 +257,137 @@ netgis.MapOpenLayers.prototype.initInteractions = function() netgis.MapOpenLayers.prototype.createLayer = function( data ) { - var layer = null; + //TODO: refactor into createLayerWMS, createLayerWFS etc. - // Create Specific Layer By Type switch ( data.type ) { case netgis.LayerTypes.XYZ: { - layer = this.createLayerXYZ( data.url ); - break; + var layer = new ol.layer.Tile + ( + { + source: new ol.source.XYZ + ( + { + url: data.url, + crossOrigin: "anonymous" + } + ) + } + ); + + return layer; } case netgis.LayerTypes.OSM: { - layer = this.createLayerOSM(); - break; + var layer = new ol.layer.Tile + ( + { + source: new ol.source.XYZ + ( + { + url: "https://{a-c}.tile.openstreetmap.de/{z}/{x}/{y}.png", + crossOrigin: "anonymous" + } + ) + } + ); + + return layer; } case netgis.LayerTypes.WMS: { - layer = this.createLayerWMS( data.url, data.name, data.format, data.username, data.password ); - break; + var params = + { + url: data.url, + params: + { + "LAYERS": data.name, + "FORMAT": "image/png", + "TRANSPARENT": "true", + "VERSION": "1.1.1" + }, + serverType: "mapserver", + crossOrigin: "anonymous", + hidpi: false + //ratio: 3.0 + }; + + // Authorization + if ( data.username && data.password ) + { + params.imageLoadFunction = function( image, src ) + { + var request = new XMLHttpRequest(); + request.open( "GET", src ); + request.setRequestHeader( "Authorization", "Basic " + window.btoa( data.username + ":" + data.password ) ); + + request.onload = function() + { + image.getImage().src = src; + }; + + request.send(); + }; + } + + var source = new ol.source.ImageWMS( params ); + + var layer = new ol.layer.Image + ( + { + source: source, + //zIndex: index, + opacity: 1.0 + } + ); + + return layer; } case netgis.LayerTypes.WFS: { - layer = this.createLayerWFS( data.url, data.name, this.client.config.map.projection, data.outputFormat ); - break; - } - } - - // Common Settings - if ( layer ) - { - if ( data.minZoom ) layer.setMinZoom( Number.parseFloat( data.minZoom ) - 1.0 ); - if ( data.maxZoom ) layer.setMaxZoom( Number.parseFloat( data.maxZoom ) ); - } - - return layer; -}; - -netgis.MapOpenLayers.prototype.createLayerXYZ = function( url ) -{ - var layer = new ol.layer.Tile - ( - { - source: new ol.source.XYZ + var config = this.client.config; + + var url = data.url + + "service=WFS" + + "&version=1.1.0" + + "&request=GetFeature" + + "&outputformat=application/json"; + + var source = new ol.source.Vector ( { - url: url, - crossOrigin: "anonymous" + format: new ol.format.GeoJSON(), + strategy: ol.loadingstrategy.bbox, + url: function( extent ) + { + return url + + "&typename=" + data.name + + "&srsname=" + config.map.projection + + "&bbox=" + extent.join( "," ) + "," + config.map.projection; + } } - ) - } - ); + ); - return layer; -}; - -netgis.MapOpenLayers.prototype.createLayerOSM = function() -{ - var layer = new ol.layer.Tile - ( - { - source: new ol.source.XYZ + var layer = new ol.layer.Vector ( { - url: "https://{a-c}.tile.openstreetmap.de/{z}/{x}/{y}.png", - crossOrigin: "anonymous" + source: source } - ) - } - ); + ); - return layer; -}; - -netgis.MapOpenLayers.prototype.createLayerWMS = function( url, layerName, format, user, password ) -{ - var params = - { - url: url, - params: - { - "LAYERS": layerName, - "FORMAT": format ? format : "image/png", - "TRANSPARENT": "true", - "VERSION": "1.1.1" - }, - serverType: "mapserver", - crossOrigin: "anonymous", - hidpi: false - //ratio: 3.0 - }; - - // Authorization - if ( user && password ) - { - params.imageLoadFunction = function( image, src ) - { - var request = new XMLHttpRequest(); - request.open( "GET", src ); - request.setRequestHeader( "Authorization", "Basic " + window.btoa( user + ":" + password ) ); - - request.onload = function() - { - image.getImage().src = src; - }; - - request.send(); - }; - } - - var source = new ol.source.ImageWMS( params ); - - var layer = new ol.layer.Image - ( - { - source: source, - //zIndex: index, - opacity: 1.0 - } - ); + var self = this; + source.on( "featuresloadstart", function( e ) { self.removeSnapLayer( layer ); } ); + source.on( "featuresloadend", function( e ) { window.setTimeout( function() { self.addSnapLayer( layer ); }, 10 ); } ); - return layer; -}; - -netgis.MapOpenLayers.prototype.createLayerWFS = function( url, typeName, projection, outputFormat ) -{ - url = url - + "service=WFS" - + "&version=1.1.0" - + "&request=GetFeature"; - - if ( ! outputFormat ) - outputFormat = "application/json"; - else - outputFormat = netgis.util.replace( outputFormat, " ", "+" ); //TODO: encode uri component ? - - var source = new ol.source.Vector - ( - { - format: new ol.format.GeoJSON(), - strategy: ol.loadingstrategy.bbox, - url: function( extent ) - { - return url - + "&typename=" + typeName - + "&srsname=" + projection - + "&bbox=" + extent.join( "," ) + "," + projection - + "&outputFormat=" + outputFormat; - } - - //TODO: custom loader function to catch xhr response parse errors + return layer; } - ); - - var layer = new ol.layer.Vector - ( - { - source: source - } - ); + } - var self = this; - source.on( "featuresloadstart", function( e ) { self.removeSnapLayer( layer ); } ); - source.on( "featuresloadend", function( e ) { window.setTimeout( function() { self.addSnapLayer( layer ); }, 10 ); } ); - //source.on( "featuresloaderror", function( e ) { console.info( "Layer Error:", e ); } ); - - return layer; + return null; }; netgis.MapOpenLayers.prototype.clearAll = function() @@ -474,10 +416,9 @@ netgis.MapOpenLayers.prototype.onUpdateStyle = function( e ) this.editLayer.setStyle( style ); }; -netgis.MapOpenLayers.prototype.styleEdit = function( feature ) +netgis.MapOpenLayers.prototype.styleEdit = function() { var radius = this.client.config.styles.editLayer.pointRadius; - var geom = feature.getGeometry(); var style = new ol.style.Style ( @@ -488,32 +429,11 @@ netgis.MapOpenLayers.prototype.styleEdit = function( feature ) } ); - if ( geom instanceof ol.geom.Polygon ) - { - var area = geom.getArea(); - - style.setText - ( - new ol.style.Text - ( - { - text: [ netgis.util.formatArea( area, true ), "4mm sans-serif" ], - font: this.labelFont, - fill: new ol.style.Fill( { color: this.client.config.styles.editLayer.stroke } ), - backgroundFill: new ol.style.Fill( { color: "rgba( 255, 255, 255, 0.5 )" } ), - padding: [ 2, 4, 2, 4 ] - } - ) - ); - } - return style; }; netgis.MapOpenLayers.prototype.styleSelect = function( feature ) { - var geom = feature.getGeometry(); - var style = new ol.style.Style ( { @@ -523,25 +443,6 @@ netgis.MapOpenLayers.prototype.styleSelect = function( feature ) } ); - if ( geom instanceof ol.geom.Polygon ) - { - var area = geom.getArea(); - - style.setText - ( - new ol.style.Text - ( - { - text: [ netgis.util.formatArea( area, true ), "4mm sans-serif" ], - font: this.labelFont, - fill: new ol.style.Fill( { color: this.client.config.styles.select.stroke } ), - backgroundFill: new ol.style.Fill( { color: "rgba( 255, 255, 255, 0.5 )" } ), - padding: [ 2, 4, 2, 4 ] - } - ) - ); - } - return style; }; @@ -568,9 +469,7 @@ netgis.MapOpenLayers.prototype.styleModify = function( feature ) }; netgis.MapOpenLayers.prototype.styleSketch = function( feature ) -{ - var geom = feature.getGeometry(); - +{ var style = new ol.style.Style ( { @@ -580,25 +479,6 @@ netgis.MapOpenLayers.prototype.styleSketch = function( feature ) } ); - if ( geom instanceof ol.geom.Polygon ) - { - var area = geom.getArea(); - - style.setText - ( - new ol.style.Text - ( - { - text: [ netgis.util.formatArea( area, true ), "4mm sans-serif" ], - font: this.labelFont, - fill: new ol.style.Fill( { color: this.client.config.styles.sketch.stroke } ), - backgroundFill: new ol.style.Fill( { color: "rgba( 255, 255, 255, 0.5 )" } ), - padding: [ 2, 4, 2, 4 ] - } - ) - ); - } - var vertex = new ol.style.Style ( { @@ -719,7 +599,7 @@ netgis.MapOpenLayers.prototype.getActiveVectorLayers = function() netgis.MapOpenLayers.prototype.setMode = function( mode ) { - // Leave + // Old Mode switch ( this.mode ) { case netgis.Modes.BUFFER_FEATURE_EDIT: @@ -727,18 +607,6 @@ netgis.MapOpenLayers.prototype.setMode = function( mode ) this.onBufferCancel( null ); break; } - - case netgis.Modes.DRAW_POINTS: - case netgis.Modes.DRAW_LINES: - { - this.onDrawBufferOff( null ); - break; - } - } - - // Enter - switch ( mode ) - { } // Interactions @@ -806,8 +674,6 @@ netgis.MapOpenLayers.prototype.setSnapOn = function() this.snapFeatures.changed(); //this.updateSnapLayers(); - - //TODO: https://openlayers.org/en/latest/examples/tracing.html }; netgis.MapOpenLayers.prototype.setSnapOff = function() @@ -819,29 +685,6 @@ netgis.MapOpenLayers.prototype.setSnapOff = function() //this.snapFeatures = null; } }; - -netgis.MapOpenLayers.prototype.setTracingOn = function() -{ - var source = new ol.source.Vector( { features: this.snapFeatures } ); - - this.tracing = new ol.interaction.Draw( { type: "Polygon", source: this.editLayer.getSource(), style: this.styleSketch.bind( this ), trace: true, traceSource: source } ); - - var actions = this.interactions[ netgis.Modes.DRAW_POLYGONS ]; - actions[ 0 ].setActive( false ); - actions.push( this.tracing ); - - this.setMode( this.mode ); -}; - -netgis.MapOpenLayers.prototype.setTracingOff = function() -{ - var actions = this.interactions[ netgis.Modes.DRAW_POLYGONS ]; - actions[ 0 ].setActive( true ); - actions.splice( actions.indexOf( this.tracing ), 1 ); - - this.setMode( this.mode ); -}; - /* netgis.MapOpenLayers.prototype.updateSnapLayers = function() { @@ -896,16 +739,6 @@ netgis.MapOpenLayers.prototype.onSnapOff = function( e ) this.setSnapOff(); }; -netgis.MapOpenLayers.prototype.onTracingOn = function( e ) -{ - this.setTracingOn(); -}; - -netgis.MapOpenLayers.prototype.onTracingOff = function( e ) -{ - this.setTracingOff(); -}; - netgis.MapOpenLayers.prototype.onLayerShow = function( e ) { var layer = this.layers[ e.id ]; @@ -992,20 +825,6 @@ netgis.MapOpenLayers.prototype.onContextUpdate = function( e ) }*/ }; -netgis.MapOpenLayers.prototype.onAddServiceWMS = function( e ) -{ - var layer = this.createLayerWMS( e.url, e.name, e.format ); - layer.setZIndex( e.id ); - this.layers[ e.id ] = layer; -}; - -netgis.MapOpenLayers.prototype.onAddServiceWFS = function( e ) -{ - var layer = this.createLayerWFS( e.url, e.name, this.client.config.map.projection, e.format ); - layer.setZIndex( e.id ); - this.layers[ e.id ] = layer; -}; - netgis.MapOpenLayers.prototype.onSetMode = function( e ) { this.setMode( e ); @@ -1038,8 +857,7 @@ netgis.MapOpenLayers.prototype.onZoomWKT = function( e ) netgis.MapOpenLayers.prototype.onPointerMove = function( e ) { - var pixel = e.pixel; - var coords = e.coordinate; + //var pixel = e.pixel; var hover = this.hover; var styleSelect = this.styleSelect.bind( this ); @@ -1058,7 +876,7 @@ netgis.MapOpenLayers.prototype.onPointerMove = function( e ) { this.map.forEachFeatureAtPixel ( - pixel, + e.pixel, function( feature, layer ) //TODO: bind to this? { if ( layer === self.editLayer ) @@ -1078,7 +896,7 @@ netgis.MapOpenLayers.prototype.onPointerMove = function( e ) { this.map.forEachFeatureAtPixel ( - pixel, + e.pixel, function( feature, layer ) //TODO: bind to this? { if ( layer === self.editLayer ) @@ -1098,7 +916,7 @@ netgis.MapOpenLayers.prototype.onPointerMove = function( e ) { this.map.forEachFeatureAtPixel ( - pixel, + e.pixel, function( feature, layer ) //TODO: bind to this? { if ( layer === self.editLayer ) @@ -1113,13 +931,6 @@ netgis.MapOpenLayers.prototype.onPointerMove = function( e ) break; } - - case netgis.Modes.DRAW_POINTS: - case netgis.Modes.DRAW_LINES: - { - this.updateDrawBufferPreview(); - break; - } } //TODO: refactor to default hover handler? @@ -1219,31 +1030,13 @@ netgis.MapOpenLayers.prototype.onCutFeatureDrawEnd = function( e ) netgis.MapOpenLayers.prototype.onModifyFeaturesEnd = function( e ) { this.updateEditOutput(); - this.updateEditArea(); -}; - -netgis.MapOpenLayers.prototype.createBufferFeature = function( srcgeom, radius, segments ) -{ - var geom = this.createBufferGeometry( srcgeom, radius, segments ); - var feature = new ol.Feature( { geometry: geom } ); - - return feature; -}; - -netgis.MapOpenLayers.prototype.createBufferGeometry = function( srcgeom, radius, segments ) -{ - var parser = new jsts.io.OL3Parser(); - - var a = parser.read( srcgeom ); - var b = a.buffer( radius, segments ); - - var geom = parser.write( b ); - - return geom; }; netgis.MapOpenLayers.prototype.onBufferChange = function( e ) { + var radius = e.radius; + var segments = e.segments; + var source = this.editLayer.getSource(); var target = this.selected; @@ -1254,7 +1047,15 @@ netgis.MapOpenLayers.prototype.onBufferChange = function( e ) if ( target ) { - var feature = this.createBufferFeature( target.getGeometry(), e.radius, e.segments ); + // Cut Process + var parser = new jsts.io.OL3Parser(); + + var a = parser.read( target.getGeometry() ); + var b = a.buffer( radius, segments ); + + // Output + var geom = parser.write( b ); + var feature = new ol.Feature( { geometry: geom } ); //source.removeFeature( target ); source.addFeature( feature ); @@ -1289,87 +1090,10 @@ netgis.MapOpenLayers.prototype.onBufferCancel = function( e ) this.selected = null; }; -netgis.MapOpenLayers.prototype.onDrawPointsEnd = function( e ) -{ - var preview = this.previewLayer.getSource().getFeatures()[ 0 ]; - - if ( preview ) - { - var src = this.editLayer.getSource(); - src.addFeature( preview.clone() ); - - //TODO: remove sketch point ? - //this.editLayer.getSource().removeFeature( e.feature ); - - /*window.setTimeout( function() { - var features = src.getFeatures(); - src.removeFeature( features[ features.length - 1 ] ); - src.addFeature( preview.clone() ); - }, 10 );*/ - - /*e.preventDefault(); - e.stopPropagation(); - return false;*/ - } -}; - -netgis.MapOpenLayers.prototype.onDrawLinesEnd = function( e ) -{ - var preview = this.previewLayer.getSource().getFeatures()[ 0 ]; - if ( ! preview ) return; - - var src = this.editLayer.getSource(); - src.addFeature( preview.clone() ); -}; - -netgis.MapOpenLayers.prototype.onDrawBufferOn = function( e ) -{ - var feature = this.createBufferFeature( new ol.geom.Point( this.client.config.map.center ), this.drawBufferRadius, this.drawBufferSegments ); - this.previewLayer.getSource().addFeature( feature ); - - //TODO: send all draw buffer params with events ? -}; - -netgis.MapOpenLayers.prototype.onDrawBufferOff = function( e ) -{ - this.previewLayer.getSource().clear(); -}; - -netgis.MapOpenLayers.prototype.onDrawBufferRadiusChange = function( e ) -{ - var radius = e; - this.drawBufferRadius = radius; - - this.updateDrawBufferPreview(); -}; - -netgis.MapOpenLayers.prototype.onDrawBufferSegmentsChange = function( e ) -{ - var segs = e; - this.drawBufferSegments = segs; - - this.updateDrawBufferPreview(); -}; - -netgis.MapOpenLayers.prototype.updateDrawBufferPreview = function() -{ - var draw = this.interactions[ this.mode ][ 0 ]; - var overlays = draw.getOverlay().getSource().getFeatures(); - if ( overlays.length < 1 ) return; - - var preview = this.previewLayer.getSource().getFeatures()[ 0 ]; - if ( ! preview ) return; - - var geom = overlays[ 0 ].getGeometry(); - var buffer = this.createBufferGeometry( geom, this.drawBufferRadius, this.drawBufferSegments ); - preview.setGeometry( buffer ); -}; - netgis.MapOpenLayers.prototype.onEditLayerAdd = function( e ) { - ////this.updateEditOutput(); - this.updateEditLayerItem(); this.updateEditOutput(); + this.updateEditLayerItem(); this.snapFeatures.push( e.feature ); }; @@ -1392,28 +1116,14 @@ netgis.MapOpenLayers.prototype.updateEditOutput = function() var format = new ol.format.GeoJSON(); var output = format.writeFeaturesObject( features, { dataProjection: proj, featureProjection: proj } ); - // Projection output[ "crs" ] = { "type": "name", "properties": { "name": "urn:ogc:def:crs:" + proj.replace( ":", "::" ) } }; - // Total Area - var area = 0.0; - - for ( var i = 0; i < features.length; i++ ) - { - var geom = features[ i ].getGeometry(); - if ( geom instanceof ol.geom.Polygon ) area += geom.getArea(); - } - - output[ "area" ] = area; - if ( ! this.editEventsSilent ) - { this.client.invoke( netgis.Events.EDIT_FEATURES_CHANGE, output ); - } }; netgis.MapOpenLayers.prototype.updateEditLayerItem = function() @@ -1428,11 +1138,6 @@ netgis.MapOpenLayers.prototype.updateEditLayerItem = function() } }; -netgis.MapOpenLayers.prototype.updateEditArea = function() -{ - -}; - netgis.MapOpenLayers.prototype.onEditFeaturesLoaded = function( e ) { var json = e; @@ -1542,28 +1247,6 @@ netgis.MapOpenLayers.prototype.onImportShapefile = function( e ) reader.readAsArrayBuffer( file ); }; -netgis.MapOpenLayers.prototype.onImportSpatialite = function( e ) -{ - var file = e; - var title = file.name; - var self = this; - - var reader = new FileReader(); - reader.onload = function( e ) { self.createLayerSpatialite( title, e.target.result ); }; - reader.readAsArrayBuffer( file ); -}; - -netgis.MapOpenLayers.prototype.onImportGeopackage = function( e ) -{ - var file = e; - var title = file.name; - var self = this; - - var reader = new FileReader(); - reader.onload = function( e ) { self.createLayerGeopackage( title, e.target.result ); }; - reader.readAsArrayBuffer( file ); -}; - netgis.MapOpenLayers.prototype.createLayerGeoJSON = function( title, data ) { var format = new ol.format.GeoJSON(); @@ -1582,6 +1265,7 @@ netgis.MapOpenLayers.prototype.createLayerGeoJSON = function( title, data ) case this.client.config.map.projection: { // Projection OK + //console.info( "Import Projection:", projcode ); break; } @@ -1757,124 +1441,6 @@ netgis.MapOpenLayers.prototype.createLayerShapefile = function( title, shapeData ); }; -netgis.MapOpenLayers.prototype.createLayerSpatialite = function( title, data ) -{ - var self = this; - - window.initSqlJs().then - ( - function( SQL ) - { - var features = []; - - var arr = new Uint8Array( data ); - var db = new SQL.Database( arr ); - - // Tables - var results = db.exec - ( - "SELECT name FROM sqlite_schema WHERE type = 'table' \n\ - AND name NOT LIKE 'sqlite_%' \n\ - AND name NOT LIKE 'sql_%' \n\ - AND name NOT LIKE 'idx_%' \n\ - AND name NOT LIKE 'spatial_ref_sys%' \n\ - AND name NOT LIKE 'spatialite_%' \n\ - AND name NOT LIKE 'geometry_columns%' \n\ - AND name NOT LIKE 'views_%' \n\ - AND name NOT LIKE 'virts_%' \n\ - AND name NOT LIKE 'SpatialIndex' \n\ - AND name NOT LIKE 'ElementaryGeometries' \n\ - ;" ); - - var tables = results[ 0 ].values; - - for ( var t = 0; t < tables.length; t++ ) - { - var table = tables[ t ][ 0 ]; - - results = db.exec( "SELECT * FROM " + table ); - var result = results[ 0 ]; - - // Columns - var geomcol = null; - - for ( var c = 0; c < result.columns.length; c++ ) - { - if ( result.columns[ c ].toLowerCase() === "geometry" ) { geomcol = c; break; } - if ( result.columns[ c ].toLowerCase() === "geom" ) { geomcol = c; break; } - } - - // Rows - var rows = result.values; - - for ( var r = 0; r < rows.length; r++ ) - { - var row = rows[ r ]; - - // Convert WKB - var input = row[ geomcol ]; - var output = new Uint8Array( input.length - 43 - 1 + 5 ); - - // Byte Order - output[ 0 ] = input[ 1 ]; - - // Type - output[ 1 ] = input[ 39 ]; - output[ 2 ] = input[ 40 ]; - output[ 3 ] = input[ 41 ]; - output[ 4 ] = input[ 42 ]; - - // Geometry - var geomlen = input.length - 43 - 1; - - for ( var i = 0; i < geomlen; i++ ) - { - output[ 5 + i ] = input[ 43 + i ]; - } - - var wkb = new ol.format.WKB(); - var geom = wkb.readGeometry( output, { featureProjection: self.client.config.map.projection } ); - - features.push( new ol.Feature( { geometry: geom } ) ); - } - } - - self.addImportedFeatures( features ); - } - ); -}; - -netgis.MapOpenLayers.prototype.createLayerGeopackage = function( title, data ) -{ - var self = this; - var arr = new Uint8Array( data ); - - window.GeoPackage.setSqljsWasmLocateFile( function( file ) { return self.client.config.import.geopackageLibURL + file; } ); - - window.GeoPackage.GeoPackageAPI.open( arr ).then( function( geoPackage ) - { - var features = []; - var format = new ol.format.GeoJSON(); - var tables = geoPackage.getFeatureTables(); - - for ( var t = 0; t < tables.length; t++ ) - { - var table = tables[ t ]; - var rows = geoPackage.queryForGeoJSONFeaturesInTable( table ); - - for ( var r = 0; r < rows.length; r++ ) - { - var row = rows[ r ]; - var geom = format.readGeometry( row.geometry, { featureProjection: self.client.config.map.projection } ); - var feature = new ol.Feature( { geometry: geom } ); - features.push( feature ); - } - } - - self.addImportedFeatures( features ); - } ); -}; - netgis.MapOpenLayers.prototype.addImportedFeatures = function( features ) { // Add To Edit Layer @@ -1971,7 +1537,6 @@ netgis.MapOpenLayers.prototype.exportImage = function( format, resx, resy, mode, // Request Logo Image var logo = new Image(); - logo.onload = function() { //TODO: refactor map render image and image export @@ -2031,13 +1596,6 @@ netgis.MapOpenLayers.prototype.exportImage = function( format, resx, resy, mode, // Watermark Logo mapContext.drawImage( logo, 0, 0 ); - - // Timestamp - mapContext.fillStyle = "#fff"; - mapContext.fillRect( 0, mapCanvas.height - 30, 140, 30 ); - mapContext.fillStyle = "#000"; - mapContext.font = "4mm sans-serif"; - mapContext.fillText( netgis.util.getTimeStamp(), 10, mapCanvas.height - 10 ); // Export Map Image var link = document.createElement( "a" ); @@ -2100,11 +1658,7 @@ netgis.MapOpenLayers.prototype.exportImage = function( format, resx, resy, mode, pdf.addImage( mapCanvas.toDataURL( "image/png,1.0", 1.0 ), "PNG", x, y, width, height ); // Text - pdf.setFillColor( 255, 255, 255 ); - pdf.rect( x, y + height - 11, 80, 11, "F" ); - pdf.setFontSize( 8 ); - pdf.text( "Datum: " + netgis.util.getTimeStamp(), x + 2, y + height - 2 - 4 ); pdf.text( "Quelle: " + window.location.href, x + 2, y + height - 2 ); // Same Tab diff --git a/src/netgis/Menu.js b/src/netgis/Menu.js index eacacad..c61ee8c 100644 --- a/src/netgis/Menu.js +++ b/src/netgis/Menu.js @@ -72,8 +72,6 @@ netgis.Menu.prototype.load = function() //fileItems.appendChild( this.createMenuItem( 'KML', this.onImportKMLClick.bind( this ) ) ); importItem.appendChild( this.createMenuItem( 'GML', this.onImportGMLClick.bind( this ) ) ); importItem.appendChild( this.createMenuItem( 'Shapefile', this.onImportShapefileClick.bind( this ) ) ); - importItem.appendChild( this.createMenuItem( 'Spatialite', this.onImportSpatialiteClick.bind( this ) ) ); - importItem.appendChild( this.createMenuItem( 'GeoPackage', this.onImportGeopackageClick.bind( this ) ) ); // Export var exportMenu = this.createMenu( 'Export' ); @@ -230,16 +228,6 @@ netgis.Menu.prototype.onImportGMLClick = function( e ) this.client.invoke( netgis.Events.IMPORT_GML_SHOW, null ); }; -netgis.Menu.prototype.onImportSpatialiteClick = function( e ) -{ - this.client.invoke( netgis.Events.IMPORT_SPATIALITE_SHOW, null ); -}; - -netgis.Menu.prototype.onImportGeopackageClick = function( e ) -{ - this.client.invoke( netgis.Events.IMPORT_GEOPACKAGE_SHOW, null ); -}; - netgis.Menu.prototype.onExportPDFClick = function( e ) { this.client.invoke( netgis.Events.EXPORT_PDF_SHOW, null ); diff --git a/src/netgis/Modal.css b/src/netgis/Modal.css index 39b7d02..ec4d3ca 100644 --- a/src/netgis/Modal.css +++ b/src/netgis/Modal.css @@ -131,8 +131,7 @@ cursor: not-allowed; } -.netgis-modal-content input, -.netgis-modal-content select +.netgis-modal-content input { width: 100%; } diff --git a/src/netgis/Modal.js b/src/netgis/Modal.js index d38f4ef..5d8be16 100644 --- a/src/netgis/Modal.js +++ b/src/netgis/Modal.js @@ -21,9 +21,6 @@ netgis.Modal = function() this.exportJPEG = null; this.exportPNG = null; this.exportGIF = null; - this.addService = null; - - this.addServiceID = 10000; }; netgis.Modal.prototype.load = function() @@ -42,12 +39,6 @@ netgis.Modal.prototype.load = function() this.importShapefile = this.createImportShapefile(); this.root.appendChild( this.importShapefile ); - this.importSpatialite = this.createImportSpatialite(); - this.root.appendChild( this.importSpatialite ); - - this.importGeopackage = this.createImportGeopackage(); - this.root.appendChild( this.importGeopackage ); - // Export this.exportPDF = this.createExportPDF(); this.root.appendChild( this.exportPDF ); @@ -61,10 +52,6 @@ netgis.Modal.prototype.load = function() this.exportGIF = this.createExportGIF(); this.root.appendChild( this.exportGIF ); - // Layers - this.addService = this.createAddService(); - this.root.appendChild( this.addService ); - // Done this.client.root.appendChild( this.root ); @@ -72,15 +59,11 @@ netgis.Modal.prototype.load = function() this.client.on( netgis.Events.IMPORT_GEOJSON_SHOW, this.onImportGeoJSONShow.bind( this ) ); this.client.on( netgis.Events.IMPORT_GML_SHOW, this.onImportGMLShow.bind( this ) ); this.client.on( netgis.Events.IMPORT_SHAPEFILE_SHOW, this.onImportShapefileShow.bind( this ) ); - this.client.on( netgis.Events.IMPORT_SPATIALITE_SHOW, this.onImportSpatialiteShow.bind( this ) ); - this.client.on( netgis.Events.IMPORT_GEOPACKAGE_SHOW, this.onImportGeopackageShow.bind( this ) ); this.client.on( netgis.Events.EXPORT_PDF_SHOW, this.onExportPDFShow.bind( this ) ); this.client.on( netgis.Events.EXPORT_JPEG_SHOW, this.onExportJPEGShow.bind( this ) ); this.client.on( netgis.Events.EXPORT_PNG_SHOW, this.onExportPNGShow.bind( this ) ); this.client.on( netgis.Events.EXPORT_GIF_SHOW, this.onExportGIFShow.bind( this ) ); - - this.client.on( netgis.Events.ADD_SERVICE_SHOW, this.onAddServiceShow.bind( this ) ); }; netgis.Modal.prototype.createImportGeoJSON = function() @@ -119,30 +102,6 @@ netgis.Modal.prototype.createImportShapefile = function() return container; }; -netgis.Modal.prototype.createImportSpatialite = function() -{ - var container = this.createContainer( "Import Spatialite" ); - - this.createText( container, "Unterstützte Koordinatensysteme:", "
  • World Geodetic System 1984 (EPSG:4326)
  • ETRS89 / UTM zone 32N (EPSG:25832)
" ); - this.createInputFile( container, "Datei auswählen / ablegen:", ".sqlite", this.onImportSpatialiteChange.bind( this ) ); - this.createSpace( container ); - this.createButton( container, "Importieren", this.onImportSpatialiteAccept.bind( this ) ); - - return container; -}; - -netgis.Modal.prototype.createImportGeopackage = function() -{ - var container = this.createContainer( "Import GeoPackage" ); - - this.createText( container, "Unterstützte Koordinatensysteme:", "
  • World Geodetic System 1984 (EPSG:4326)
  • ETRS89 / UTM zone 32N (EPSG:25832)
" ); - this.createInputFile( container, "Datei auswählen / ablegen:", ".gpkg", this.onImportGeopackageChange.bind( this ) ); - this.createSpace( container ); - this.createButton( container, "Importieren", this.onImportGeopackageAccept.bind( this ) ); - - return container; -}; - netgis.Modal.prototype.createExportPDF = function() { var container = this.createContainer( "Export PDF" ); @@ -193,29 +152,6 @@ netgis.Modal.prototype.createExportGIF = function() return container; }; -netgis.Modal.prototype.createAddService = function() -{ - var container = this.createContainer( "Dienst hinzufügen" ); - - this.createInputText( container, "WMS/WFS URL:" ); - this.createSpace( container ); - this.createButton( container, "Dienst laden", this.onAddServiceLoad.bind( this ) ); - - /*var details = document.createElement( "div" ); - details.className = "netgis-hide"; - container.appendChild( details );*/ - - this.createSpace( container ); - this.createInputHidden( container ); - this.createText( container, "Bezeichnung:", "" ); - this.createInputSelect( container, "Kartenebene:", [] ); - this.createInputSelect( container, "Format:", [] ); - this.createSpace( container ); - this.createButton( container, "Dienst hinzufügen", this.onAddServiceAccept.bind( this ) ); - - return container; -}; - netgis.Modal.prototype.show = function( container ) { this.root.classList.add( "netgis-show" ); @@ -307,25 +243,6 @@ netgis.Modal.prototype.createButton = function( container, title, callback ) return button; }; -netgis.Modal.prototype.createInputHidden = function( container ) -{ - var row = document.createElement( "tr" ); - row.className = "netgis-hidden"; - - var cell = document.createElement( "td" ); - row.appendChild( cell ); - - var input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - cell.appendChild( input ); - - var content = container.getElementsByClassName( "netgis-modal-content" )[ 0 ]; - var table = content.getElementsByTagName( "table" )[ 0 ]; - table.appendChild( row ); - - return input; -}; - netgis.Modal.prototype.createInputText = function( container, title ) { var row = document.createElement( "tr" ); @@ -341,41 +258,12 @@ netgis.Modal.prototype.createInputText = function( container, title ) var cell = document.createElement( "td" ); cell.className = "netgis-padding"; - row.appendChild( cell ); var input = document.createElement( "input" ); input.setAttribute( "type", "text" ); cell.appendChild( input ); - - label.htmlFor = input; - - var content = container.getElementsByClassName( "netgis-modal-content" )[ 0 ]; - var table = content.getElementsByTagName( "table" )[ 0 ]; - table.appendChild( row ); - - return input; -}; - -netgis.Modal.prototype.createInputSelect = function( container, title, keyValues ) -{ - var row = document.createElement( "tr" ); - //row.className = "netgis-hover-light"; - - var head = document.createElement( "th" ); - head.className = "netgis-padding"; - - var label = document.createElement( "label" ); - label.innerHTML = title; - head.appendChild( label ); - row.appendChild( head ); - - var cell = document.createElement( "td" ); - cell.className = "netgis-padding"; row.appendChild( cell ); - var input = document.createElement( "select" ); - cell.appendChild( input ); - label.htmlFor = input; var content = container.getElementsByClassName( "netgis-modal-content" )[ 0 ]; @@ -615,74 +503,6 @@ netgis.Modal.prototype.onImportShapefileAccept = function( e ) this.hide(); }; -netgis.Modal.prototype.onImportSpatialiteShow = function( e ) -{ - var input = this.importShapefile.getElementsByTagName( "input" )[ 0 ]; - var button = this.importShapefile.getElementsByTagName( "button" )[ 1 ]; - input.value = ""; - button.disabled = true; - - this.show( this.importSpatialite ); -}; - -netgis.Modal.prototype.onImportSpatialiteChange = function( e ) -{ - var input = this.importSpatialite.getElementsByTagName( "input" )[ 0 ]; - var button = this.importSpatialite.getElementsByTagName( "button" )[ 1 ]; - - if ( input.value && input.value.length > 0 ) - { - button.disabled = false; - } - else - { - button.disabled = true; - } -}; - -netgis.Modal.prototype.onImportSpatialiteAccept = function( e ) -{ - var input = this.importSpatialite.getElementsByTagName( "input" )[ 0 ]; - var file = input.files[ 0 ]; - this.client.invoke( netgis.Events.IMPORT_SPATIALITE, file ); - - this.hide(); -}; - -netgis.Modal.prototype.onImportGeopackageShow = function( e ) -{ - var input = this.importGeopackage.getElementsByTagName( "input" )[ 0 ]; - var button = this.importGeopackage.getElementsByTagName( "button" )[ 1 ]; - input.value = ""; - button.disabled = true; - - this.show( this.importGeopackage ); -}; - -netgis.Modal.prototype.onImportGeopackageChange = function( e ) -{ - var input = this.importGeopackage.getElementsByTagName( "input" )[ 0 ]; - var button = this.importGeopackage.getElementsByTagName( "button" )[ 1 ]; - - if ( input.value && input.value.length > 0 ) - { - button.disabled = false; - } - else - { - button.disabled = true; - } -}; - -netgis.Modal.prototype.onImportGeopackageAccept = function( e ) -{ - var input = this.importGeopackage.getElementsByTagName( "input" )[ 0 ]; - var file = input.files[ 0 ]; - this.client.invoke( netgis.Events.IMPORT_GEOPACKAGE, file ); - - this.hide(); -}; - netgis.Modal.prototype.onExportPDFShow = function( e ) { var inputs = this.exportPDF.getElementsByTagName( "input" ); @@ -768,237 +588,5 @@ netgis.Modal.prototype.onExportGIFAccept = function( e ) var resy = Number.parseInt( inputs[ 1 ].value ); this.client.invoke( netgis.Events.EXPORT_GIF, { resx: resx, resy: resy } ); - this.hide(); -}; - -netgis.Modal.prototype.onAddServiceShow = function( e ) -{ - //this.addService.getElementsByTagName( "input" )[ 0 ].value = ""; - - this.show( this.addService ); - - // Hide Details - var rows = this.addService.getElementsByTagName( "tr" ); - - for ( var r = 3; r < rows.length; r++ ) - { - rows[ r ].classList.add( "netgis-hide" ); - } -}; - -netgis.Modal.prototype.onAddServiceLoad = function( e ) -{ - var inputs = this.addService.getElementsByTagName( "input" ); - var url = inputs[ 0 ].value; - - // Get Base URL - var qmark = url.indexOf( "?" ); - if ( qmark > -1 ) url = url.substr( 0, qmark ); - - var getCaps = url + "?request=GetCapabilities"; - - netgis.util.request( getCaps, this.onAddServiceCapsResponse.bind( this ) ); - - console.info( "Add Service Load:", url ); -}; - -netgis.Modal.prototype.onAddServiceCapsResponse = function( e ) -{ - var parser = new DOMParser(); - var xml = parser.parseFromString( e, "text/xml" ); - var caps = xml.documentElement; - - var rows = this.addService.getElementsByTagName( "tr" ); - var rowTitle = rows[ 5 ]; - - var inputs = this.addService.getElementsByTagName( "input" ); - var inputType = inputs[ 1 ]; - - var selects = this.addService.getElementsByTagName( "select" ); - var selectLayer = selects[ 0 ]; - var selectFormat = selects[ 1 ]; - - for ( var i = selectLayer.options.length - 1; i >= 0; i-- ) selectLayer.options.remove( i ); - for ( var i = selectFormat.options.length - 1; i >= 0; i-- ) selectFormat.options.remove( i ); - - switch ( caps.nodeName ) - { - // WMS - case "WMS_Capabilities": - { - inputType.value = "wms"; - - var version = caps.getAttribute( "version" ); - var service = caps.getElementsByTagName( "Service" )[ 0 ]; - var title = service.getElementsByTagName( "Title" )[ 0 ].textContent; - rowTitle.children[ 1 ].innerHTML = title; - - var layerItems = caps.getElementsByTagName( "Layer" ); - var layers = []; - - for ( var l = 0; l < layerItems.length; l++ ) - { - var item = layerItems[ l ]; - var layerName = item.getElementsByTagName( "Name" )[ 0 ].textContent; - var layerTitle = item.getElementsByTagName( "Title" )[ 0 ].textContent; - - layers.push( { name: layerName, title: layerTitle } ); - - var option = document.createElement( "option" ); - option.text = layerTitle; - option.value = layerName; - selectLayer.options.add( option ); - } - - var getMap = caps.getElementsByTagName( "GetMap" )[ 0 ]; - var formatItems = getMap.getElementsByTagName( "Format" ); - var formats = []; - - for ( var f = 0; f < formatItems.length; f++ ) - { - var item = formatItems[ f ]; - var format = item.textContent; - - formats.push( format ); - - var option = document.createElement( "option" ); - option.text = format; - option.value = format; - selectFormat.options.add( option ); - } - - break; - } - - // WFS - case "WFS_Capabilities": - case "wfs:WFS_Capabilities": - { - inputType.value = "wfs"; - - var version = caps.getAttribute( "version" ); - var service = caps.getElementsByTagName( "ows:ServiceIdentification" )[ 0 ]; - var title = service.getElementsByTagName( "ows:Title" )[ 0 ].textContent; - rowTitle.children[ 1 ].innerHTML = title; - - var featureTypeItems = caps.getElementsByTagName( "FeatureType" ); - var types = []; - - for ( var l = 0; l < featureTypeItems.length; l++ ) - { - var item = featureTypeItems[ l ]; - var typeName = item.getElementsByTagName( "Name" )[ 0 ].textContent; - var typeTitle = item.getElementsByTagName( "Title" )[ 0 ].textContent; - - types.push( { name: typeName, title: typeTitle } ); - - var option = document.createElement( "option" ); - option.text = typeTitle; - option.value = typeName; - selectLayer.options.add( option ); - } - - var operations = caps.getElementsByTagName( "ows:Operation" ); - var getFeature = null; - - for ( var o = 0; o < operations.length; o++ ) - { - if ( operations[ o ].getAttribute( "name" ) === "GetFeature" ) - { - getFeature = operations[ o ]; - break; - } - } - - if ( getFeature ) - { - var parameters = getFeature.getElementsByTagName( "ows:Parameter" ); - - for ( var p = 0; p < parameters.length; p++ ) - { - var parameter = parameters[ p ]; - - if ( parameter.getAttribute( "name" ) === "outputFormat" ) - { - var formatItems = parameter.getElementsByTagName( "ows:Value" ); - - for ( var f = 0; f < formatItems.length; f++ ) - { - var item = formatItems[ f ]; - var format = item.textContent; - - var option = document.createElement( "option" ); - option.text = format; - option.value = format; - selectFormat.options.add( option ); - } - - break; - } - } - } - - selectFormat.value = "application/json"; - - break; - } - } - - // Show Details - var rows = this.addService.getElementsByTagName( "tr" ); - - for ( var r = 3; r < rows.length; r++ ) - { - rows[ r ].classList.remove( "netgis-hide" ); - } -}; - -netgis.Modal.prototype.onAddServiceAccept = function( e ) -{ - /*var inputs = this.exportPDF.getElementsByTagName( "input" ); - var resx = Number.parseInt( inputs[ 0 ].value ); - var resy = Number.parseInt( inputs[ 1 ].value ); - var margin = Number.parseInt( inputs[ 2 ].value ); - var mode = inputs[ 3 ].checked; - this.client.invoke( netgis.Events.EXPORT_PDF, { resx: resx, resy: resy, mode: mode, margin: margin } );*/ - - var inputs = this.addService.getElementsByTagName( "input" ); - var selects = this.addService.getElementsByTagName( "select" ); - - var url = inputs[ 0 ].value; - var type = inputs[ 1 ].value; - - var selectLayer = selects[ 0 ]; - var selectFormat = selects[ 1 ]; - - var layerOption = selectLayer.options.item( selectLayer.options.selectedIndex ); - var formatOption = selectFormat.options.item( selectFormat.options.selectedIndex ); - - var id = this.addServiceID++; - - var params = - { - id: id, - url: url, - title: layerOption.text, - name: layerOption.value, - format: formatOption.value - }; - - switch ( type ) - { - case "wms": - { - this.client.invoke( netgis.Events.ADD_SERVICE_WMS, params ); - break; - } - - case "wfs": - { - this.client.invoke( netgis.Events.ADD_SERVICE_WFS, params ); - break; - } - } - this.hide(); }; \ No newline at end of file diff --git a/src/netgis/Toolbar.js b/src/netgis/Toolbar.js index 023845a..875fc54 100644 --- a/src/netgis/Toolbar.js +++ b/src/netgis/Toolbar.js @@ -18,38 +18,20 @@ netgis.Toolbar.prototype.load = function() if ( this.client.editable ) { - var bufferDefaultRadius = 1000; - var bufferDefaultSegments = 3; - - if ( netgis.util.isDefined( config.tools ) ) - { - if ( netgis.util.isDefined( config.tools.buffer.defaultRadius ) ) bufferDefaultRadius = config.tools.buffer.defaultRadius; - if ( netgis.util.isDefined( config.tools.buffer.defaultSegments ) ) bufferDefaultSegments = config.tools.buffer.defaultSegments; - } - // Draw this.toolbars[ netgis.Modes.DRAW_POINTS ] = this.createToolbar(); this.append( this.toolbars[ netgis.Modes.DRAW_POINTS ], this.createToolbarButton( 'Punkte zeichnen:', this.onToolbarClose.bind( this ) ) ); this.append( this.toolbars[ netgis.Modes.DRAW_POINTS ], this.createToolbarCheckbox( "Einrasten", this.onSnapChange.bind( this ) ) ); - this.append( this.toolbars[ netgis.Modes.DRAW_POINTS ], this.createToolbarCheckbox( "Puffern", this.onDrawBufferChange.bind( this ) ) ); - this.append( this.toolbars[ netgis.Modes.DRAW_POINTS ], this.createToolbarInput( "Radius (Meter):", bufferDefaultRadius, this.onDrawBufferRadiusChange.bind( this ) ) ); - this.append( this.toolbars[ netgis.Modes.DRAW_POINTS ], this.createToolbarInput( "Segmente:", bufferDefaultSegments, this.onDrawBufferSegmentsChange.bind( this ) ) ); this.root.appendChild( this.toolbars[ netgis.Modes.DRAW_POINTS ] ); this.toolbars[ netgis.Modes.DRAW_LINES ] = this.createToolbar(); this.append( this.toolbars[ netgis.Modes.DRAW_LINES ], this.createToolbarButton( 'Linien zeichnen:', this.onToolbarClose.bind( this ) ) ); this.append( this.toolbars[ netgis.Modes.DRAW_LINES ], this.createToolbarCheckbox( "Einrasten", this.onSnapChange.bind( this ) ) ); - this.append( this.toolbars[ netgis.Modes.DRAW_LINES ], this.createToolbarCheckbox( "Puffern", this.onDrawBufferChange.bind( this ) ) ); - this.append( this.toolbars[ netgis.Modes.DRAW_LINES ], this.createToolbarInput( "Radius (Meter):", bufferDefaultRadius, this.onDrawBufferRadiusChange.bind( this ) ) ); - this.append( this.toolbars[ netgis.Modes.DRAW_LINES ], this.createToolbarInput( "Segmente:", bufferDefaultSegments, this.onDrawBufferSegmentsChange.bind( this ) ) ); this.root.appendChild( this.toolbars[ netgis.Modes.DRAW_LINES ] ); - - this.showDrawBufferOptions( false ); this.toolbars[ netgis.Modes.DRAW_POLYGONS ] = this.createToolbar(); this.append( this.toolbars[ netgis.Modes.DRAW_POLYGONS ], this.createToolbarButton( 'Polygone zeichnen:', this.onToolbarClose.bind( this ) ) ); this.append( this.toolbars[ netgis.Modes.DRAW_POLYGONS ], this.createToolbarCheckbox( "Einrasten", this.onSnapChange.bind( this ) ) ); - this.append( this.toolbars[ netgis.Modes.DRAW_POLYGONS ], this.createToolbarCheckbox( "Tracing", this.onTracingChange.bind( this ) ) ); this.root.appendChild( this.toolbars[ netgis.Modes.DRAW_POLYGONS ] ); // Edit @@ -78,8 +60,17 @@ netgis.Toolbar.prototype.load = function() //var wrapper = document.createElement( "div" ); //this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ].appendChild( wrapper ); + var bufferDefaultRadius = 1000; + var bufferDefaultSegments = 3; + + if ( netgis.util.isDefined( config.tools ) ) + { + if ( netgis.util.isDefined( config.tools.buffer.defaultRadius ) ) bufferDefaultRadius = config.tools.buffer.defaultRadius; + if ( netgis.util.isDefined( config.tools.buffer.defaultSegments ) ) bufferDefaultSegments = config.tools.buffer.defaultSegments; + } + this.append( this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ], this.createToolbarButton( 'Feature puffern:', this.onBufferCancel.bind( this ) ) ); - this.append( this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ], this.createToolbarInput( "Radius (Meter):", bufferDefaultRadius, this.onBufferChange.bind( this ) ) ); + this.append( this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ], this.createToolbarInput( "Radius in Meter:", bufferDefaultRadius, this.onBufferChange.bind( this ) ) ); this.append( this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ], this.createToolbarInput( "Segmente:", bufferDefaultSegments, this.onBufferChange.bind( this ) ) ); this.append( this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ], this.createToolbarButton( 'OK', this.onBufferAccept.bind( this ) ) ); @@ -261,19 +252,6 @@ netgis.Toolbar.prototype.onSetMode = function( e ) this.updateBuffer(); break; } - - case netgis.Modes.DRAW_POINTS: - case netgis.Modes.DRAW_LINES: - { - var checkbox = this.toolbars[ netgis.Modes.DRAW_POINTS ].getElementsByTagName( "input" )[ 1 ]; - - if ( checkbox.checked ) - { - this.client.invoke( netgis.Events.DRAW_BUFFER_ON, null ); - } - - break; - } } }; @@ -466,83 +444,4 @@ netgis.Toolbar.prototype.onSnapChange = function( e ) this.toolbars[ netgis.Modes.DRAW_POLYGONS ].getElementsByTagName( "input" )[ 0 ].checked = on; this.client.invoke( on ? netgis.Events.SNAP_ON : netgis.Events.SNAP_OFF, null ); -}; - -netgis.Toolbar.prototype.onTracingChange = function( e ) -{ - var input = e.target; - var on = input.checked; - - var snapInput = this.toolbars[ netgis.Modes.DRAW_POLYGONS ].getElementsByTagName( "input" )[ 0 ]; - var snap = snapInput.checked; - - if ( on && !snap ) - { - snapInput.checked = on; - this.client.invoke( netgis.Events.SNAP_ON, null ); - } - - this.client.invoke( on ? netgis.Events.TRACING_ON : netgis.Events.TRACING_OFF, null ); -}; - -netgis.Toolbar.prototype.onDrawBufferChange = function( e ) -{ - var input = e.target; - var on = input.checked; - - this.toolbars[ netgis.Modes.DRAW_POINTS ].getElementsByTagName( "input" )[ 1 ].checked = on; - this.toolbars[ netgis.Modes.DRAW_LINES ].getElementsByTagName( "input" )[ 1 ].checked = on; - - this.client.invoke( on ? netgis.Events.DRAW_BUFFER_ON : netgis.Events.DRAW_BUFFER_OFF, null ); - - this.showDrawBufferOptions( on ); -}; - -netgis.Toolbar.prototype.onDrawBufferRadiusChange = function( e ) -{ - var input = e.target; - var radius = Number.parseFloat( input.value ); - - this.client.invoke( netgis.Events.DRAW_BUFFER_RADIUS_CHANGE, radius ); - - var pointsInput = this.toolbars[ netgis.Modes.DRAW_POINTS ].getElementsByTagName( "input" )[ 2 ]; - if ( input !== pointsInput ) pointsInput.value = radius; - - var linesInput = this.toolbars[ netgis.Modes.DRAW_LINES ].getElementsByTagName( "input" )[ 2 ]; - if ( input !== linesInput ) linesInput.value = radius; -}; - -netgis.Toolbar.prototype.onDrawBufferSegmentsChange = function( e ) -{ - var input = e.target; - var segs = Number.parseInt( input.value ); - - this.client.invoke( netgis.Events.DRAW_BUFFER_SEGMENTS_CHANGE, segs ); - - var pointsInput = this.toolbars[ netgis.Modes.DRAW_POINTS ].getElementsByTagName( "input" )[ 3 ]; - if ( input !== pointsInput ) pointsInput.value = segs; - - var linesInput = this.toolbars[ netgis.Modes.DRAW_LINES ].getElementsByTagName( "input" )[ 3 ]; - if ( input !== linesInput ) linesInput.value = segs; -}; - -netgis.Toolbar.prototype.showDrawBufferOptions = function( on ) -{ - var pointsItems = this.toolbars[ netgis.Modes.DRAW_POINTS ].children[ 0 ].children; - var linesItems = this.toolbars[ netgis.Modes.DRAW_LINES ].children[ 0 ].children; - - if ( on ) - { - pointsItems[ 3 ].classList.remove( "netgis-hide" ); - pointsItems[ 4 ].classList.remove( "netgis-hide" ); - linesItems[ 3 ].classList.remove( "netgis-hide" ); - linesItems[ 4 ].classList.remove( "netgis-hide" ); - } - else - { - pointsItems[ 3 ].classList.add( "netgis-hide" ); - pointsItems[ 4 ].classList.add( "netgis-hide" ); - linesItems[ 3 ].classList.add( "netgis-hide" ); - linesItems[ 4 ].classList.add( "netgis-hide" ); - } }; \ No newline at end of file diff --git a/src/netgis/Util.js b/src/netgis/Util.js index b16eb2d..ad7f8c9 100644 --- a/src/netgis/Util.js +++ b/src/netgis/Util.js @@ -139,59 +139,6 @@ netgis.util = { return Object.assign( target, other ); }; - - /** - * @returns {String} Formatted Date Time String (German Locale) - */ - var getTimeStamp = function() - { - var date = new Date(); - - var timestamp = date.getDate() + "." + ( date.getMonth() + 1 ) + "." + date.getFullYear(); - timestamp += " " + date.getHours() + ":" + date.getMinutes(); - - return timestamp; - }; - - /* - * @param {Number} area Raw Area in Square Meters - * @param {Boolean} decimals Output Rounded Decimals - * @returns {String} Formatted Area String (Square Meters/Square Kilometers) - */ - var formatArea = function( area, decimals ) - { - var output; - - // Normal / Large Value - var large = ( area > 10000 ); - - // Round Value - var i = 0; - - if ( large ) - { - if ( decimals ) - i = Math.round( area / 1000000 * 1000 ) / 1000; - else - i = Math.round( area / 1000000 ); - } - else - { - if ( decimals ) - i = Math.round( area * 100 ) / 100; - else - i = Math.round( area ); - } - - if ( i === 0 ) large = false; - - // Build String - output = i + ( large ? " qkm" : " qm" ); - - //NOTE: HTML Superscript / Unicode (² etc.) not supported in OL Labels - - return output; - }; // Public Interface var iface = @@ -206,9 +153,7 @@ netgis.util = size: size, request: request, padstr: padstr, - merge: merge, - getTimeStamp: getTimeStamp, - formatArea: formatArea + merge: merge }; return iface;