diff --git a/templates/map/client/config.json b/templates/map/client/config.json
index ec896af2..768f70fc 100644
--- a/templates/map/client/config.json
+++ b/templates/map/client/config.json
@@ -188,6 +188,7 @@
{
"title": "Ebene hinzufügen",
"preview": true,
+ "editable": true,
"wms_options": [ "https://sgx.geodatenzentrum.de/wms_topplus_open" ],
"wfs_options": [ "http://213.139.159.34:80/geoserver/uesg/wfs" ],
"wfs_proxy": "/client/proxy?",
diff --git a/templates/map/client/dist/netgis.min.css b/templates/map/client/dist/netgis.min.css
index 2632c799..618f6fe2 100644
--- a/templates/map/client/dist/netgis.min.css
+++ b/templates/map/client/dist/netgis.min.css
@@ -1 +1 @@
-.netgis-attribution{position:absolute;right:0;bottom:0;padding:1mm;background:rgba(255,255,255,0.5);font-size:2.5mm;z-index:100}.netgis-client{position:relative;box-sizing:border-box;font-size:4mm;overflow:hidden}.netgis-client *{box-sizing:border-box}.netgis-client button{font-size:inherit}.netgis-contextmenu{position:absolute;width:64mm;z-index:90000}.netgis-contextmenu>*{display:block;position:relative;width:100%;height:12mm;line-height:12mm;padding:0 4mm;text-align:left;background:none}.netgis-contextmenu>label span{position:absolute;left:0;right:50%;height:100%;padding:0 4mm}.netgis-contextmenu>label span:last-of-type{left:50%;right:0;padding:2mm;padding-left:0;padding-right:4mm}.netgis-contextmenu>label span:only-of-type{left:12mm;right:0;padding:0 4mm;padding-left:0;cursor:pointer}.netgis-contextmenu>label input[type=range]{width:100%;cursor:pointer}.netgis-controls{position:absolute;width:12mm;right:4mm;bottom:8mm;overflow:hidden;z-index:100}.netgis-client.netgis-footer>.netgis-controls{bottom:44mm}.netgis-controls button{font-size:5mm!important;color:inherit;width:100%;height:12mm;padding:0!important;border:none;background-color:inherit;cursor:pointer}.netgis-dropdown{display:inline-block;position:relative;padding:0!important}.netgis-dropdown>:first-child{height:12mm;z-index:10;padding:0 4mm}.netgis-dropdown ul{display:none;position:absolute;min-width:100%;left:0;margin:0;padding:0;list-style-type:none}.netgis-dropdown li{position:relative;height:12mm}.netgis-dropdown li>button,.netgis-dropdown li>a{display:inline-block;width:100%;height:100%;text-align:left}.netgis-dropdown li>ul{display:none;top:0;left:100%;max-height:100mm;overflow-x:hidden;overflow-y:auto}.netgis-dropdown li>ul li{padding-right:5mm}.netgis-dropdown li:hover>ul{display:block}.netgis-dropdown li i:first-child{margin-right:4mm!important}.netgis-dropdown li i:last-child{margin-left:4mm!important;margin-right:0!important}.netgis-dropdown li>label{display:block;text-align:left}.netgis-dropdown li>label input{width:4mm;margin:0;margin-right:4mm}.netgis-compact .netgis-dropdown li{height:9mm;line-height:9mm}.netgis-compact .netgis-dropdown li button,.netgis-compact .netgis-dropdown li .netgis-button{padding:0 3mm}.netgis-compact .netgis-dropdown li i{margin-right:4mm}@media (max-width:599px){.netgis-dropdown.netgis-active>ul{display:block}}@media (min-width:600px){.netgis-dropdown:hover>ul{display:block}}.netgis-import .netgis-preview-map{position:absolute;width:100%;height:40mm;cursor:grab}.netgis-import .netgis-preview-map:active:hover{cursor:grabbing}.netgis-import .netgis-preview-tree{position:absolute;width:100%;top:52mm;bottom:12mm;overflow-y:auto}.netgis-import .netgis-import-submit{position:absolute;width:100%;height:12mm;bottom:0}.netgis-import .netgis-geoportal .netgis-search>label{display:block}.netgis-import .netgis-geoportal .netgis-search>label>button{top:9mm}.netgis-import .netgis-geoportal>.netgis-loader{left:0;top:0;background:rgba(255,255,255,0.66)}.netgis-import .netgis-geoportal>label>.netgis-loader{width:10mm;height:10mm;bottom:0;right:0;font-size:5mm}.netgis-import .netgis-geoportal>label>.netgis-loader i{top:2.75mm}.netgis-import .netgis-geoportal .netgis-tree{position:absolute;left:8mm;right:8mm;top:32mm;bottom:18mm;overflow:auto;padding-left:0;list-style-type:none}.netgis-import .netgis-geoportal .netgis-tree li{padding-left:0;list-style-type:none}.netgis-import .netgis-geoportal .netgis-tree label{padding-left:0;margin-bottom:0;font-weight:normal}.netgis-import .netgis-geoportal .netgis-tree .netgis-folder>details summary input{margin-left:3mm}.netgis-import .netgis-geoportal .netgis-tree .netgis-item input{margin-left:4mm}.netgis-import .netgis-geoportal>button:last-of-type{display:block;position:absolute;width:89%;right:8mm;bottom:8mm}@media (max-width:599px){.netgis-import .netgis-geoportal .netgis-tree{left:4mm;right:4mm;top:25mm}.netgis-import .netgis-geoportal button:last-of-type{width:auto;right:4mm;padding-right:8mm}}.netgis-legend{padding:3mm}.netgis-legend details{margin-bottom:2mm}.netgis-legend summary{display:block;height:12mm;line-height:12mm;font-weight:bold}.netgis-legend details>div{padding:2mm}.netgis-legend details>div img{max-width:100%}.netgis-map{position:absolute;left:0;right:0;top:12mm;bottom:0;cursor:grab}.netgis-map:active:hover{cursor:grabbing!important}.netgis-map-overlay{width:1px;height:1px;background:none}.netgis-map.netgis-clickable{cursor:pointer}.netgis-map.netgis-mode-zoom-box,.netgis-map.netgis-mode-zoom-box:active:hover,.netgis-map.netgis-mode-measure-line,.netgis-map.netgis-mode-measure-area{cursor:crosshair}.netgis-map.netgis-mode-measure-line:active:hover,.netgis-map.netgis-mode-measure-area:active:hover{cursor:grabbing}.netgis-map.netgis-mode-draw-points,.netgis-map.netgis-mode-draw-lines,.netgis-map.netgis-mode-draw-polygons,.netgis-map.netgis-mode-cut-features-draw{cursor:crosshair}.netgis-map.netgis-mode-draw-points.netgis-not-allowed,.netgis-map.netgis-mode-draw-lines.netgis-not-allowed,.netgis-map.netgis-mode-draw-polygons.netgis-not-allowed{cursor:no-drop}.netgis-map .netgis-zoom-box{border:.5mm solid white;background:rgba(153,0,0,0.5)}.netgis-map .ol-scale-bar{right:24mm;bottom:10mm;left:auto;opacity:.7}.netgis-map .ol-scale-bar:hover{opacity:1}.netgis-map .ol-scale-bar select{position:absolute;width:100%;height:100%;top:-1mm;left:0;opacity:0;background:transparent;pointer-events:all!important;cursor:pointer}.netgis-client.netgis-footer>.netgis-map .ol-scale-bar{bottom:46mm}.netgis-menu{position:absolute;left:0;right:0;top:0;height:12mm;max-height:12mm;line-height:12mm;white-space:nowrap;text-align:right;font-size:0;z-index:10000}.netgis-menu.netgis-menu-large{max-height:100%}.netgis-menu .netgis-menu-toggle{z-index:1}.netgis-menu>*{display:inline-block;min-width:12mm;height:12mm;padding:0 4mm;margin:0;font-size:4mm!important}.netgis-menu>h1{position:absolute;left:0;top:0;bottom:0;font-weight:bold;cursor:default}.netgis-menu a{color:inherit;text-decoration:none}.netgis-menu button,.netgis-menu select{color:inherit;background:none;border:none;outline:none;cursor:pointer}.netgis-menu button img,.netgis-menu a img{position:relative;top:.7mm;height:1em}.netgis-menu button i:not(:only-child),.netgis-menu a i:not(:only-child),.netgis-menu button img:not(:only-child),.netgis-menu a img:not(:only-child){width:4mm;margin-right:3mm;text-align:center}.netgis-menu>.netgis-wrapper{display:inline-block;position:relative;padding:0}.netgis-menu>.netgis-wrapper>.netgis-icon{position:absolute;left:0;top:0;padding-left:4mm;pointer-events:none}.netgis-menu>.netgis-wrapper select{width:100%;height:100%;padding-left:11mm}.netgis-menu>.netgis-wrapper select:last-child{padding-left:4mm}@media (max-width:599px){.netgis-menu{overflow:hidden;height:auto;max-height:12mm}.netgis-menu>*:not(.netgis-menu-toggle){display:block;width:100%;text-align:left}.netgis-menu.netgis-menu-large{overflow-y:auto;max-height:100%;height:100%}.netgis-menu .netgis-dropdown{height:auto}.netgis-menu .netgis-dropdown>:first-child{width:100%;text-align:left}.netgis-menu .netgis-dropdown ul{position:relative}.netgis-menu .netgis-dropdown li{height:auto}.netgis-menu .netgis-dropdown li>ul{top:auto;left:auto}}@media (min-width:600px){.netgis-menu-toggle{display:none!important}}.netgis-modal{display:none;position:absolute;width:100%;height:100%;top:0;left:0;padding:6mm;z-index:10000;background:rgba(0,0,0,0.6)}.netgis-modal.netgis-show{display:block}.netgis-modal>*{position:relative;width:100%;height:100%;max-width:150mm;margin:0 auto}.netgis-modal .netgis-content{position:absolute;width:100%;top:12mm;bottom:0;padding:12mm;overflow:auto}.netgis-modal .netgis-button{display:block;width:100%;min-height:12mm;text-align:left}.netgis-panel{position:absolute;left:0;width:80mm;top:12mm;bottom:0;z-index:1000;-webkit-transform:translateX(-110%);transform:translateX(-110%);transition:transform 150ms ease;will-change:transform}.netgis-panel.netgis-show{-webkit-transform:none;transform:none}.netgis-client.netgis-footer>.netgis-panel{bottom:36mm}.netgis-panel>div{position:absolute;left:0;right:0;top:12mm;bottom:0;overflow:auto}.netgis-panel h2{margin:0 4mm;font-size:1em}.netgis-panel .netgis-button,.netgis-panel label{display:block;width:100%;min-height:12mm;text-align:left}.netgis-panel input[type=text]{margin-top:3mm}.netgis-panel .netgis-half{display:inline-block;width:50%!important;padding-right:1mm}.netgis-panel .netgis-half+.netgis-half{padding-left:1mm;padding-right:0}.netgis-panel .netgis-anim-bottom{transition:transform 150ms ease;will-change:transform;-webkit-transform:none;transform:none}.netgis-panel .netgis-anim-bottom.netgis-hide{display:initial;-webkit-transform:translateY(110%);transform:translateY(110%)}.netgis-panel .netgis-resize-bottom{max-height:80%}@media (max-width:599px){.netgis-panel{width:100%!important}}.netgis-plugin iframe{width:100%;height:95%;border:none}.netgis-popup{display:none;position:absolute;width:95mm;height:20mm;transform:translate(-50%,-100%);z-index:1000}.netgis-popup.netgis-dir-right{transform:translate(0%,-50%);height:auto}.netgis-popup.netgis-fade{opacity:.5;transition:opacity .5s ease}.netgis-popup.netgis-fade:hover{opacity:1}.netgis-popup.netgis-show{display:block}.netgis-popup.netgis-dir-down .netgis-arrow{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:0;height:0;border-left:3mm solid transparent;border-right:3mm solid transparent;border-top:3mm solid white}.netgis-popup.netgis-dir-right .netgis-arrow{position:absolute;right:0;top:50%;transform:translateY(-49%);width:0;height:0;border-left:3mm solid white;border-bottom:3mm solid transparent;border-top:3mm solid transparent}.netgis-popup.netgis-dir-down .netgis-content{position:absolute;width:100%;min-height:12mm;max-height:100mm;left:0;bottom:2.9mm;padding:4mm 0;overflow:auto;cursor:default;box-shadow:0 1mm 4mm 0 rgba(0,0,0,0.3)}.netgis-popup.netgis-dir-right .netgis-content{position:absolute;min-height:12mm;max-height:100mm;left:0;right:2.9mm;padding:4mm 0;overflow:auto;bottom:0;transform:translateY(50%);cursor:default;box-shadow:0 1mm 4mm 0 rgba(0,0,0,0.3)}.netgis-popup .netgis-closer{position:absolute;right:0;top:0;height:9mm;background:none;width:100%;text-align:left}.netgis-popup .netgis-closer i{position:absolute;right:3mm}.netgis-popup .netgis-loader{top:0;left:0;font-size:6mm;text-align:center}.netgis-popup .netgis-loader .netgis-icon{width:auto;left:46%;top:30%}.netgis-popup .netgis-wrapper{max-height:80mm;margin-top:5mm;padding:0 3mm;overflow:auto}.netgis-popup table{width:100%;border:0;border-collapse:collapse;table-layout:fixed;word-wrap:break-word}.netgis-popup th,.netgis-popup td{padding:2mm;text-align:left;vertical-align:top}.netgis-popup th[colspan]{padding-top:4mm}.netgis-popup tr:first-of-type th[colspan]{padding-top:0}.netgis-popup .netgis-wrapper button{width:100%;height:12mm;text-align:left}.netgis-popup details{margin-bottom:2mm}.netgis-popup summary{display:block;height:12mm;line-height:12mm;font-weight:bold}.netgis-popup details>div{padding:2mm;overflow-x:auto}.netgis-popup details pre{margin:0;cursor:auto}.netgis-popup label{display:block;height:12mm;line-height:12mm;padding:0 2mm}.netgis-popup input[type=checkbox]:first-child{margin-right:3mm}.netgis-search{width:100%;transition:transform 150ms ease;will-change:transform;-webkit-transform:none;transform:none}.netgis-search.netgis-hide{display:initial!important;-webkit-transform:translateY(-200%);transform:translateY(-200%)}.netgis-search>label{display:inline-block;position:relative;width:100%;min-height:12mm}@media (max-width:599px){.netgis-search.netgis-responsive{left:4mm;right:4mm;width:auto}}.netgis-search>label>input{width:100%;min-width:60mm;height:12mm;padding:1mm 4mm;vertical-align:top;border:none}.netgis-search>label>button{position:absolute!important;width:12mm;height:12mm;top:0;right:0;background:none}.netgis-search>ul{max-height:60mm;overflow-y:auto;margin:0;padding:0;list-style-type:none}.netgis-search li .netgis-button{width:100%;height:12mm;padding:0 3mm;text-align:left}.netgis-search li .netgis-button span{opacity:.5}.netgis-search-parcel{position:absolute;top:0;bottom:0;width:100%;overflow:hidden;padding:4mm}.netgis-search-parcel section{position:absolute;left:0;right:0;overflow:auto}.netgis-search-parcel section:first-of-type{top:0;bottom:0;padding:6mm}.netgis-search-parcel section:last-of-type{top:50%;bottom:0}.netgis-search-parcel h3{margin:0;margin-bottom:4mm}.netgis-search-parcel label{display:block;margin:3mm 0;margin-bottom:0;cursor:pointer;font-weight:bold}.netgis-search-parcel label:first-child{margin-top:0}.netgis-search-parcel label span:first-child{display:block}.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:3mm;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%;margin-top:4mm;overflow:auto}.netgis-search-parcel table{min-width:100%;border-collapse:collapse;white-space:nowrap}.netgis-search-parcel table thead{position:-webkit-sticky;position:sticky;top:0;z-index:10}.netgis-search-parcel thead th:first-of-type{text-align:center}.netgis-search-parcel thead input[type=checkbox]{width:auto;height:auto;cursor:pointer}.netgis-search-parcel tr{height:12mm}.netgis-search-parcel .netgis-filter-active tr:not(.netgis-active){display:none}.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 tbody button{display:inline-block;width:12mm;height:12mm;background:none}.netgis-search-parcel p{margin:4mm 3mm;font-style:italic}.netgis-search-place{position:absolute;width:100%;max-width:100mm;right:4mm;top:16mm;z-index:900}.netgis-tabs{position:relative}.netgis-tabs>.netgis-header{position:absolute;width:100%;height:12mm;left:0;top:0;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.netgis-tabs>.netgis-content{position:absolute;width:100%;left:0;top:12mm;bottom:0}.netgis-tabs.netgis-scroll>.netgis-header{height:16mm}.netgis-tabs.netgis-scroll>.netgis-content{top:16mm}.netgis-tabs>.netgis-header .netgis-button{display:inline-block;width:auto}.netgis-tabs>.netgis-header .netgis-button.netgis-active{box-shadow:0 1mm 2mm 0 rgba(0,0,0,0.1),0 2mm 5mm 0 rgba(0,0,0,0.05)!important;z-index:1}.netgis-tabs>.netgis-content section{position:absolute;width:100%;height:100%;left:0;top:0;padding:8mm;overflow:auto}.netgis-tabs>.netgis-content section.netgis-hide{display:none}@media (max-width:599px){.netgis-tabs.netgis-scroll>.netgis-header{height:12mm}.netgis-tabs.netgis-scroll>.netgis-content{top:12mm}.netgis-tabs>.netgis-content section{padding:4mm}}.netgis-font{font-family:Arial,sans-serif}.netgis-color-a{background-color:#900;color:#fff}.netgis-color-b{background-color:#430433;color:#fff}.netgis-color-c{background-color:#470f1b;color:#fff}.netgis-color-d{background-color:#f6f5f5;color:#000}.netgis-color-e{background-color:#fff;color:#000}.netgis-hover-a:hover{background-color:#900;color:#fff}.netgis-hover-b:hover{background-color:#430433;color:#fff}.netgis-hover-c:hover{background-color:#470f1b;color:#fff}.netgis-hover-d:hover{background-color:#f6f5f5;color:#000}.netgis-hover-e:hover{background-color:#fff;color:#000}.netgis-text-a{color:#900}.netgis-text-b{color:#430433}.netgis-text-c{color:#470f1b}.netgis-text-d{color:#f6f5f5}.netgis-text-e{color:#fff}.netgis-hover-text-a:hover{color:#900}.netgis-hover-text-b:hover{color:#430433}.netgis-hover-text-c:hover{color:#470f1b}.netgis-hover-text-d:hover{color:#f6f5f5}.netgis-hover-text-e:hover{color:#fff}.netgis-border-d{border:1mm solid #f6f5f5}.netgis-gradient-a{background:linear-gradient(to bottom,#71182b 0,#470f1b 100%)}.netgis-timeslider{position:absolute;width:100%;height:36mm;bottom:0;box-shadow:0 0 4mm 0 rgba(0,0,0,0.3);z-index:1000}.netgis-timeslider:hover{z-index:1000}.netgis-timeslider.netgis-active{z-index:1000;cursor:grabbing}.netgis-timeslider>.netgis-header{position:absolute;width:100%;height:12mm;text-align:left;z-index:1}.netgis-timeslider>.netgis-wrapper{position:absolute;width:100%;top:12mm;bottom:0;overflow-x:auto;cursor:grab}.netgis-timeslider.netgis-active>.netgis-wrapper{cursor:grabbing}.netgis-timeslider table{height:100%;border-collapse:collapse}.netgis-timeslider td{position:relative;min-width:32mm;height:100%;white-space:nowrap}.netgis-timeslider td:not(:empty){padding:0}.netgis-timeslider td .netgis-button{height:100%;opacity:.5;cursor:inherit!important}.netgis-timeslider td .netgis-button .netgis-icon{position:relative}.netgis-timeslider td .netgis-button span{margin-left:2mm!important;margin-right:3mm}.netgis-timeslider td.netgis-active .netgis-button,.netgis-timeslider:not(.netgis-active) td:hover .netgis-button{opacity:1}.netgis-toolbox{position:absolute;top:12mm!important;bottom:0!important;width:100%;overflow:hidden}.netgis-toolbox section{position:absolute;left:0;right:0;overflow:auto}.netgis-toolbox section:first-of-type{top:0;bottom:0}.netgis-toolbox section:last-of-type{top:50%;bottom:0}.netgis-toolbox section:last-of-type>div{position:absolute;width:100%;top:12mm;bottom:0;overflow:auto}.netgis-toolbox button:hover i{color:inherit!important}.netgis-toolbox button.netgis-active{font-weight:bold}.netgis-toolbox label{display:block;width:100%;min-height:12mm;text-align:left;position:relative;padding:4mm;cursor:pointer}.netgis-toolbox input[type=checkbox]{width:4mm;height:4mm;margin:0 4mm 0 0}.netgis-toolbox input[type=checkbox]:last-child{float:right;margin-right:0}.netgis-toolbox input[type=text]{width:100%;height:10mm;padding:0 2mm;margin-top:3mm}.netgis-toolbox input[type=number]{position:absolute;right:2mm;width:24mm;top:2.5mm;height:8mm;padding:0 1mm}.netgis-tree{display:block;line-height:12mm;padding:0;margin:0;list-style-type:none}.netgis-tree ul{padding:0;margin:0;padding-left:9mm;list-style-type:none}.netgis-tree .netgis-folder{position:relative}.netgis-tree summary{display:block}.netgis-tree summary label{text-align:center}.netgis-tree .netgis-folder .netgis-icon{width:6mm;left:12mm;color:#eab000}.netgis-tree .netgis-folder .netgis-partial{opacity:.5}.netgis-tree details[open]>summary>.netgis-hide-open,.netgis-tree details>summary>.netgis-show-open{display:none}.netgis-tree details[open]>summary>.netgis-show-open{display:initial}.netgis-tree .netgis-folder>details>summary>label{position:absolute;width:12mm;top:0;left:0}.netgis-tree .netgis-folder>details>summary>span{margin-left:17mm!important}.netgis-tree .netgis-item{position:relative}.netgis-tree .netgis-item>label{padding:0 4mm;padding-left:12mm}.netgis-tree .netgis-item>label .netgis-wrapper{display:inline-block;position:absolute;width:12mm;height:12mm;left:0;top:0;text-align:center}.netgis-tree .netgis-space{height:6mm}.netgis-tree .netgis-item[draggable]{border-top:0 solid rgba(0,0,0,0.1);transition:border-top ease 300ms,opacity ease 600ms}.netgis-tree .netgis-dragging{opacity:.3}.netgis-tree .netgis-item.netgis-dragover{border-top:4mm solid rgba(0,0,0,0.1)}.netgis-tree .netgis-folder>details>summary.netgis-dragover{background:rgba(0,0,0,0.1)}.netgis-tree .netgis-folder img.netgis-icon,.netgis-tree .netgis-item img.netgis-icon{display:inline-block;position:relative;height:5mm;width:auto;left:auto;right:auto;top:1mm;margin-right:2mm}.netgis-tree .netgis-item .netgis-right{position:absolute;height:100%;right:12mm;top:0;text-align:right;opacity:.2}.netgis-tree .netgis-item .netgis-right>*{display:inline-block;width:6mm;text-align:center}.netgis-tree .netgis-item summary{position:absolute;width:12mm;height:12mm;right:0;top:0;text-align:center}.netgis-tree .netgis-item summary+*{position:relative;margin-left:7.5mm}.netgis-tree .netgis-item details label{position:relative;padding:0}.netgis-tree .netgis-item details label span{position:absolute;left:0;right:50%;height:100%;padding:0 4mm;overflow:hidden}.netgis-tree .netgis-item details label span:last-of-type{left:50%;right:0;padding:2mm;padding-left:0;padding-right:4mm}.netgis-tree .netgis-item details label input[type=range]{width:100%;cursor:pointer}.netgis-tree .netgis-item details .netgis-icon{position:relative;width:6mm;left:0;margin-right:1mm;text-align:center;color:inherit;opacity:.33}.netgis-bold{font-weight:bold}.netgis-clip-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.netgis-center{text-align:center!important}.netgis-clickable{cursor:pointer!important}.netgis-resize-right{resize:horizontal;overflow-x:auto;min-width:40mm;max-width:100%}.netgis-resize-bottom{resize:vertical;overflow-y:auto;min-height:24mm;max-height:100%}.netgis-noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.netgis-shadow{box-shadow:0 .5mm 1mm 0 rgba(0,0,0,0.1),0 1mm 2.5mm 0 rgba(0,0,0,0.05)!important}.netgis-shadow-large{box-shadow:0 1mm 2mm 0 rgba(0,0,0,0.1),0 2mm 5mm 0 rgba(0,0,0,0.05)!important}.netgis-text-shadow{text-shadow:0 0 1mm rgba(0,0,0,1.0)}.netgis-round{border-radius:2mm}.netgis-hide{display:none!important}.netgis-client button,.netgis-button{position:relative;padding:0 4mm;font-family:inherit;text-decoration:none;border:none;outline:none;cursor:pointer}.netgis-button .netgis-icon{display:inline-block;position:absolute;width:12mm;left:0;top:0;bottom:0;line-height:12mm;text-align:center;font-size:1.2em}.netgis-button.netgis-center .netgis-icon:first-child{position:static}.netgis-button .netgis-icon:last-child{left:auto;right:0}.netgis-button:not(.netgis-center) .netgis-icon+*:not(.netgis-icon){margin-left:8mm}.netgis-form h3{font-size:1em;margin-top:0;margin-bottom:4mm}.netgis-form ul{padding:0;padding-left:12mm;margin-top:0;margin-bottom:6mm;list-style-type:square}.netgis-form li{padding-left:2mm}.netgis-form label{display:block;position:relative;margin-bottom:6mm;font-weight:bold;cursor:pointer;user-select:none}.netgis-form input,.netgis-form select{display:block;width:100%;margin-top:4mm;padding:2mm}.netgis-form input[type=file]{padding:6mm;cursor:pointer;background:#efefef}.netgis-form input[type=checkbox]{display:inline-block;width:12mm;margin:0}.netgis-form input[type=checkbox]:first-child{width:4mm;margin-right:3mm;margin-top:2mm;margin-bottom:2mm}.netgis-form button{display:block;width:100%;height:12mm}.netgis-form button:not(:last-child){margin-bottom:6mm}.netgis-form select{cursor:pointer}.netgis-loader{position:absolute;width:100%;height:100%;z-index:999999;text-align:center;font-size:12mm;overflow:hidden;cursor:progress;opacity:1;transition:opacity ease 600ms}.netgis-loader.netgis-fade{opacity:0}.netgis-loader>i{position:absolute;width:100%;left:0;top:50%;transform:translateY(-50%);animation:netgis-spin 2s linear infinite}.netgis-loader>h2{position:absolute;left:4mm;right:4mm;bottom:30%;font-size:4mm}@keyframes netgis-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@media (max-width:599px){.netgis-hide-mobile{display:none!important}}@media (min-width:600px){.netgis-hide-desktop{display:none!important}}.netgis-window{position:absolute;min-width:40mm;min-height:12mm;max-width:100%;max-height:100%;resize:both;overflow:auto;z-index:22000!important;background:#fff}.netgis-window.netgis-hide{display:none}.netgis-window .netgis-mover{cursor:grab}.netgis-window.netgis-dragging,.netgis-window.netgis-dragging *{cursor:grabbing!important}.netgis-window.netgis-dragging .netgis-content{pointer-events:none}.netgis-window .netgis-mover{display:block;width:100%;min-height:12mm;text-align:left}.netgis-window .netgis-closer{position:absolute;width:12mm;height:12mm;right:0;top:0;background:none;z-index:1000}.netgis-window .netgis-content{position:absolute;top:12mm;bottom:0;left:0;right:0}@media (max-width:599px){}
\ No newline at end of file
+.netgis-attribution{position:absolute;right:0;bottom:0;padding:1mm;background:rgba(255,255,255,0.5);font-size:2.5mm;z-index:100}.netgis-client{position:relative;box-sizing:border-box;font-size:4mm;overflow:hidden}.netgis-client *{box-sizing:border-box}.netgis-client button{font-size:inherit}.netgis-contextmenu{position:absolute;width:64mm;z-index:90000}.netgis-contextmenu>*{display:block;position:relative;width:100%;height:12mm;line-height:12mm;padding:0 4mm;text-align:left;background:none}.netgis-contextmenu>label span{position:absolute;left:0;right:50%;height:100%;padding:0 4mm}.netgis-contextmenu>label span:last-of-type{left:50%;right:0;padding:2mm;padding-left:0;padding-right:4mm}.netgis-contextmenu>label span:only-of-type{left:12mm;right:0;padding:0 4mm;padding-left:0;cursor:pointer}.netgis-contextmenu>label input[type=range]{width:100%;cursor:pointer}.netgis-controls{position:absolute;width:12mm;right:4mm;bottom:8mm;overflow:hidden;z-index:100}.netgis-client.netgis-footer>.netgis-controls{bottom:44mm}.netgis-controls button{font-size:5mm!important;color:inherit;width:100%;height:12mm;padding:0!important;border:none;background-color:inherit;cursor:pointer}.netgis-dropdown{display:inline-block;position:relative;padding:0!important}.netgis-dropdown>:first-child{height:12mm;z-index:10;padding:0 4mm}.netgis-dropdown ul{display:none;position:absolute;min-width:100%;left:0;margin:0;padding:0;list-style-type:none}.netgis-dropdown li{position:relative;height:12mm}.netgis-dropdown li>button,.netgis-dropdown li>a{display:inline-block;width:100%;height:100%;text-align:left}.netgis-dropdown li>ul{display:none;top:0;left:100%;max-height:100mm;overflow-x:hidden;overflow-y:auto}.netgis-dropdown li>ul li{padding-right:5mm}.netgis-dropdown li:hover>ul{display:block}.netgis-dropdown li i:first-child{margin-right:4mm!important}.netgis-dropdown li i:last-child{margin-left:4mm!important;margin-right:0!important}.netgis-dropdown li>label{display:block;text-align:left}.netgis-dropdown li>label input{width:4mm;margin:0;margin-right:4mm}.netgis-compact .netgis-dropdown li{height:9mm;line-height:9mm}.netgis-compact .netgis-dropdown li button,.netgis-compact .netgis-dropdown li .netgis-button{padding:0 3mm}.netgis-compact .netgis-dropdown li i{margin-right:4mm}@media (max-width:599px){.netgis-dropdown.netgis-active>ul{display:block}}@media (min-width:600px){.netgis-dropdown:hover>ul{display:block}}.netgis-import .netgis-preview-map{position:absolute;width:100%;height:40mm;cursor:grab}.netgis-import .netgis-preview-map:active:hover{cursor:grabbing}.netgis-import .netgis-preview-tree{position:absolute;width:100%;top:52mm;bottom:12mm;overflow-y:auto}.netgis-import .netgis-import-submit{position:absolute;width:100%;height:12mm;bottom:0}.netgis-import .netgis-geoportal .netgis-search>label{display:block;position:absolute;width:auto;left:0;right:30mm}.netgis-import .netgis-geoportal .netgis-search>label>button{top:9mm}.netgis-import .netgis-geoportal .netgis-search>label>button:last-of-type{width:26mm;right:-30mm;padding:0}.netgis-import .netgis-geoportal>.netgis-loader{left:0;top:0;background:rgba(255,255,255,0.66)}.netgis-import .netgis-geoportal>label>.netgis-loader{width:10mm;height:10mm;bottom:0;right:0;font-size:5mm}.netgis-import .netgis-geoportal>label>.netgis-loader i{top:2.75mm}.netgis-import .netgis-geoportal .netgis-tree{position:absolute;left:8mm;right:8mm;top:32mm;bottom:18mm;overflow:auto;padding-left:0;list-style-type:none}.netgis-import .netgis-geoportal .netgis-tree li{padding-left:0;list-style-type:none}.netgis-import .netgis-geoportal .netgis-tree label{margin-bottom:0;font-weight:normal}.netgis-import .netgis-geoportal .netgis-tree .netgis-folder>details summary input{margin-left:3mm}.netgis-import .netgis-geoportal .netgis-tree .netgis-item input{margin-left:4mm}.netgis-import .netgis-geoportal>button:last-of-type{display:block;position:absolute;width:89%;right:8mm;bottom:8mm}@media (max-width:599px){.netgis-import .netgis-geoportal .netgis-tree{left:4mm;right:4mm;top:25mm}.netgis-import .netgis-geoportal button:last-of-type{width:auto;right:4mm;padding-right:8mm}}.netgis-legend{padding:3mm}.netgis-legend details{margin-bottom:2mm}.netgis-legend summary{display:block;height:12mm;line-height:12mm;font-weight:bold}.netgis-legend details>div{padding:2mm}.netgis-legend details>div img{max-width:100%}.netgis-map{position:absolute;left:0;right:0;top:12mm;bottom:0;cursor:grab}.netgis-map:active:hover{cursor:grabbing!important}.netgis-map-overlay{width:1px;height:1px;background:none}.netgis-map.netgis-clickable{cursor:pointer}.netgis-map.netgis-mode-zoom-box,.netgis-map.netgis-mode-zoom-box:active:hover,.netgis-map.netgis-mode-measure-line,.netgis-map.netgis-mode-measure-area{cursor:crosshair}.netgis-map.netgis-mode-measure-line:active:hover,.netgis-map.netgis-mode-measure-area:active:hover{cursor:grabbing}.netgis-map.netgis-mode-draw-points,.netgis-map.netgis-mode-draw-lines,.netgis-map.netgis-mode-draw-polygons,.netgis-map.netgis-mode-cut-features-draw{cursor:crosshair}.netgis-map.netgis-mode-draw-points.netgis-not-allowed,.netgis-map.netgis-mode-draw-lines.netgis-not-allowed,.netgis-map.netgis-mode-draw-polygons.netgis-not-allowed{cursor:no-drop}.netgis-map .netgis-zoom-box{border:.5mm solid white;background:rgba(153,0,0,0.5)}.netgis-map .ol-scale-bar{right:24mm;bottom:10mm;left:auto;opacity:.7}.netgis-map .ol-scale-bar:hover{opacity:1}.netgis-map .ol-scale-bar select{position:absolute;width:100%;height:100%;top:-1mm;left:0;opacity:0;background:transparent;pointer-events:all!important;cursor:pointer}.netgis-client.netgis-footer>.netgis-map .ol-scale-bar{bottom:46mm}.netgis-menu{position:absolute;left:0;right:0;top:0;height:12mm;max-height:12mm;line-height:12mm;white-space:nowrap;text-align:right;font-size:0;z-index:10000}.netgis-menu.netgis-menu-large{max-height:100%}.netgis-menu .netgis-menu-toggle{z-index:1}.netgis-menu>*{display:inline-block;min-width:12mm;height:12mm;padding:0 4mm;margin:0;font-size:4mm!important}.netgis-menu>h1{position:absolute;left:0;top:0;bottom:0;font-weight:bold;cursor:default}.netgis-menu a{color:inherit;text-decoration:none}.netgis-menu button,.netgis-menu select{color:inherit;background:none;border:none;outline:none;cursor:pointer}.netgis-menu button img,.netgis-menu a img{position:relative;top:.7mm;height:1em}.netgis-menu button i:not(:only-child),.netgis-menu a i:not(:only-child),.netgis-menu button img:not(:only-child),.netgis-menu a img:not(:only-child){width:4mm;margin-right:3mm;text-align:center}.netgis-menu>.netgis-wrapper{display:inline-block;position:relative;padding:0}.netgis-menu>.netgis-wrapper>.netgis-icon{position:absolute;left:0;top:0;padding-left:4mm;pointer-events:none}.netgis-menu>.netgis-wrapper select{width:100%;height:100%;padding-left:11mm}.netgis-menu>.netgis-wrapper select:last-child{padding-left:4mm}@media (max-width:599px){.netgis-menu{overflow:hidden;height:auto;max-height:12mm}.netgis-menu>*:not(.netgis-menu-toggle){display:block;width:100%;text-align:left}.netgis-menu.netgis-menu-large{overflow-y:auto;max-height:100%;height:100%}.netgis-menu .netgis-dropdown{height:auto}.netgis-menu .netgis-dropdown>:first-child{width:100%;text-align:left}.netgis-menu .netgis-dropdown ul{position:relative}.netgis-menu .netgis-dropdown li{height:auto}.netgis-menu .netgis-dropdown li>ul{top:auto;left:auto}}@media (min-width:600px){.netgis-menu-toggle{display:none!important}}.netgis-modal{display:none;position:absolute;width:100%;height:100%;top:0;left:0;padding:6mm;z-index:10000;background:rgba(0,0,0,0.6)}.netgis-modal.netgis-show{display:block}.netgis-modal>*{position:relative;width:100%;height:100%;max-width:150mm;margin:0 auto}.netgis-modal .netgis-content{position:absolute;width:100%;top:12mm;bottom:0;padding:12mm;overflow:auto}.netgis-modal .netgis-button{display:block;width:100%;min-height:12mm;text-align:left}.netgis-panel{position:absolute;left:0;width:80mm;top:12mm;bottom:0;z-index:1000;-webkit-transform:translateX(-110%);transform:translateX(-110%);transition:transform 150ms ease;will-change:transform}.netgis-panel.netgis-show{-webkit-transform:none;transform:none}.netgis-client.netgis-footer>.netgis-panel{bottom:36mm}.netgis-panel>div{position:absolute;left:0;right:0;top:12mm;bottom:0;overflow:auto}.netgis-panel h2{margin:0 4mm;font-size:1em}.netgis-panel .netgis-button,.netgis-panel label{display:block;width:100%;min-height:12mm;text-align:left}.netgis-panel input[type=text]{margin-top:3mm}.netgis-panel .netgis-half{display:inline-block;width:50%!important;padding-right:1mm}.netgis-panel .netgis-half+.netgis-half{padding-left:1mm;padding-right:0}.netgis-panel .netgis-anim-bottom{transition:transform 150ms ease;will-change:transform;-webkit-transform:none;transform:none}.netgis-panel .netgis-anim-bottom.netgis-hide{display:initial;-webkit-transform:translateY(110%);transform:translateY(110%)}.netgis-panel .netgis-resize-bottom{max-height:80%}@media (max-width:599px){.netgis-panel{width:100%!important}}.netgis-plugin iframe{width:100%;height:95%;border:none}.netgis-popup{display:none;position:absolute;width:95mm;height:20mm;transform:translate(-50%,-100%);z-index:1000}.netgis-popup.netgis-dir-right{transform:translate(0%,-50%);height:auto}.netgis-popup.netgis-fade{opacity:.5;transition:opacity .5s ease}.netgis-popup.netgis-fade:hover{opacity:1}.netgis-popup.netgis-show{display:block}.netgis-popup.netgis-dir-down .netgis-arrow{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:0;height:0;border-left:3mm solid transparent;border-right:3mm solid transparent;border-top:3mm solid white}.netgis-popup.netgis-dir-right .netgis-arrow{position:absolute;right:0;top:50%;transform:translateY(-49%);width:0;height:0;border-left:3mm solid white;border-bottom:3mm solid transparent;border-top:3mm solid transparent}.netgis-popup.netgis-dir-down .netgis-content{position:absolute;width:100%;min-height:12mm;max-height:100mm;left:0;bottom:2.9mm;padding:4mm 0;overflow:auto;cursor:default;box-shadow:0 1mm 4mm 0 rgba(0,0,0,0.3)}.netgis-popup.netgis-dir-right .netgis-content{position:absolute;min-height:12mm;max-height:100mm;left:0;right:2.9mm;padding:4mm 0;overflow:auto;bottom:0;transform:translateY(50%);cursor:default;box-shadow:0 1mm 4mm 0 rgba(0,0,0,0.3)}.netgis-popup .netgis-closer{position:absolute;right:0;top:0;height:9mm;background:none;width:100%;text-align:left}.netgis-popup .netgis-closer i{position:absolute;right:3mm}.netgis-popup .netgis-loader{top:0;left:0;font-size:6mm;text-align:center}.netgis-popup .netgis-loader .netgis-icon{width:auto;left:46%;top:30%}.netgis-popup .netgis-wrapper{max-height:80mm;margin-top:5mm;padding:0 3mm;overflow:auto}.netgis-popup table{width:100%;border:0;border-collapse:collapse;table-layout:fixed;word-wrap:break-word}.netgis-popup th,.netgis-popup td{padding:2mm;text-align:left;vertical-align:top}.netgis-popup th[colspan]{padding-top:4mm}.netgis-popup tr:first-of-type th[colspan]{padding-top:0}.netgis-popup .netgis-wrapper button{width:100%;height:12mm;text-align:left}.netgis-popup details{margin-bottom:2mm}.netgis-popup summary{display:block;height:12mm;line-height:12mm;font-weight:bold}.netgis-popup details>div{padding:2mm;overflow-x:auto}.netgis-popup details pre{margin:0;cursor:auto}.netgis-popup label{display:block;height:12mm;line-height:12mm;padding:0 2mm}.netgis-popup input[type=checkbox]:first-child{margin-right:3mm}.netgis-search{width:100%;transition:transform 150ms ease;will-change:transform;-webkit-transform:none;transform:none}.netgis-search.netgis-hide{display:initial!important;-webkit-transform:translateY(-200%);transform:translateY(-200%)}.netgis-search>label{display:inline-block;position:relative;width:100%;min-height:12mm}@media (max-width:599px){.netgis-search.netgis-responsive{left:4mm;right:4mm;width:auto}}.netgis-search>label>input{width:100%;min-width:60mm;height:12mm;padding:1mm 4mm;vertical-align:top;border:none}.netgis-search>label>button{position:absolute!important;width:12mm;height:12mm;top:0;right:0}.netgis-search>ul{max-height:60mm;overflow-y:auto;margin:0;padding:0;list-style-type:none}.netgis-search li .netgis-button{width:100%;height:12mm;padding:0 3mm;text-align:left}.netgis-search li .netgis-button span{opacity:.5}.netgis-search-parcel{position:absolute;top:0;bottom:0;width:100%;padding:4mm;overflow:hidden}.netgis-search-parcel section{position:absolute;left:0;right:0;overflow:auto}.netgis-search-parcel section:first-of-type{top:0;bottom:0;padding:6mm}.netgis-search-parcel section:last-of-type{top:50%;bottom:0}.netgis-search-parcel h3{margin:0;margin-bottom:4mm}.netgis-search-parcel label{display:block;margin:3mm 0;margin-bottom:0;cursor:pointer;font-weight:bold}.netgis-search-parcel label:first-child{margin-top:0}.netgis-search-parcel label span:first-child{display:block}.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:3mm;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%;margin-top:4mm;overflow:auto}.netgis-search-parcel table{min-width:100%;border-collapse:collapse;white-space:nowrap}.netgis-search-parcel table thead{position:-webkit-sticky;position:sticky;top:0;z-index:10}.netgis-search-parcel thead th:first-of-type{text-align:center}.netgis-search-parcel thead input[type=checkbox]{width:auto;height:auto;cursor:pointer}.netgis-search-parcel tr{height:12mm}.netgis-search-parcel .netgis-filter-active tr:not(.netgis-active){display:none}.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 tbody button{display:inline-block;width:12mm;height:12mm;background:none}.netgis-search-parcel p{margin:4mm 3mm;font-style:italic}.netgis-search-place{position:absolute;width:100%;max-width:100mm;right:4mm;top:16mm;z-index:900}.netgis-tabs{position:relative}.netgis-tabs>.netgis-header{position:absolute;width:100%;height:12mm;left:0;top:0;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.netgis-tabs>.netgis-content{position:absolute;width:100%;left:0;top:12mm;bottom:0}.netgis-tabs.netgis-scroll>.netgis-header{height:16mm}.netgis-tabs.netgis-scroll>.netgis-content{top:16mm}.netgis-tabs>.netgis-header .netgis-button{display:inline-block;width:auto}.netgis-tabs>.netgis-header .netgis-button.netgis-active{box-shadow:0 1mm 2mm 0 rgba(0,0,0,0.1),0 2mm 5mm 0 rgba(0,0,0,0.05)!important;z-index:1}.netgis-tabs>.netgis-content section{position:absolute;width:100%;height:100%;left:0;top:0;padding:8mm;overflow:auto}.netgis-tabs>.netgis-content section.netgis-hide{display:none}@media (max-width:599px){.netgis-tabs.netgis-scroll>.netgis-header{height:12mm}.netgis-tabs.netgis-scroll>.netgis-content{top:12mm}.netgis-tabs>.netgis-content section{padding:4mm}}.netgis-font{font-family:Arial,sans-serif}.netgis-color-a{background-color:#900;color:#fff}.netgis-color-b{background-color:#430433;color:#fff}.netgis-color-c{background-color:#470f1b;color:#fff}.netgis-color-d{background-color:#f6f5f5;color:#000}.netgis-color-e{background-color:#fff;color:#000}.netgis-hover-a:hover{background-color:#900;color:#fff}.netgis-hover-b:hover{background-color:#430433;color:#fff}.netgis-hover-c:hover{background-color:#470f1b;color:#fff}.netgis-hover-d:hover{background-color:#f6f5f5;color:#000}.netgis-hover-e:hover{background-color:#fff;color:#000}.netgis-text-a{color:#900}.netgis-text-b{color:#430433}.netgis-text-c{color:#470f1b}.netgis-text-d{color:#f6f5f5}.netgis-text-e{color:#fff}.netgis-hover-text-a:hover{color:#900}.netgis-hover-text-b:hover{color:#430433}.netgis-hover-text-c:hover{color:#470f1b}.netgis-hover-text-d:hover{color:#f6f5f5}.netgis-hover-text-e:hover{color:#fff}.netgis-border-d{border:1mm solid #f6f5f5}.netgis-gradient-a{background:linear-gradient(to bottom,#71182b 0,#470f1b 100%)}.netgis-timeslider{position:absolute;width:100%;height:36mm;bottom:0;box-shadow:0 0 4mm 0 rgba(0,0,0,0.3);z-index:1000}.netgis-timeslider:hover{z-index:1000}.netgis-timeslider.netgis-active{z-index:1000;cursor:grabbing}.netgis-timeslider>.netgis-header{position:absolute;width:100%;height:12mm;text-align:left;z-index:1}.netgis-timeslider>.netgis-wrapper{position:absolute;width:100%;top:12mm;bottom:0;overflow-x:auto;cursor:grab}.netgis-timeslider.netgis-active>.netgis-wrapper{cursor:grabbing}.netgis-timeslider table{height:100%;border-collapse:collapse}.netgis-timeslider td{position:relative;min-width:32mm;height:100%;white-space:nowrap}.netgis-timeslider td:not(:empty){padding:0}.netgis-timeslider td .netgis-button{height:100%;opacity:.5;cursor:inherit!important}.netgis-timeslider td .netgis-button .netgis-icon{position:relative}.netgis-timeslider td .netgis-button span{margin-left:2mm!important;margin-right:3mm}.netgis-timeslider td.netgis-active .netgis-button,.netgis-timeslider:not(.netgis-active) td:hover .netgis-button{opacity:1}.netgis-toolbox{position:absolute;top:12mm!important;bottom:0!important;width:100%;overflow:hidden}.netgis-toolbox section{position:absolute;left:0;right:0;overflow:auto}.netgis-toolbox section:first-of-type{top:0;bottom:0}.netgis-toolbox section:last-of-type{top:50%;bottom:0}.netgis-toolbox section:last-of-type>div{position:absolute;width:100%;top:12mm;bottom:0;overflow:auto}.netgis-toolbox button:hover i{color:inherit!important}.netgis-toolbox button.netgis-active{font-weight:bold}.netgis-toolbox label{display:block;width:100%;min-height:12mm;text-align:left;position:relative;padding:4mm;cursor:pointer}.netgis-toolbox input[type=checkbox]{width:4mm;height:4mm;margin:0 4mm 0 0}.netgis-toolbox input[type=checkbox]:last-child{float:right;margin-right:0}.netgis-toolbox input[type=text]{width:100%;height:10mm;padding:0 2mm;margin-top:3mm}.netgis-toolbox input[type=number]{position:absolute;right:2mm;width:24mm;top:2.5mm;height:8mm;padding:0 1mm}.netgis-tree{display:block;line-height:12mm;padding:0;margin:0;list-style-type:none}.netgis-tree ul{padding:0;margin:0;padding-left:9mm;list-style-type:none}.netgis-tree .netgis-folder{position:relative}.netgis-tree summary{display:block}.netgis-tree summary label{text-align:center}.netgis-tree .netgis-folder .netgis-icon{width:6mm;left:12mm;color:#eab000}.netgis-tree .netgis-folder .netgis-partial{opacity:.5}.netgis-tree details[open]>summary>.netgis-hide-open,.netgis-tree details>summary>.netgis-show-open{display:none}.netgis-tree details[open]>summary>.netgis-show-open{display:initial}.netgis-tree .netgis-folder>details>summary>label{position:absolute;width:12mm;top:0;left:0}.netgis-tree .netgis-folder>details>summary>span{margin-left:17mm!important}.netgis-tree .netgis-item{position:relative}.netgis-tree .netgis-item>label{padding:0 4mm;padding-left:12mm}.netgis-tree .netgis-item>label .netgis-wrapper{display:inline-block;position:absolute;width:12mm;height:12mm;left:0;top:0;text-align:center}.netgis-tree .netgis-space{height:6mm}.netgis-tree .netgis-item[draggable]{border-top:0 solid rgba(0,0,0,0.1);transition:border-top ease 300ms,opacity ease 600ms}.netgis-tree .netgis-dragging{opacity:.3}.netgis-tree .netgis-item.netgis-dragover{border-top:4mm solid rgba(0,0,0,0.1)}.netgis-tree .netgis-folder>details>summary.netgis-dragover{background:rgba(0,0,0,0.1)}.netgis-tree .netgis-folder img.netgis-icon,.netgis-tree .netgis-item img.netgis-icon{display:inline-block;position:relative;height:5mm;width:auto;left:auto;right:auto;top:1mm;margin-right:2mm}.netgis-tree .netgis-item .netgis-right{position:absolute;height:100%;right:12mm;top:0;text-align:right;opacity:.2}.netgis-tree .netgis-item .netgis-right>*{display:inline-block;width:6mm;text-align:center}.netgis-tree .netgis-item summary{position:absolute;width:12mm;height:12mm;right:0;top:0;text-align:center}.netgis-tree .netgis-item summary+*{position:relative;margin-left:7.5mm}.netgis-tree .netgis-item details label{position:relative;padding:0}.netgis-tree .netgis-item details label span{position:absolute;left:0;right:50%;height:100%;padding:0 4mm;overflow:hidden}.netgis-tree .netgis-item details label span:last-of-type{left:50%;right:0;padding:2mm;padding-left:0;padding-right:4mm}.netgis-tree .netgis-item details label input[type=range]{width:100%;cursor:pointer}.netgis-tree .netgis-item details .netgis-icon{position:relative;width:6mm;left:0;margin-right:1mm;text-align:center;color:inherit;opacity:.33}.netgis-bold{font-weight:bold}.netgis-clip-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.netgis-center{text-align:center!important}.netgis-clickable{cursor:pointer!important}.netgis-resize-right{resize:horizontal;overflow-x:auto;min-width:40mm;max-width:100%}.netgis-resize-bottom{resize:vertical;overflow-y:auto;min-height:24mm;max-height:100%}.netgis-noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.netgis-shadow{box-shadow:0 .5mm 1mm 0 rgba(0,0,0,0.1),0 1mm 2.5mm 0 rgba(0,0,0,0.05)!important}.netgis-shadow-large{box-shadow:0 1mm 2mm 0 rgba(0,0,0,0.1),0 2mm 5mm 0 rgba(0,0,0,0.05)!important}.netgis-text-shadow{text-shadow:0 0 1mm rgba(0,0,0,1.0)}.netgis-round{border-radius:2mm}.netgis-hide{display:none!important}.netgis-no-background{background:none}.netgis-client button,.netgis-button{position:relative;padding:0 4mm;font-family:inherit;text-decoration:none;border:none;outline:none;cursor:pointer}.netgis-button .netgis-icon{display:inline-block;position:absolute;width:12mm;left:0;top:0;bottom:0;line-height:12mm;text-align:center;font-size:1.2em}.netgis-button.netgis-center .netgis-icon:first-child{position:static}.netgis-button .netgis-icon:last-child{left:auto;right:0}.netgis-button:not(.netgis-center) .netgis-icon+*:not(.netgis-icon){margin-left:8mm}.netgis-form h3{font-size:1em;margin-top:0;margin-bottom:4mm}.netgis-form ul{padding:0;padding-left:12mm;margin-top:0;margin-bottom:6mm;list-style-type:square}.netgis-form li{padding-left:2mm}.netgis-form label{display:block;position:relative;margin-bottom:6mm;font-weight:bold;cursor:pointer;user-select:none}.netgis-form input,.netgis-form select{display:block;width:100%;margin-top:4mm;padding:2mm}.netgis-form input[type=file]{padding:6mm;cursor:pointer;background:#efefef}.netgis-form input[type=checkbox]{display:inline-block;width:12mm;margin:0}.netgis-form input[type=checkbox]:first-child{width:4mm;margin-right:3mm;margin-top:2mm;margin-bottom:2mm}.netgis-form button{display:block;width:100%;height:12mm}.netgis-form button:not(:last-child){margin-bottom:6mm}.netgis-form select{cursor:pointer}.netgis-loader{position:absolute;width:100%;height:100%;z-index:999999;text-align:center;font-size:12mm;overflow:hidden;cursor:progress;opacity:1;transition:opacity ease 600ms}.netgis-loader.netgis-fade{opacity:0}.netgis-loader>i{position:absolute;width:100%;left:0;top:50%;transform:translateY(-50%);animation:netgis-spin 2s linear infinite}.netgis-loader>h2{position:absolute;left:4mm;right:4mm;bottom:30%;font-size:4mm}@keyframes netgis-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@media (max-width:599px){.netgis-hide-mobile{display:none!important}}@media (min-width:600px){.netgis-hide-desktop{display:none!important}}.netgis-window{position:absolute;min-width:40mm;min-height:12mm;max-width:100%;max-height:100%;resize:both;overflow:auto;z-index:22000!important;background:#fff}.netgis-window.netgis-hide{display:none}.netgis-window .netgis-mover{cursor:grab}.netgis-window.netgis-dragging,.netgis-window.netgis-dragging *{cursor:grabbing!important}.netgis-window.netgis-dragging .netgis-content{pointer-events:none}.netgis-window .netgis-mover{display:block;width:100%;min-height:12mm;text-align:left}.netgis-window .netgis-closer{position:absolute;width:12mm;height:12mm;right:0;top:0;background:none;z-index:1000}.netgis-window .netgis-content{position:absolute;top:12mm;bottom:0;left:0;right:0}@media (max-width:599px){}
\ No newline at end of file
diff --git a/templates/map/client/dist/netgis.min.js b/templates/map/client/dist/netgis.min.js
index b59de851..4891ba47 100644
--- a/templates/map/client/dist/netgis.min.js
+++ b/templates/map/client/dist/netgis.min.js
@@ -1,8227 +1,550 @@
-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) {
- return "undefined" != typeof window && window === a
- ? a
- : "undefined" != typeof global && null != global
- ? global
- : a;
-};
-$jscomp.global = $jscomp.getGlobal(this);
-$jscomp.polyfill = function (a, b, c, d) {
- if (b) {
- c = $jscomp.global;
- a = a.split(".");
- for (d = 0; d < a.length - 1; d++) {
- var e = a[d];
- e in c || (c[e] = {});
- c = c[e];
- }
- a = a[a.length - 1];
- d = c[a];
- b = b(d);
- b != d && null != b && $jscomp.defineProperty(c, a, { configurable: !0, writable: !0, value: b });
- }
-};
-$jscomp.polyfill(
- "Number.parseFloat",
- function (a) {
- return a || parseFloat;
- },
- "es6",
- "es3"
-);
-$jscomp.polyfill(
- "Number.parseInt",
- function (a) {
- return a || parseInt;
- },
- "es6",
- "es3"
-);
-$jscomp.arrayIteratorImpl = function (a) {
- var b = 0;
- return function () {
- return b < a.length ? { done: !1, value: a[b++] } : { done: !0 };
- };
-};
-$jscomp.arrayIterator = function (a) {
- return { next: $jscomp.arrayIteratorImpl(a) };
-};
-$jscomp.SYMBOL_PREFIX = "jscomp_symbol_";
-$jscomp.initSymbol = function () {
- $jscomp.initSymbol = function () {};
- $jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol);
-};
-$jscomp.SymbolClass = function (a, b) {
- this.$jscomp$symbol$id_ = a;
- $jscomp.defineProperty(this, "description", { configurable: !0, writable: !0, value: b });
-};
-$jscomp.SymbolClass.prototype.toString = function () {
- return this.$jscomp$symbol$id_;
-};
-$jscomp.Symbol = (function () {
- function a(c) {
- if (this instanceof a) throw new TypeError("Symbol is not a constructor");
- return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX + (c || "") + "_" + b++, c);
- }
- var b = 0;
- return a;
-})();
-$jscomp.initSymbolIterator = function () {
- $jscomp.initSymbol();
- var a = $jscomp.global.Symbol.iterator;
- a || (a = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol("Symbol.iterator"));
- "function" != typeof Array.prototype[a] &&
- $jscomp.defineProperty(Array.prototype, a, {
- configurable: !0,
- writable: !0,
- value: function () {
- return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this));
- },
- });
- $jscomp.initSymbolIterator = function () {};
-};
-$jscomp.initSymbolAsyncIterator = function () {
- $jscomp.initSymbol();
- var a = $jscomp.global.Symbol.asyncIterator;
- a || (a = $jscomp.global.Symbol.asyncIterator = $jscomp.global.Symbol("Symbol.asyncIterator"));
- $jscomp.initSymbolAsyncIterator = function () {};
-};
-$jscomp.iteratorPrototype = function (a) {
- $jscomp.initSymbolIterator();
- a = { next: a };
- a[$jscomp.global.Symbol.iterator] = function () {
- return this;
- };
- return a;
-};
-$jscomp.iteratorFromArray = function (a, b) {
- $jscomp.initSymbolIterator();
- a instanceof String && (a += "");
- var c = 0,
- d = {
- next: function () {
- if (c < a.length) {
- var e = c++;
- return { value: b(e, a[e]), done: !1 };
- }
- d.next = function () {
- return { done: !0, value: void 0 };
- };
- return d.next();
- },
- };
- d[Symbol.iterator] = function () {
- return d;
- };
- return d;
-};
-$jscomp.polyfill(
- "Array.prototype.values",
- function (a) {
- return a
- ? a
- : function () {
- return $jscomp.iteratorFromArray(this, function (a, c) {
- return c;
- });
- };
- },
- "es8",
- "es3"
-);
-$jscomp.polyfill(
- "Number.isNaN",
- function (a) {
- return a
- ? a
- : function (a) {
- return "number" === typeof a && isNaN(a);
- };
- },
- "es6",
- "es3"
-);
-$jscomp.owns = function (a, b) {
- return Object.prototype.hasOwnProperty.call(a, b);
-};
-$jscomp.assign =
- "function" == typeof Object.assign
- ? Object.assign
- : function (a, b) {
- for (var c = 1; c < arguments.length; c++) {
- var d = arguments[c];
- if (d) for (var e in d) $jscomp.owns(d, e) && (a[e] = d[e]);
- }
- return a;
- };
-$jscomp.polyfill(
- "Object.assign",
- function (a) {
- return a || $jscomp.assign;
- },
- "es6",
- "es3"
-);
-var netgis = netgis || {};
-netgis.Attribution = function (a) {
- this.config = a;
- this.layers = this.client = null;
- this.items = [];
- this.initElements(a);
- this.initConfig(a);
-};
-netgis.Attribution.Config = { prefix: "NetGIS" };
-netgis.Attribution.prototype.initElements = function (a) {
- this.container = document.createElement("section");
- this.container.className = "netgis-attribution netgis-text-a";
- var b = this;
- window.setTimeout(function () {
- b.update();
- }, 100);
-};
-netgis.Attribution.prototype.initConfig = function (a) {
- if (a && (a.attribution && a.attribution.prefix && this.items.push(a.attribution.prefix), (a = a.layers)))
- for (var b = 0; b < a.length; b++) {
- var c = a[b],
- d = c.attribution;
- d && 0 !== d.length && c.active && this.items.push(d);
- }
-};
-netgis.Attribution.prototype.attachTo = function (a) {
- a.appendChild(this.container);
- a.addEventListener(netgis.Events.CLIENT_CONTEXT_RESPONSE, this.onContextUpdate.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_TOGGLE, this.onMapLayerToggle.bind(this));
- a.addEventListener(netgis.Events.MAP_EDIT_LAYER_CHANGE, this.onEditLayerChange.bind(this));
-};
-netgis.Attribution.prototype.update = function () {
- var a = "© " + this.items.join(", ");
- this.appendix && (a += ", " + this.appendix);
- this.container.innerHTML = a;
-};
-netgis.Attribution.prototype.add = function (a) {
- for (var b = 0; b < this.items.length; b++) if (this.items[b] === a) return;
- this.items.push(a);
- this.update();
-};
-netgis.Attribution.prototype.remove = function (a) {
- for (var b = 0; b < this.items.length; b++)
- if (this.items[b] === a) {
- this.items.splice(b, 1);
- break;
- }
- this.update();
-};
-netgis.Attribution.prototype.onMapLayerToggle = function (a) {
- a = a.detail;
- for (var b = this.config.layers, c = null, d = 0; d < b.length; d++) {
- var e = b[d];
- e.id === a.id && (c = e.attribution);
- }
- c && (a.on ? this.add(c) : this.remove(c));
-};
-netgis.Attribution.prototype.onContextUpdate = function (a) {
- this.initConfig(a.detail.context.config);
- this.update();
-};
-netgis.Attribution.prototype.onContextUpdate_01 = function (a) {
- config.attribution && config.attribution.prefix && this.items.push(config.attribution.prefix);
- this.layers = [];
- for (var b = 0; b < a.layers.length; b++) {
- var c = a.layers[b];
- c.attribution && 0 < c.attribution.length && (this.layers[c.id] = c.attribution);
- }
- for (b = 0; b < a.layers.length; b++) if (((c = a.layers[b]), c.active)) this.onLayerShow({ id: c.id });
-};
-netgis.Attribution.prototype.onLayerShow = function (a) {
- if ((a = this.layers[a.id])) {
- for (var b = 0; b < this.items.length; b++) if (this.items[b] === a) return;
- this.items.push(a);
- this.update();
- }
-};
-netgis.Attribution.prototype.onLayerHide = function (a) {
- if ((a = this.layers[a.id])) {
- for (var b = 0; b < this.items.length; b++)
- if (this.items[b] === a) {
- this.items.splice(b, 1);
- break;
- }
- this.update();
- }
-};
-netgis.Attribution.prototype.onEditLayerChange = function (a) {
- a = a.detail.geojson.area;
- for (var b = 0; b < this.items.length; b++)
- if (-1 < this.items[b].search("Zeichnungsfl\u00e4che: ")) {
- this.items.splice(b, 1);
- break;
- }
- this.appendix = a && 0 < a ? "Zeichnungsfl\u00e4che: " + netgis.util.formatArea(a, !0) + "" : null;
- this.update();
-};
-netgis = netgis || {};
-netgis.Client = function (a, b) {
- b || (b = {});
- a = this.initLegacyConfig(b, a);
- this.container = this.initContainer(a);
- this.debug = !1;
- netgis.util.isString(b)
- ? netgis.util.isJSON(b, !1)
- ? ((b = JSON.parse(b)), this.init(this.container, b))
- : (this.showLoader(!0), netgis.util.request(b, this.onConfigResponse.bind(this)))
- : this.init(this.container, b);
-};
-netgis.Client.Config = { loading_text: "Geoportal Client wird geladen..." };
-netgis.Client.Output = { id: "netgis-storage" };
-netgis.Client.prototype.init = function (a, b) {
- this.config = b;
- this.initParams(b);
- this.initConfig(b);
- this.initElements(a);
- this.initEvents();
- this.initModules(b);
- this.initOutput(b);
- a = new netgis.ContextMenu();
- a.attachTo(this.container);
- this.modules.contextmenu = a;
- this.popup = new netgis.Popup();
- this.popup.attachTo(this.container);
-};
-netgis.Client.prototype.initLegacyConfig = function (a, b) {
- var c = netgis.config;
- if (!c) return b;
- c.MAP_CONTAINER_ID && (b = c.MAP_CONTAINER_ID);
- a.modules ||
- (a.modules = {
- menu: !0,
- map: !0,
- controls: !0,
- attribution: !0,
- legend: !0,
- layertree: !0,
- info: !0,
- searchplace: !0,
- geolocation: !0,
- });
- a.map || (a.map = {});
- (!c.INITIAL_CENTER_X && 0 !== c.INITIAL_CENTER_X) ||
- (!c.INITIAL_CENTER_Y && 0 !== c.INITIAL_CENTER_Y) ||
- (a.map.center = [c.INITIAL_CENTER_X, c.INITIAL_CENTER_Y]);
- a.map.scalebar = !0;
- c.INITIAL_SCALE && (a.map.scale = c.INITIAL_SCALE);
- c.MAP_SCALES && (a.map.scales = c.MAP_SCALES);
- c.MAP_EXTENT && (a.map.extent = c.MAP_EXTENT);
- c.MAX_HISTORY && (a.map.max_view_history = c.MAX_HISTORY);
- a.attribution = { prefix: "GeoPortal" };
- c.MAP_PROJECTIONS && (a.projections = c.MAP_PROJECTIONS);
- c.MAP_PROJECTION && (a.map.projection = c.MAP_PROJECTION);
- a.controls = {
- buttons: [
- { id: "zoom_in", icon: "", title: "Zoom +" },
- { id: "zoom_out", icon: "", title: "Zoom -" },
- { id: "geolocation", icon: "", title: "Ger\u00e4testandort" },
- { id: "zoom_home", icon: "", title: "Anfangsausdehung" },
- { id: "legend", icon: "", title: "Legende" },
- ],
- };
- a.folders || (a.folders = [{ id: "bg", title: "Hintergrund", parent: null, radio: !0 }]);
- a.layers || (a.layers = []);
- if (c.URL_BACKGROUND_HYBRID) {
- var d = c.URL_BACKGROUND_HYBRID;
- -1 !== d.indexOf("{x}") ||
- (-1 !== d.indexOf("{y}") && -1 !== d.indexOf("{-y}")) ||
- -1 !== d.indexOf("{z}") ||
- (d += "/{z}/{x}/{-y}.jpeg");
- d = {
- id: "bg_hybrid",
- active: !0,
- folder: "bg",
- order: 1,
- title: "Hybrid",
- type: "TMS",
- url: d,
- projection: "EPSG:25832",
- extent: "map",
- scales: "map",
- transparency: 0,
- };
- a.layers.push(d);
- }
- c.URL_BACKGROUND_AERIAL &&
- ((d = c.URL_BACKGROUND_AERIAL),
- (d = {
- id: "bg_aerial",
- folder: "bg",
- order: 1,
- title: "Luftbild",
- type: "WMS",
- url: d,
- query: !1,
- transparency: 0,
- }),
- a.layers.push(d));
- c.URL_HEIGHT_REQUEST &&
- ((d = c.URL_HEIGHT_REQUEST),
- -1 === d.indexOf("{x}") && -1 === d.indexOf("{y}") && (d += "&coord={x},{y}"),
- (d = {
- id: "dem_hidden",
- title: "Digitales H\u00f6henmodell",
- hidden: !0,
- active: !0,
- query: !0,
- type: "HIDDEN",
- query_url: d,
- }),
- a.layers.push(d));
- a.layertree || (a.layertree = {});
- a.layertree.title = "Ebenen";
- a.info || (a.info = {});
- a.info.default_format = "text/html";
- c.URL_FEATURE_INFO_PROXY && 0 < c.URL_FEATURE_INFO_PROXY.length && (a.info.proxy = c.URL_FEATURE_INFO_PROXY);
- a.menu ||
- ((a.menu = {
- header: "GeoPortal",
- compact: !0,
- items: [
- {
- title: "Tools",
- items: [
- { id: "view", title: "Betrachten" },
- {
- id: "zoom_box",
- title: "Zoom-Rechteck",
- },
- {
- id: "measure_line",
- title: "Strecke messen",
- },
- {
- id: "measure_area",
- title: "Fl\u00e4che messen",
- },
- {
- id: "measure_clear",
- title: "Messung l\u00f6schen",
- },
- ],
- },
- { id: "layertree", title: "Ebenen" },
- ],
- }),
- c.MAP_SCALES &&
- 0 < c.MAP_SCALES.length &&
- a.menu.items.unshift({
- title: "Ansicht",
- items: [
- { id: "view_prev", title: "Vorherige" },
- { id: "view_next", title: "N\u00e4chste" },
- {
- id: "scales",
- title: "Ma\u00dfstab",
- items: [],
- },
- ],
- }),
- c.URL_USAGE_TERMS &&
- 0 < c.URL_USAGE_TERMS.length &&
- a.menu.items.unshift({
- title: "Info",
- items: [
- {
- url: c.URL_USAGE_TERMS,
- title: "Nutzungsbedingungen",
- },
- ],
- }));
- c.URL_SEARCH_REQUEST &&
- ((d = c.URL_SEARCH_REQUEST),
- -1 === d.indexOf("{query}") &&
- (d +=
- "?outputFormat=json&resultTarget=web&searchEPSG=4326&maxResults=5&maxRows=5&featureClass=P&style=full&searchText={query}&name_startsWith={query}"),
- c.URL_SEARCH_PROXY && 0 < c.URL_SEARCH_PROXY.length && (d = c.URL_SEARCH_PROXY + "?" + d),
- a.menu.items.unshift({ id: "searchplace", title: "Suche" }),
- (a.searchplace = { title: "Suche...", url: d }));
- a.wmc || (a.wmc = {});
- if (c.URL_WMC_REQUEST) {
- d = c.URL_WMC_REQUEST;
- if (-1 === d.indexOf("{id}")) {
- var e = "mobilemap2";
- c.CONF_FILE_NAME && 0 < c.CONF_FILE_NAME.length && (e = c.CONF_FILE_NAME);
- d += "?confFileName=" + e + "&epsg=25832&withHierarchy=1&wmc_id={id}";
- }
- c.URL_WMC_PROXY && 0 < c.URL_WMC_PROXY.length && (d = c.URL_WMC_PROXY + "?" + d);
- a.wmc.url = d;
- }
- c.URL_LAYERS_REQUEST &&
- ((d = c.URL_LAYERS_REQUEST),
- -1 === d.indexOf("{ids}") && (d += "?languageCode=de&resultTarget=web&maxResults=40&resourceIds={ids}"),
- c.URL_LAYERS_PROXY && 0 < c.URL_LAYERS_PROXY.length && (d = c.URL_LAYERS_PROXY + "?" + d),
- (a.wmc.layers_url = d));
- return b;
-};
-netgis.Client.prototype.initContainer = function (a) {
- netgis.util.isString(a) && (a = document.getElementById(a));
- a.classList.add("netgis-client", "netgis-font");
- return a;
-};
-netgis.Client.prototype.initParams = function (a) {
- var b = window.location.search.substr(1);
- b = b.split("&");
- this.params = {};
- for (var c = 0; c < b.length; c++) {
- var d = b[c].split("="),
- e = d[0].toLowerCase();
- d = d[1];
- e && "" !== e && (this.params[e] = d);
- }
- for (e in this.params)
- switch (((d = this.params[e]), e)) {
- case "wmc_id":
- a.wmc && (a.wmc.id = d);
- break;
- case "layerid":
- a &&
- a.wmc &&
- a.wmc.layers_url &&
- ((b = a.wmc.layers_url),
- (b = netgis.util.replace(b, "{ids}", d)),
- netgis.util.request(b, this.onContextResponseLayer.bind(this)));
- }
-};
-netgis.Client.prototype.initConfig = function (a) {
- a && a.wmc && a.wmc.url && this.requestContextWMC(a.wmc.url, a.wmc.id);
- a && a.ows && a.ows.url && this.requestContextOWS(a.ows.url);
-};
-netgis.Client.prototype.initElements = function (a) {
- if (a.hasAttribute("data-lon")) {
- var b = Number.parseFloat(a.getAttribute("data-lon"));
- this.config.map.center_lonlat || (this.config.map.center_lonlat = []);
- this.config.map.center_lonlat[0] = b;
- }
- a.hasAttribute("data-lat") &&
- ((b = Number.parseFloat(a.getAttribute("data-lat"))),
- this.config.map.center_lonlat || (this.config.map.center_lonlat = []),
- (this.config.map.center_lonlat[1] = b));
- a.hasAttribute("data-zoom") && ((b = Number.parseFloat(a.getAttribute("data-zoom"))), (this.config.map.zoom = b));
- a.hasAttribute("data-bounds") && ((b = a.getAttribute("data-bounds")), (this.config.tools.bounds = b));
- a.hasAttribute("data-editable") &&
- ((a = "true" === a.getAttribute("data-editable")),
- this.config.tools || (this.config.tools = {}),
- (this.config.tools.editable = a));
-};
-netgis.Client.prototype.initOutput = function (a) {
- var b;
- if (a.output && a.output.id) {
- var c = a.output.id;
- console.warn('config[ "output" ][ "id" ] is deprecated, use config[ "tools" ][ "output_id" ] instead');
- }
- a.tools && (a.tools.output_id && (c = a.tools.output_id), a.tools.output_name && (b = a.tools.output_name));
- if (c) {
- if ((a = document.getElementById(c)) && a.value && 0 < a.value.length) {
- var d = JSON.parse(a.value);
- netgis.util.invoke(this.container, netgis.Events.MAP_EDIT_LAYER_LOADED, { geojson: d });
- }
- this.output = a;
- }
- this.output ||
- ((this.output = document.createElement("input")),
- (this.output.className = "netgis-storage"),
- this.output.setAttribute("type", "hidden"),
- c && this.output.setAttribute("id", c),
- b && this.output.setAttribute("name", b),
- this.container.appendChild(this.output));
-};
-netgis.Client.prototype.initModules = function (a) {
- this.modules = {};
- if ((a = a.modules))
- a.map && this.addModule("map", netgis.Map),
- a.controls && this.addModule("controls", netgis.Controls),
- a.attribution && this.addModule("attribution", netgis.Attribution),
- a.legend && this.addModule("legend", netgis.Legend),
- a.geolocation && this.addModule("geolocation", netgis.Geolocation),
- a.info && this.addModule("info", netgis.Info),
- a.menu && this.addModule("menu", netgis.Menu),
- a.layertree && this.addModule("layertree", netgis.LayerTree),
- a.searchplace && this.addModule("searchplace", netgis.SearchPlace),
- a.searchparcel && this.addModule("searchparcel", netgis.SearchParcel),
- a.toolbox && this.addModule("toolbox", netgis.Toolbox),
- a["import"] && this.addModule("import", netgis.Import),
- a["export"] && this.addModule("export", netgis.Export),
- a.timeslider && this.addModule("timeslider", netgis.TimeSlider),
- a.plugins && this.addModule("plugins", netgis.Plugins);
-};
-netgis.Client.prototype.initEvents = function () {
- this.container.addEventListener(void 0, function (a) {
- console.error("undefined event invoked", a);
- });
- for (var a in netgis.Events) this.container.addEventListener(netgis.Events[a], this.handleEvent.bind(this));
- this.container.addEventListener(netgis.Events.MAP_EDIT_LAYER_CHANGE, this.onMapEditLayerChange.bind(this));
-};
-netgis.Client.prototype.showLoader = function (a) {
- this.loader ||
- ((this.loader = document.createElement("div")),
- (this.loader.className = "netgis-loader netgis-color-e netgis-text-a"),
- (this.loader.innerHTML = ""),
- this.config &&
- this.config.client &&
- this.config.client.loading_text &&
- (this.loader.innerHTML += "
" + this.config.client.loading_text + "
"),
- this.container.appendChild(this.loader));
- !1 === a
- ? (this.loader.classList.add("netgis-fade"),
- (this.loaderTimeout = window.setTimeout(
- function () {
- this.loader.classList.add("netgis-hide");
- this.loaderTimeout = null;
- }.bind(this),
- 600
- )))
- : (this.loader.classList.remove("netgis-hide"),
- this.loader.classList.remove("netgis-fade"),
- this.loaderTimeout && (window.clearTimeout(this.loaderTimeout), (this.loaderTimeout = null)));
-};
-netgis.Client.prototype.handleEvent = function (a) {
- var b = a.type;
- a = a.detail;
- !0 === this.debug && console.info("EVENT:", b, a);
-};
-netgis.Client.prototype.addModule = function (a, b) {
- b = new b(this.config);
- b.attachTo && b.attachTo(this.container);
- return (this.modules[a] = b);
-};
-netgis.Client.prototype.isMobile = function () {
- return netgis.util.isMobile(this.container);
-};
-netgis.Client.prototype.onConfigResponse = function (a) {
- a = JSON.parse(a);
- this.init(this.container, a);
- this.showLoader(!1);
-};
-netgis.Client.prototype.requestContextWMC = function (a, b) {
- if (-1 < a.indexOf("{id}"))
- if (b) a = netgis.util.replace(a, "{id}", b);
- else {
- console.warn("No WMC id set in config for url", a);
- return;
- }
- new netgis.WMC(this.config).requestContext(a, this.onContextResponseWMC.bind(this));
- this.showLoader(!0);
-};
-netgis.Client.prototype.onContextResponseWMC = function (a) {
- console.info("WMC Response:", a);
- for (var b = 0; b < a.config.layers.length; b++) this.config.layers.push(a.config.layers[b]);
- a.config.map.bbox && (this.config.map.bbox = a.config.map.bbox);
- netgis.util.invoke(this.container, netgis.Events.CLIENT_CONTEXT_RESPONSE, { context: a });
- this.showLoader(!1);
-};
-netgis.Client.prototype.onContextResponseLayer = function (a) {
- var b = JSON.parse(a);
- console.info("Layer Response:", b);
- a = new netgis.WMC();
- b = b.wms.srv[0];
- a = a.parseServiceLayer(b.id.toString(), b, null, b.layer[0], null);
- this.config.layers.push(a);
- netgis.util.invoke(this.container, netgis.Events.MAP_LAYER_CREATE, a);
-};
-netgis.Client.prototype.requestContextOWS = function (a) {
- console.info("Request OWS:", a);
- netgis.util.request(a, this.onContextResponseOWS.bind(this));
-};
-netgis.Client.prototype.onContextResponseOWS = function (a) {
- a = JSON.parse(a);
- console.info("OWS Response:", a);
- a = netgis.OWS.read(a, this);
- console.info("OWS Config:", a);
-};
-netgis.Client.prototype.onIconbarIconClick = function (a) {
- switch (a.detail.id) {
- case "home":
- a = this.config.layers;
- for (var b = 0; b < a.length; b++) {
- var c = a[b],
- d = c.id;
- !0 === c.active
- ? (this.modules.map.addLayer(d, c), this.modules.layertree.tree.setItemChecked(d, !0))
- : (this.modules.map.removeLayer(d), this.modules.layertree.tree.setItemChecked(d, !1));
- }
- }
-};
-netgis.Client.prototype.onIconbarItemClick = function (a) {
- a = a.detail;
- for (var b = this.config.layers, c = 0; c < b.length; c++) {
- var d = b[c],
- e = d.id;
- "background" !== d.folder &&
- (e === a.id
- ? (this.modules.map.addLayer(e, d), this.modules.layertree.tree.setItemChecked(e, !0))
- : (this.modules.map.removeLayer(e), this.modules.layertree.tree.setItemChecked(e, !1)));
- }
-};
-netgis.Client.prototype.onSwitcherButtonClick = function (a) {
- a = a.detail;
- for (var b = this.config.switcher.buttons, c = this.config.layers, d = 0; d < b.length; d++) {
- var e = b[d].id;
- if (e === a.id)
- for (var f = 0; f < c.length; f++) {
- var g = c[f];
- g.id === e && (this.modules.map.addLayer(e, g), this.modules.layertree.tree.setItemChecked(e, !0));
- }
- else this.modules.map.removeLayer(e), this.modules.layertree.tree.setItemChecked(e, !1);
- }
- 0 === this.modules.switcher.getIndex(a.id) && this.modules.switcher.shift(1, 0);
-};
-netgis.Client.prototype.onGeolocationToggle = function (a) {
- this.modules.map.setGeolocMarkerVisible(a.detail.on);
-};
-netgis.Client.prototype.onGeolocationChange = function (a) {
- a = a.detail;
- this.modules.map.zoomLonLat(a.lon, a.lat, this.config.geolocation.zoom);
- this.modules.map.setGeolocMarkerLonLat(a.lon, a.lat);
-};
-netgis.Client.prototype.onMapEditLayerChange = function (a) {
- a = JSON.stringify(a.detail.geojson);
- this.output.value = a;
-};
-netgis.Client.handleCommand = function (a, b) {
- var c = b.split(":");
- b = c[0];
- switch (b.toUpperCase()) {
- case netgis.Commands.PLUGIN:
- b = c[1];
- if (!b) {
- console.error("missing second command parameter id", c);
- break;
- }
- netgis.util.invoke(a, netgis.Events.PLUGIN_TOGGLE, { id: b });
- break;
- case netgis.Commands.LAYERTREE:
- netgis.util.isMobile()
- ? netgis.util.invoke(a, netgis.Events.LAYERTREE_TOGGLE, { on: !0 })
- : netgis.util.invoke(a, netgis.Events.LAYERTREE_TOGGLE, null);
- break;
- case netgis.Commands.SEARCHPLACE:
- netgis.util.isMobile()
- ? netgis.util.invoke(a, netgis.Events.SEARCHPLACE_TOGGLE, { on: !0 })
- : netgis.util.invoke(a, netgis.Events.SEARCHPLACE_TOGGLE, null);
- break;
- case netgis.Commands.SEARCHPARCEL:
- netgis.util.isMobile()
- ? netgis.util.invoke(a, netgis.Events.SEARCHPARCEL_TOGGLE, { on: !0 })
- : netgis.util.invoke(a, netgis.Events.SEARCHPARCEL_TOGGLE, null);
- break;
- case netgis.Commands.TOOLBOX:
- netgis.util.isMobile()
- ? netgis.util.invoke(a, netgis.Events.TOOLBOX_TOGGLE, { on: !0 })
- : netgis.util.invoke(a, netgis.Events.TOOLBOX_TOGGLE, null);
- break;
- case netgis.Commands.LEGEND:
- netgis.util.isMobile()
- ? netgis.util.invoke(a, netgis.Events.LEGEND_TOGGLE, { on: !0 })
- : netgis.util.invoke(a, netgis.Events.LEGEND_TOGGLE, null);
- break;
- case netgis.Commands.VIEW_PREV:
- netgis.util.invoke(a, netgis.Events.MAP_VIEW_PREV, null);
- break;
- case netgis.Commands.VIEW_NEXT:
- netgis.util.invoke(a, netgis.Events.MAP_VIEW_NEXT, null);
- break;
- case netgis.Commands.VIEW:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.VIEW });
- break;
- case netgis.Commands.ZOOM_BOX:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.ZOOM_BOX });
- break;
- case netgis.Commands.ZOOM_SCALE:
- c = Number.parseInt(a.innerText.split(":")[1]);
- netgis.util.invoke(a, netgis.Events.MAP_ZOOM_SCALE, { scale: c, anim: !0 });
- break;
- case netgis.Commands.MEASURE_LINE:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.MEASURE_LINE });
- break;
- case netgis.Commands.MEASURE_AREA:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.MEASURE_AREA });
- break;
- case netgis.Commands.MEASURE_CLEAR:
- netgis.util.invoke(a, netgis.Events.MEASURE_CLEAR, null);
- break;
- case netgis.Commands.DRAW_POINTS:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.DRAW_POINTS });
- break;
- case netgis.Commands.DRAW_LINES:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.DRAW_LINES });
- break;
- case netgis.Commands.DRAW_POLYGONS:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.DRAW_POLYGONS });
- break;
- case netgis.Commands.MODIFY_FEATURES:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.MODIFY_FEATURES });
- break;
- case netgis.Commands.DELETE_FEATURES:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.DELETE_FEATURES });
- break;
- case netgis.Commands.BUFFER_FEATURES:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.BUFFER_FEATURES_DYNAMIC });
- break;
- case netgis.Commands.CUT_FEATURES:
- netgis.util.invoke(a, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.CUT_FEATURES });
- break;
- case netgis.Commands.IMPORT_LAYER:
- netgis.util.invoke(a, netgis.Events.IMPORT_LAYER_SHOW, null);
- break;
- case netgis.Commands.EXPORT:
- netgis.util.invoke(a, netgis.Events.EXPORT_SHOW, null);
- break;
- case netgis.Commands.GEOLOCATION:
- netgis.util.invoke(a, netgis.Events.GEOLOCATION_SHOW_OPTIONS, null);
- break;
- default:
- console.error("unhandled command id", b);
- }
-};
-netgis = netgis || {};
-netgis.Commands = {
- PLUGIN: "PLUGIN",
- LAYERTREE: "LAYERTREE",
- SEARCHPLACE: "SEARCHPLACE",
- SEARCHPARCEL: "SEARCHPARCEL",
- TOOLBOX: "TOOLBOX",
- LEGEND: "LEGEND",
- VIEW_PREV: "VIEW_PREV",
- VIEW_NEXT: "VIEW_NEXT",
- VIEW: "VIEW",
- ZOOM_BOX: "ZOOM_BOX",
- ZOOM_SCALE: "ZOOM_SCALE",
- MEASURE_LINE: "MEASURE_LINE",
- MEASURE_AREA: "MEASURE_AREA",
- MEASURE_CLEAR: "MEASURE_CLEAR",
- DRAW_POINTS: "DRAW_POINTS",
- DRAW_LINES: "DRAW_LINES",
- DRAW_POLYGONS: "DRAW_POLYGONS",
- MODIFY_FEATURES: "MODIFY_FEATURES",
- DELETE_FEATURES: "DELETE_FEATURES",
- BUFFER_FEATURES: "BUFFER_FEATURES",
- CUT_FEATURES: "CUT_FEATURES",
- SNAP_TOGGLE: "SNAP_TOGGLE",
- IMPORT_LAYER: "IMPORT_LAYER",
- EXPORT: "EXPORT",
- GEOLOCATION: "GEOLOCATION",
-};
-netgis = netgis || {};
-netgis.ContextMenu = function () {
- this.initElements();
-};
-netgis.ContextMenu.prototype.initElements = function () {
- this.container = document.createElement("div");
- this.container.className = "netgis-contextmenu netgis-shadow-large netgis-color-e netgis-hide";
-};
-netgis.ContextMenu.prototype.attachTo = function (a) {
- a.appendChild(this.container);
- a.addEventListener(netgis.Events.CONTEXTMENU_SHOW, this.onContextMenuShow.bind(this));
- a.addEventListener("click", this.onParentClick.bind(this));
- a.addEventListener("pointerup", this.onParentClick.bind(this));
- a.addEventListener("scroll", this.onParentScroll.bind(this), !0);
- a.addEventListener("keydown", this.onParentKeyDown.bind(this));
-};
-netgis.ContextMenu.prototype.clear = function () {
- this.container.innerHTML = "";
-};
-netgis.ContextMenu.prototype.addButton = function (a, b) {
- var c = document.createElement("button");
- c.className = "netgis-button netgis-clip-text netgis-hover-d";
- c.innerHTML = b;
- c.setAttribute("type", "button");
- c.setAttribute("data-id", a);
- c.addEventListener("click", this.onButtonClick.bind(this));
- this.container.appendChild(c);
- return c;
-};
-netgis.ContextMenu.prototype.addCheckbox = function (a, b, c) {
- var d = document.createElement("label");
- d.className = "netgis-noselect netgis-hover-d";
- var e = document.createElement("input");
- e.setAttribute("type", "checkbox");
- e.setAttribute("title", b);
- e.setAttribute("data-id", a);
- e.checked = c;
- e.addEventListener("change", this.onCheckboxChange.bind(this));
- d.appendChild(e);
- a = document.createElement("span");
- a.className = "netgis-clip-text";
- a.innerHTML = b;
- d.appendChild(a);
- this.container.appendChild(d);
- return e;
-};
-netgis.ContextMenu.prototype.addSlider = function (a, b, c, d, e, f) {
- var g = document.createElement("label");
- g.className = "netgis-noselect netgis-hover-d";
- var h = document.createElement("span");
- h.className = "netgis-clip-text";
- h.innerHTML = b;
- g.appendChild(h);
- h = document.createElement("span");
- g.appendChild(h);
- c || 0 === c || (c = 50);
- d || 0 === d || (d = 0);
- e || 0 === e || (e = 100);
- f || (f = 1);
- var k = document.createElement("input");
- k.setAttribute("type", "range");
- k.setAttribute("min", d);
- k.setAttribute("max", e);
- k.setAttribute("step", f);
- k.setAttribute("value", c);
- k.setAttribute("data-id", a);
- k.setAttribute("data-title", b);
- k.setAttribute("title", b + " " + c);
- k.addEventListener("change", this.onSliderChange.bind(this));
- k.addEventListener("input", this.onSliderChange.bind(this));
- h.appendChild(k);
- this.container.appendChild(g);
- return k;
-};
-netgis.ContextMenu.prototype.setVisible = function (a) {
- a ? this.container.classList.remove("netgis-hide") : this.container.classList.add("netgis-hide");
-};
-netgis.ContextMenu.prototype.setPosition = function (a, b) {
- var c = this.container.parentNode.getBoundingClientRect(),
- d = this.container.getBoundingClientRect();
- a + d.width > c.width && (a -= d.width);
- b + d.height > c.height && (b -= d.height);
- this.container.style.left = a + "px";
- this.container.style.top = b + "px";
-};
-netgis.ContextMenu.prototype.onContextMenuShow = function (a) {
- a = a.detail;
- this.clear();
- for (var b = 0; b < a.items.length; b++) {
- var c = a.items[b];
- switch (c.type) {
- case "slider":
- this.addSlider(c.id, c.title, c.val, c.min, c.max);
- }
- }
- this.setVisible(!0);
- this.setPosition(a.x, a.y);
-};
-netgis.ContextMenu.prototype.onContextMenu = function (a) {
- a.preventDefault();
- var b = a.clientX;
- a = a.clientY;
- this.setVisible(!0);
- this.setPosition(b, a);
- return !1;
-};
-netgis.ContextMenu.prototype.onParentClick = function (a) {
- this.container.contains(a.target) || this.setVisible(!1);
-};
-netgis.ContextMenu.prototype.onParentScroll = function (a) {
- this.setVisible(!1);
-};
-netgis.ContextMenu.prototype.onParentKeyDown = function (a) {
- 27 === (a.keyCode || a.which) && this.setVisible(!1);
-};
-netgis.ContextMenu.prototype.onButtonClick = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id");
- this.setVisible(!1);
- netgis.util.invoke(a, netgis.Events.CONTEXTMENU_BUTTON_CLICK, { id: b });
- netgis.Client.handleCommand(a, b);
-};
-netgis.ContextMenu.prototype.onCheckboxChange = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id");
- netgis.util.invoke(a, netgis.Events.CONTEXTMENU_CHECKBOX_CHANGE, { id: b, checked: a.checked });
-};
-netgis.ContextMenu.prototype.onSliderChange = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id"),
- c = Number.parseFloat(a.value),
- d = a.getAttribute("data-title");
- a.setAttribute("title", d + " " + c);
- netgis.util.invoke(a, netgis.Events.CONTEXTMENU_SLIDER_CHANGE, { id: b, val: c });
-};
-netgis = netgis || {};
-netgis.Controls = function (a) {
- this.config = a;
- this.initElements(a);
- this.initConfig(a);
-};
-netgis.Controls.Config = { buttons: [] };
-netgis.Controls.prototype.initElements = function (a) {
- this.container = document.createElement("section");
- this.container.className = "netgis-controls netgis-color-e netgis-text-a netgis-shadow netgis-round";
- if (a && a.modules && !0 === a.modules.geolocation) {
- this.popupGeoloc = new netgis.Popup({ direction: "right" });
- this.popupGeoloc.container.style.width = "60mm";
- this.popupGeoloc.setHeader("Ger\u00e4te-Standort");
- a = document.createElement("label");
- a.className = "netgis-hover-d netgis-clip-text netgis-clickable netgis-noselect";
- var b = document.createElement("input");
- b.setAttribute("type", "checkbox");
- b.addEventListener("change", this.onInputGeolocActiveChange.bind(this));
- a.appendChild(b);
- this.inputGeolocActive = b;
- b = document.createElement("span");
- b.innerHTML = "Aktiviert";
- a.appendChild(b);
- this.popupGeoloc.wrapper.appendChild(a);
- a = document.createElement("label");
- a.className = "netgis-hover-d netgis-clip-text netgis-clickable netgis-noselect";
- b = document.createElement("input");
- b.setAttribute("type", "checkbox");
- b.addEventListener("change", this.onInputGeolocCenterChange.bind(this));
- a.appendChild(b);
- this.inputGeolocCenter = b;
- b = document.createElement("span");
- b.innerHTML = "Zentriert";
- a.appendChild(b);
- this.popupGeoloc.wrapper.appendChild(a);
- }
-};
-netgis.Controls.prototype.initConfig = function (a) {
- if ((a = a.controls))
- if ((a = a.buttons))
- for (var b = 0; b < a.length; b++) {
- var c = a[b];
- this.addButton(c.id, c.icon, c.title);
- }
-};
-netgis.Controls.prototype.attachTo = function (a) {
- a.appendChild(this.container);
- this.popupGeoloc && this.popupGeoloc.attachTo(a);
- a.addEventListener(netgis.Events.GEOLOCATION_SHOW_OPTIONS, this.onGeolocShowOptions.bind(this));
- a.addEventListener(netgis.Events.GEOLOCATION_TOGGLE_ACTIVE, this.onGeolocToggleActive.bind(this));
- a.addEventListener(netgis.Events.GEOLOCATION_TOGGLE_CENTER, this.onGeolocToggleCenter.bind(this));
- a.addEventListener("pointerdown", this.onParentPointerDown.bind(this));
-};
-netgis.Controls.prototype.addButton = function (a, b, c) {
- var d = document.createElement("button");
- d.setAttribute("type", "button");
- d.setAttribute("data-id", a);
- d.className = "netgis-hover-a";
- d.innerHTML = b;
- d.title = c;
- d.addEventListener("pointerdown", this.onButtonClick.bind(this));
- this.container.appendChild(d);
- return d;
-};
-netgis.Controls.prototype.onButtonClick = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id");
- switch (b) {
- case "zoom_in":
- netgis.util.invoke(a, netgis.Events.MAP_ZOOM, { delta: 1 });
- break;
- case "zoom_out":
- netgis.util.invoke(a, netgis.Events.MAP_ZOOM, { delta: -1 });
- break;
- case "zoom_home":
- netgis.util.invoke(a, netgis.Events.MAP_ZOOM_HOME, null);
- break;
- default:
- netgis.Client.handleCommand(a, b);
- }
-};
-netgis.Controls.prototype.onGeolocShowOptions = function (a) {
- a = this.container.getElementsByTagName("button");
- for (var b = null, c = 0; c < a.length; c++) {
- var d = a[c].getAttribute("data-id");
- if (d && d.toUpperCase() === netgis.Commands.GEOLOCATION) {
- b = a[c];
- break;
- }
- }
- b &&
- (this.popupGeoloc.isVisible()
- ? this.popupGeoloc.hide()
- : (this.popupGeoloc.show(),
- (a = b.getBoundingClientRect()),
- this.popupGeoloc.setPosition(a.x + 4, a.y + 0.3 * a.height)));
-};
-netgis.Controls.prototype.onParentPointerDown = function (a) {
- netgis.util.insideElement(this.container, a.clientX, a.clientY) || (this.popupGeoloc && this.popupGeoloc.hide());
-};
-netgis.Controls.prototype.onInputGeolocActiveChange = function (a) {
- a = a.currentTarget;
- netgis.util.invoke(a, netgis.Events.GEOLOCATION_TOGGLE_ACTIVE, { on: a.checked });
-};
-netgis.Controls.prototype.onInputGeolocCenterChange = function (a) {
- a = a.currentTarget;
- netgis.util.invoke(a, netgis.Events.GEOLOCATION_TOGGLE_CENTER, { on: a.checked });
-};
-netgis.Controls.prototype.onGeolocToggleActive = function (a) {
- a.target !== this.inputGeolocActive && (this.inputGeolocActive.checked = a.detail.on);
-};
-netgis.Controls.prototype.onGeolocToggleCenter = function (a) {
- a.target !== this.inputGeolocCenter && (this.inputGeolocCenter.checked = a.detail.on);
-};
-netgis = netgis || {};
-netgis.Events = {
- CLIENT_CONTEXT_RESPONSE: "client-context-response",
- CLIENT_SET_MODE: "client-set-mode",
- PLUGIN_TOGGLE: "plugin-toggle",
- CONTROLS_BUTTON_CLICK: "controls-button-click",
- MAP_ZOOM: "map-zoom",
- MAP_ZOOM_HOME: "map-zoom-home",
- MAP_ZOOM_LONLAT: "map-zoom-lonlat",
- MAP_ZOOM_SCALE: "map-zoom-scale",
- MAP_ZOOM_LAYER: "map-zoom-layer",
- MAP_ZOOM_LEVEL: "map-zoom-level",
- MAP_LAYER_CREATE: "map-layer-create",
- MAP_LAYER_TOGGLE: "map-layer-toggle",
- MAP_LAYER_TRANSPARENCY: "map-layer-transparency",
- MAP_LAYER_ORDER: "map-layer-order",
- MAP_LAYER_DELETE: "map-layer-delete",
- MAP_VIEW_CHANGE: "map-view-change",
- MAP_VIEW_NEXT: "map-view-next",
- MAP_VIEW_PREV: "map-view-prev",
- MAP_CLICK: "map-click",
- MAP_FEATURE_ENTER: "map-feature-enter",
- MAP_FEATURE_CLICK: "map-feature-click",
- MAP_FEATURE_LEAVE: "map-feature-leave",
- MAP_SNAP_TOGGLE: "map-snap-toggle",
- MAP_EDIT_LAYER_CHANGE: "map-edit-layer-change",
- MAP_EDIT_LAYER_LOADED: "map-edit-layer-loaded",
- MAP_COPY_FEATURE_TO_EDIT: "map-copy-feature-to-edit",
- PANEL_TOGGLE: "panel-toggle",
- PANEL_RESIZE: "panel-resize",
- WINDOW_TOGGLE: "window-toggle",
- WINDOW_RESIZE: "window-resize",
- TREE_ITEM_CHANGE: "tree-item-change",
- TREE_ITEM_SLIDER_CHANGE: "tree-item-slider-change",
- TREE_ITEM_ORDER_CHANGE: "tree-item-order-change",
- TREE_BUTTON_CLICK: "tree-button-click",
- LAYERTREE_TOGGLE: "layertree-toggle",
- LEGEND_TOGGLE: "legend-toggle",
- GEOLOCATION_SHOW_OPTIONS: "geolocation-show-options",
- GEOLOCATION_TOGGLE_ACTIVE: "geolocation-toggle-active",
- GEOLOCATION_TOGGLE_CENTER: "geolocation-toggle-center",
- GEOLOCATION_CHANGE: "geolocation-change",
- TOOLBOX_TOGGLE: "toolbox-toggle",
- TOOLBOX_BUTTON_CLICK: "toolbox-button-click",
- MENU_BUTTON_CLICK: "menu-button-click",
- MENU_CHECKBOX_CHANGE: "menu-checkbox-change",
- MENU_SELECT_CHANGE: "menu-select-change",
- CONTEXTMENU_SHOW: "contextmenu-show",
- CONTEXTMENU_BUTTON_CLICK: "contextmenu-button-click",
- CONTEXTMENU_CHECKBOX_CHANGE: "contextmenu-checkbox-change",
- CONTEXTMENU_SLIDER_CHANGE: "contextmenu-slider-change",
- SEARCH_CHANGE: "search-change",
- SEARCH_SELECT: "search-select",
- SEARCH_CLEAR: "search-clear",
- SEARCHPLACE_TOGGLE: "searchplace-toggle",
- SEARCHPARCEL_TOGGLE: "searchparcel-toggle",
- SEARCHPARCEL_RESET: "searchparcel-reset",
- SEARCHPARCEL_PARCELS_RESPONSE: "searchparcel-parcels-response",
- SEARCHPARCEL_ITEM_ENTER: "searchparcel-item-enter",
- SEARCHPARCEL_ITEM_LEAVE: "searchparcel-item-leave",
- SEARCHPARCEL_ITEM_CLICK: "searchparcel-item-click",
- SEARCHPARCEL_ITEM_IMPORT: "searchparcel-item-import",
- MEASURE_CLEAR: "measure-clear",
- SELECT_MULTI_TOGGLE: "select-multi-toggle",
- DRAW_BUFFER_TOGGLE: "draw-buffer-toggle",
- DRAW_BUFFER_CHANGE: "draw-buffer-change",
- BUFFER_CHANGE: "buffer-change",
- BUFFER_ACCEPT: "buffer-accept",
- IMPORT_LAYER_SHOW: "import-layer-show",
- IMPORT_LAYER_ACCEPT: "import-layer-accept",
- IMPORT_LAYER_PREVIEW: "import-layer-preview",
- IMPORT_LAYER_PREVIEW_FEATURES: "import-layer-preview-features",
- IMPORT_GEOPORTAL_SUBMIT: "import-geoportal-submit",
- EXPORT_SHOW: "export-show",
- EXPORT_BEGIN: "export-begin",
- EXPORT_END: "export-end",
- TIMESLIDER_SHOW: "timeslider-show",
- TIMESLIDER_HIDE: "timeslider-hide",
- TIMESLIDER_SELECT: "timeslider-select",
-};
-netgis = netgis || {};
-netgis.Export = function (a) {
- this.config = a;
- this.initElements(a);
- this.initSections();
-};
-netgis.Export.Config = {
- title: "Export",
- logo: "",
- gif_worker: "/libs/gifjs/0.2.0/gif.worker.js",
- default_filename: "Export",
- default_margin: 10,
-};
-netgis.Export.prototype.initElements = function (a) {
- a = a["export"];
- this.modal = new netgis.Modal(a.title ? a.title : "Export");
- this.modal.container.classList.add("netgis-export");
- this.tabs = new netgis.Tabs(["PDF", "JPEG", "PNG", "GIF", "GeoJSON"]);
- this.tabs.container.style.position = "absolute";
- this.tabs.container.style.left = "0mm";
- this.tabs.container.style.right = "0mm";
- this.tabs.container.style.top = "12mm";
- this.tabs.container.style.bottom = "0mm";
- this.tabs.attachTo(this.modal.content);
-};
-netgis.Export.prototype.initSections = function () {
- this.sections = {};
- var a = 0;
- this.sections.pdf = this.tabs.getContentSection(a);
- a += 1;
- this.addInputNumber(this.sections.pdf, "Breite (Pixel):", 1600, 0);
- this.addInputNumber(this.sections.pdf, "H\u00f6he (Pixel):", 900, 0);
- this.addInputNumber(this.sections.pdf, "Seitenr\u00e4nder (Millimeter):", 10, 0);
- this.addCheckbox(this.sections.pdf, "Querformat", !0);
- this.addButton(
- this.sections.pdf,
- "Exportieren",
- this.onExportClickPDF.bind(this)
- );
- this.sections.jpeg = this.tabs.getContentSection(a);
- a += 1;
- this.addInputNumber(this.sections.jpeg, "Breite (Pixel):", 1600, 0);
- this.addInputNumber(this.sections.jpeg, "H\u00f6he (Pixel):", 900, 0);
- this.addCheckbox(this.sections.jpeg, "Querformat", !0);
- this.addButton(
- this.sections.jpeg,
- "Exportieren",
- this.onExportClickJPEG.bind(this)
- );
- this.sections.png = this.tabs.getContentSection(a);
- a += 1;
- this.addInputNumber(this.sections.png, "Breite (Pixel):", 1600, 0);
- this.addInputNumber(this.sections.png, "H\u00f6he (Pixel):", 900, 0);
- this.addCheckbox(this.sections.png, "Querformat", !0);
- this.addButton(
- this.sections.png,
- "Exportieren",
- this.onExportClickPNG.bind(this)
- );
- this.sections.gif = this.tabs.getContentSection(a);
- a += 1;
- this.addInputNumber(this.sections.gif, "Breite (Pixel):", 1600, 0);
- this.addInputNumber(this.sections.gif, "H\u00f6he (Pixel):", 900, 0);
- this.addCheckbox(this.sections.gif, "Querformat", !0);
- this.addButton(
- this.sections.gif,
- "Exportieren",
- this.onExportClickGIF.bind(this)
- );
- this.sections.geojson = this.tabs.getContentSection(a);
- this.addCheckbox(this.sections.geojson, "Nicht-Editierbare Geometrien einbeziehen", !1);
- this.addButton(
- this.sections.geojson,
- "Exportieren",
- this.onExportClickGeoJSON.bind(this)
- );
-};
-netgis.Export.prototype.attachTo = function (a) {
- a.appendChild(this.modal.container);
- a.addEventListener(netgis.Events.EXPORT_SHOW, this.onExportShow.bind(this));
- a.addEventListener(netgis.Events.EXPORT_END, this.onExportEnd.bind(this));
-};
-netgis.Export.prototype.addText = function (a, b) {
- var c = document.createElement("div");
- c.innerHTML = b;
- a.appendChild(c);
- return c;
-};
-netgis.Export.prototype.addButton = function (a, b, c) {
- var d = document.createElement("button");
- d.className = "netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow";
- d.setAttribute("type", "button");
- d.innerHTML = b;
- c && (d.onclick = c);
- a.appendChild(d);
- return d;
-};
-netgis.Export.prototype.addInputText = function (a, b, c) {
- var d = document.createElement("label");
- d.innerHTML = b;
- var e = document.createElement("input");
- e.setAttribute("type", "text");
- d.appendChild(e);
- if (c) {
- b = "list-" + netgis.util.stringToID(b);
- var f = document.createElement("datalist");
- f.setAttribute("id", b);
- for (var g = 0; g < c.length; g++) {
- var h = document.createElement("option");
- h.setAttribute("value", c[g]);
- f.appendChild(h);
- }
- a.appendChild(f);
- e.setAttribute("list", b);
- }
- a.appendChild(d);
- return e;
-};
-netgis.Export.prototype.addInputNumber = function (a, b, c, d, e) {
- var f = document.createElement("label");
- f.innerHTML = b;
- b = document.createElement("input");
- b.setAttribute("type", "number");
- (d || 0 === d) && b.setAttribute("min", d);
- e && b.setAttribute("max", e);
- b.setAttribute("value", c);
- f.appendChild(b);
- a.appendChild(f);
- return b;
-};
-netgis.Export.prototype.addCheckbox = function (a, b, c) {
- var d = document.createElement("label"),
- e = document.createElement("input");
- e.setAttribute("type", "checkbox");
- e.checked = c;
- d.appendChild(e);
- c = document.createElement("span");
- c.innerHTML = b;
- d.appendChild(c);
- a.appendChild(d);
- return e;
-};
-netgis.Export.prototype.onExportShow = function (a) {
- this.modal.show();
-};
-netgis.Export.prototype.onExportClickPDF = function (a) {
- var b = this.sections.pdf.getElementsByTagName("input");
- b = {
- format: "pdf",
- width: Number.parseInt(b[0].value),
- height: Number.parseInt(b[1].value),
- padding: Number.parseInt(b[2].value),
- landscape: b[3].checked,
- };
- netgis.util.invoke(a.target, netgis.Events.EXPORT_BEGIN, b);
-};
-netgis.Export.prototype.onExportClickJPEG = function (a) {
- var b = this.sections.pdf.getElementsByTagName("input");
- b = {
- format: "jpeg",
- width: Number.parseInt(b[0].value),
- height: Number.parseInt(b[1].value),
- landscape: b[3].checked,
- };
- netgis.util.invoke(a.target, netgis.Events.EXPORT_BEGIN, b);
-};
-netgis.Export.prototype.onExportClickPNG = function (a) {
- var b = this.sections.pdf.getElementsByTagName("input");
- b = {
- format: "png",
- width: Number.parseInt(b[0].value),
- height: Number.parseInt(b[1].value),
- landscape: b[3].checked,
- };
- netgis.util.invoke(a.target, netgis.Events.EXPORT_BEGIN, b);
-};
-netgis.Export.prototype.onExportClickGIF = function (a) {
- var b = this.sections.pdf.getElementsByTagName("input");
- b = {
- format: "gif",
- width: Number.parseInt(b[0].value),
- height: Number.parseInt(b[1].value),
- landscape: b[3].checked,
- };
- netgis.util.invoke(a.target, netgis.Events.EXPORT_BEGIN, b);
-};
-netgis.Export.prototype.onExportClickGeoJSON = function (a) {
- var b = { format: "geojson", nonEdits: this.sections.geojson.getElementsByTagName("input")[0].checked };
- netgis.util.invoke(a.target, netgis.Events.EXPORT_BEGIN, b);
-};
-netgis.Export.prototype.onExportEnd = function (a) {
- this.modal.hide();
-};
-netgis = netgis || {};
-netgis.Geolocation = function (a) {
- this.config = a;
- this.center = this.active = !1;
-};
-netgis.Geolocation.Config = { marker_color: "#3480eb", marker_title: "Geolocation", timeout: 1e4 };
-netgis.Geolocation.prototype.initConfig = function (a) {};
-netgis.Geolocation.prototype.attachTo = function (a) {
- this.container = a;
- a.addEventListener(netgis.Events.GEOLOCATION_TOGGLE_ACTIVE, this.onGeolocToggleActive.bind(this));
- a.addEventListener(netgis.Events.GEOLOCATION_TOGGLE_CENTER, this.onGeolocToggleCenter.bind(this));
-};
-netgis.Geolocation.prototype.setActive = function (a, b) {
- var c = this.config.geolocation;
- a
- ? navigator.geolocation
- ? ((this.watch = navigator.geolocation.watchPosition(
- this.onPositionChange.bind(this),
- this.onPositionError.bind(this),
- { timeout: c && c.timeout ? 1e3 * c.timeout : 1e4, maximumAge: 0, enableHighAccuracy: !0 }
- )),
- b || netgis.util.invoke(this.container, netgis.Events.GEOLOCATION_TOGGLE_ACTIVE, { on: !0 }))
- : this.error("Geolocation not supported by this device!")
- : (this.watch && (navigator.geolocation.clearWatch(this.watch), (this.watch = null)),
- b || netgis.util.invoke(this.container, netgis.Events.GEOLOCATION_TOGGLE_ACTIVE, { on: !1 }));
- this.active = a;
-};
-netgis.Geolocation.prototype.isActive = function () {
- return this.active;
-};
-netgis.Geolocation.prototype.error = function (a) {
- console.error(a);
- this.watch && (navigator.geolocation.clearWatch(this.watch), (this.watch = null));
- netgis.util.invoke(this.container, netgis.Events.GEOLOCATION_TOGGLE_ACTIVE, { on: !1 });
-};
-netgis.Geolocation.prototype.onActiveChange = function (a) {
- this.setActive(a.currentTarget.checked);
-};
-netgis.Geolocation.prototype.onCenterChange = function (a) {};
-netgis.Geolocation.prototype.onPositionChange = function (a) {
- netgis.util.invoke(this.container, netgis.Events.GEOLOCATION_CHANGE, {
- lon: a.coords.longitude,
- lat: a.coords.latitude,
- center: this.center,
- });
-};
-netgis.Geolocation.prototype.onPositionError = function (a) {
- this.error("Geolocation: " + a.message + " (" + a.code + ")");
-};
-netgis.Geolocation.prototype.onGeolocToggleActive = function (a) {
- a.target !== this.container && this.setActive(a.detail.on);
-};
-netgis.Geolocation.prototype.onGeolocToggleCenter = function (a) {
- a.target !== this.container && (this.center = a.detail.on);
-};
-netgis = netgis || {};
-netgis.Import = function (a) {
- this.config = a;
- this.initElements(a);
- this.initSections(a);
- this.initPreview();
-};
-netgis.Import.Config = {
- title: "Import Layer",
- preview: !0,
- wms_options: [],
- wfs_options: [],
- wfs_proxy: "",
- geopackage_lib: "/libs/geopackage/4.2.3/",
- geoportal_tab: !0,
- geoportal_search_url: "",
- geoportal_autocomplete: !0,
-};
-netgis.Import.prototype.initElements = function (a) {
- a = a["import"];
- this.modal = new netgis.Modal(a.title ? a.title : "Import");
- this.modal.container.classList.add("netgis-import");
- var b = "WMS WFS GeoJSON GML GeoPackage Spatialite Shapefile".split(" ");
- a.geoportal_tab && b.unshift("Geoportal");
- this.tabs = new netgis.Tabs(b);
- this.tabs.container.style.position = "absolute";
- this.tabs.container.style.left = "0mm";
- this.tabs.container.style.right = "0mm";
- this.tabs.container.style.top = "12mm";
- this.tabs.container.style.bottom = "0mm";
- this.tabs.attachTo(this.modal.content);
-};
-netgis.Import.prototype.initSections = function (a) {
- this.sections = {};
- var b = 0;
- a["import"] &&
- !0 === a["import"].geoportal_tab &&
- ((this.sections.geoportal = this.tabs.getContentSection(b)),
- (b += 1),
- this.sections.geoportal.classList.add("netgis-geoportal"),
- (this.geoportalSearch = new netgis.Search("Thema, Schlagwort...")),
- this.geoportalSearch.container.addEventListener(
- netgis.Events.SEARCH_CHANGE,
- this.onGeoportalSearchChange.bind(this)
- ),
- this.geoportalSearch.container.addEventListener(
- netgis.Events.SEARCH_CLEAR,
- this.onGeoportalSearchClear.bind(this)
- ),
- this.geoportalSearch.attachTo(this.sections.geoportal),
- (a = document.createElement("span")),
- (a.innerHTML = "Suche im Datenkatalog:"),
- this.geoportalSearch.label.insertBefore(a, this.geoportalSearch.label.firstChild),
- (this.geoportalLoader = document.createElement("div")),
- (this.geoportalLoader.className = "netgis-loader netgis-text-a netgis-hide"),
- (this.geoportalLoader.innerHTML = ""),
- this.sections.geoportal.appendChild(this.geoportalLoader),
- (this.geoportalResults = new netgis.Tree()),
- this.geoportalResults.container.addEventListener(
- netgis.Events.TREE_ITEM_CHANGE,
- this.onGeoportalTreeItemChange.bind(this)
- ),
- this.geoportalResults.attachTo(this.sections.geoportal),
- (this.geoportalSubmit = this.addButton(
- this.sections.geoportal,
- "Hinzuf\u00fcgen",
- this.onGeoportalSubmit.bind(this)
- )));
- this.sections.wms = this.tabs.getContentSection(b);
- b += 1;
- this.addInputText(this.sections.wms, "WMS-URL:", this.config["import"].wms_options);
- this.addButton(
- this.sections.wms,
- "Dienst laden",
- this.onWMSLoadClick.bind(this)
- );
- this.addInputText(this.sections.wms, "Bezeichnung:");
- this.addInputSelect(this.sections.wms, "Ebene:");
- this.addInputSelect(this.sections.wms, "Format:");
- this.addButton(
- this.sections.wms,
- "Hinzuf\u00fcgen",
- this.onWMSAcceptClick.bind(this)
- );
- this.showDetailsWMS(!1);
- this.sections.wfs = this.tabs.getContentSection(b);
- b += 1;
- this.addInputText(this.sections.wfs, "WFS-URL:", this.config["import"].wfs_options);
- this.addButton(
- this.sections.wfs,
- "Dienst laden",
- this.onWFSLoadClick.bind(this)
- );
- this.addInputText(this.sections.wfs, "Bezeichnung:");
- this.addInputSelect(this.sections.wfs, "Ebene:");
- this.addInputSelect(this.sections.wfs, "Format:");
- this.addButton(
- this.sections.wfs,
- "Hinzuf\u00fcgen",
- this.onWFSAcceptClick.bind(this)
- );
- this.showDetailsWFS(!1);
- this.sections.geojson = this.tabs.getContentSection(b);
- b += 1;
- this.addInputFile(this.sections.geojson, "GeoJSON-Datei:", ".geojson,.json");
- this.addText(
- this.sections.geojson,
- "Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
"
- );
- this.addButton(
- this.sections.geojson,
- "Datei laden",
- this.onGeoJSONAcceptClick.bind(this)
- );
- this.sections.gml = this.tabs.getContentSection(b);
- b += 1;
- this.addInputFile(this.sections.gml, "GML-Datei:", ".gml,.xml");
- this.addText(
- this.sections.gml,
- "Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
"
- );
- this.addButton(
- this.sections.gml,
- "Datei laden",
- this.onGMLAcceptClick.bind(this)
- );
- this.sections.geopackage = this.tabs.getContentSection(b);
- b += 1;
- this.addInputFile(this.sections.geopackage, "GeoPackage-Datei:", ".gpkg");
- this.addText(
- this.sections.geopackage,
- "Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
"
- );
- this.addButton(
- this.sections.geopackage,
- "Datei laden",
- this.onGeoPackageAcceptClick.bind(this)
- );
- this.sections.spatialite = this.tabs.getContentSection(b);
- b += 1;
- this.addInputFile(this.sections.spatialite, "Spatialite-Datei:", ".sqlite");
- this.addText(
- this.sections.spatialite,
- "Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
"
- );
- this.addButton(
- this.sections.spatialite,
- "Datei laden",
- this.onSpatialiteAcceptClick.bind(this)
- );
- this.sections.shapefile = this.tabs.getContentSection(b);
- this.addInputFile(this.sections.shapefile, "Shapefile-Zip-Datei:", ".zip");
- this.addText(
- this.sections.shapefile,
- "Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
"
- );
- this.addButton(
- this.sections.shapefile,
- "Datei laden",
- this.onShapefileAcceptClick.bind(this)
- );
-};
-netgis.Import.prototype.initPreview = function () {
- this.preview = new netgis.Modal("Vorschau");
- this.preview.attachTo(this.modal.content);
- this.previewMapContainer = document.createElement("div");
- this.previewMapContainer.className = "netgis-preview-map";
- this.preview.content.appendChild(this.previewMapContainer);
- if (ol) {
- var a = this.config.map;
- a = {
- projection: a.projection,
- center: a.centerLonLat ? ol.proj.fromLonLat(a.centerLonLat) : a.center,
- zoom: a.zoom,
- };
- this.previewMap = new ol.Map({
- target: this.previewMapContainer,
- view: new ol.View(a),
- pixelRatio: 1,
- moveTolerance: 3,
- controls: [],
- });
- this.previewMap.getView().padding = [10, 10, 10, 10];
- this.previewMap.addLayer(new ol.layer.Tile({ source: new ol.source.OSM() }));
- }
- this.previewTree = new netgis.Tree();
- this.previewTree.container.classList.add("netgis-preview-tree");
- this.previewTree.attachTo(this.preview.content);
- this.previewTree.container.addEventListener(
- netgis.Events.TREE_ITEM_CHANGE,
- this.onPreviewTreeItemChange.bind(this)
- );
- this.previewSubmit = document.createElement("button");
- this.previewSubmit.setAttribute("type", "button");
- this.previewSubmit.className =
- "netgis-import-submit netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow";
- this.previewSubmit.innerHTML = "Hinzuf\u00fcgen";
- this.previewSubmit.addEventListener("click", this.onPreviewSubmitClick.bind(this));
- this.preview.content.appendChild(this.previewSubmit);
-};
-netgis.Import.prototype.attachTo = function (a) {
- a.appendChild(this.modal.container);
- a.addEventListener(netgis.Events.IMPORT_LAYER_SHOW, this.onImportShow.bind(this));
- a.addEventListener(netgis.Events.IMPORT_LAYER_PREVIEW_FEATURES, this.onImportPreviewFeatures.bind(this));
-};
-netgis.Import.prototype.addText = function (a, b) {
- var c = document.createElement("div");
- c.innerHTML = b;
- a.appendChild(c);
- return c;
-};
-netgis.Import.prototype.addButton = function (a, b, c) {
- var d = document.createElement("button");
- d.className = "netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow";
- d.setAttribute("type", "button");
- d.innerHTML = b;
- c && (d.onclick = c);
- a.appendChild(d);
- return d;
-};
-netgis.Import.prototype.addInputText = function (a, b, c) {
- var d = document.createElement("label");
- d.innerHTML = b;
- var e = document.createElement("input");
- e.setAttribute("type", "text");
- d.appendChild(e);
- if (c) {
- b = "list-" + netgis.util.stringToID(b);
- var f = document.createElement("datalist");
- f.setAttribute("id", b);
- for (var g = 0; g < c.length; g++) {
- var h = document.createElement("option");
- h.setAttribute("value", c[g]);
- f.appendChild(h);
- }
- a.appendChild(f);
- e.setAttribute("list", b);
- }
- a.appendChild(d);
- return e;
-};
-netgis.Import.prototype.addInputSelect = function (a, b, c) {
- c = document.createElement("label");
- c.innerHTML = b;
- b = document.createElement("select");
- c.appendChild(b);
- a.appendChild(c);
- return b;
-};
-netgis.Import.prototype.addInputFile = function (a, b, c) {
- var d = document.createElement("label");
- d.innerHTML = b;
- b = document.createElement("input");
- b.setAttribute("type", "file");
- b.setAttribute("accept", c);
- d.appendChild(b);
- a.appendChild(d);
- return b;
-};
-netgis.Import.prototype.getLayerOrder = function () {
- return 1e4;
-};
-netgis.Import.prototype.showDetailsWMS = function (a) {
- var b = this.sections.wms,
- c = b.getElementsByTagName("label");
- b = b.getElementsByTagName("button");
- a
- ? (c[1].classList.remove("netgis-hide"),
- c[2].classList.remove("netgis-hide"),
- c[3].classList.remove("netgis-hide"),
- b[1].classList.remove("netgis-hide"))
- : (c[1].classList.add("netgis-hide"),
- c[2].classList.add("netgis-hide"),
- c[3].classList.add("netgis-hide"),
- b[1].classList.add("netgis-hide"));
-};
-netgis.Import.prototype.showDetailsWFS = function (a) {
- var b = this.sections.wfs,
- c = b.getElementsByTagName("label");
- b = b.getElementsByTagName("button");
- a
- ? (c[1].classList.remove("netgis-hide"),
- c[2].classList.remove("netgis-hide"),
- c[3].classList.remove("netgis-hide"),
- b[1].classList.remove("netgis-hide"))
- : (c[1].classList.add("netgis-hide"),
- c[2].classList.add("netgis-hide"),
- c[3].classList.add("netgis-hide"),
- b[1].classList.add("netgis-hide"));
-};
-netgis.Import.prototype.submitImportLayer = function (a) {
- !0 === this.config["import"].preview
- ? netgis.util.invoke(this.modal.container, netgis.Events.IMPORT_LAYER_PREVIEW, a)
- : (this.config.layers.push(a),
- netgis.util.invoke(this.modal.container, netgis.Events.IMPORT_LAYER_ACCEPT, a),
- this.modal.hide());
-};
-netgis.Import.prototype.onImportShow = function (a) {
- this.modal.show();
- this.tabs.updateHeaderScroll();
-};
-netgis.Import.prototype.onWMSLoadClick = function (a) {
- this.showDetailsWMS(!1);
- a = this.sections.wms.getElementsByTagName("input")[0].value;
- a = a.trim();
- if (!(1 > a.length)) {
- var b = netgis.util.parseURL(a);
- a = b.base;
- b = b.parameters;
- b.push("request=GetCapabilities");
- b = b.join("&");
- -1 === b.search("service=") && (b += "&service=WMS");
- netgis.util.request(a + "?" + b, this.onWMSCapsResponse.bind(this));
- }
-};
-netgis.Import.prototype.onWMSCapsResponse = function (a) {
- var b = new DOMParser().parseFromString(a, "text/xml"),
- c = b.documentElement;
- b = b.getElementsByTagName("parsererror");
- for (var d = 0; d < b.length; d++) console.error("WMS caps parser error:", b[d].textContent);
- 0 < b.length && alert(0 < a.length ? a : b[0].textContent);
- a = this.sections.wms;
- var e = a.getElementsByTagName("input");
- a = a.getElementsByTagName("select");
- b = a[0];
- a = a[1];
- for (d = b.options.length - 1; 0 <= d; d--) b.options.remove(d);
- for (d = a.options.length - 1; 0 <= d; d--) a.options.remove(d);
- switch (c.nodeName) {
- default:
- case "HTML":
- console.warn("could not detect WMS service", c);
- break;
- case "WMS_Capabilities":
- case "WMT_MS_Capabilities":
- c.getAttribute("version");
- d = c.getElementsByTagName("Service")[0].getElementsByTagName("Title")[0].textContent;
- e[1].value = d;
- d = c.getElementsByTagName("Layer");
- for (var f = [], g = 0; g < d.length; g++) {
- e = d[g];
- var h = e.getElementsByTagName("Name")[0].textContent,
- k = e.getElementsByTagName("Title")[0].textContent;
- f.push({ name: h, title: k });
- e = document.createElement("option");
- e.text = k;
- e.value = h;
- b.options.add(e);
- }
- c = c.getElementsByTagName("GetMap")[0].getElementsByTagName("Format");
- b = [];
- for (d = 0; d < c.length; d++)
- (e = c[d]),
- (f = e.textContent),
- -1 !== f.search("image") &&
- (b.push(f),
- (e = document.createElement("option")),
- (e.text = f),
- (e.value = f),
- a.options.add(e));
- }
- this.showDetailsWMS(!0);
-};
-netgis.Import.prototype.onWMSAcceptClick = function (a) {
- a = this.sections.wms;
- var b = a.getElementsByTagName("input"),
- c = a.getElementsByTagName("select"),
- d = "import_" + netgis.util.getTimeStamp(!0),
- e = b[0].value;
- b = c[0].selectedOptions[0].innerText;
- var f = c[0].value;
- c = c[1].value;
- e = netgis.util.replace(e, "request=", "oldrequest=");
- e = netgis.util.replace(e, "Request=", "oldrequest=");
- var g = netgis.util.parseURL(e);
- e = g.base;
- g = g.parameters;
- g = g.join("&");
- -1 === g.search("service=") && (g += "&service=WMS");
- e = e + "?" + g;
- g = {
- id: d,
- folder: null,
- active: !0,
- query: !0,
- order: this.getLayerOrder(),
- type: netgis.LayerTypes.WMS,
- url: e,
- title: b,
- name: f,
- format: c,
- tiled: !0,
- };
- this.config.layers.push(g);
- netgis.util.invoke(a, netgis.Events.IMPORT_LAYER_ACCEPT, g);
- this.modal.hide();
-};
-netgis.Import.prototype.onWFSLoadClick = function (a) {
- this.showDetailsWFS(!1);
- var b = this.sections.wfs.getElementsByTagName("input")[0].value;
- b = b.trim();
- if (!(1 > b.length)) {
- var c = b.indexOf("?");
- a = -1 < c ? b.substr(0, c) : b;
- var d = ["request=GetCapabilities"];
- if (-1 < c)
- for (b = b.substr(c + 1), b = b.split("&"), c = 0; c < b.length; c++) {
- var e = b[c];
- e = e.toLowerCase();
- -1 < e.search("service")
- ? d.push(e)
- : -1 < e.search("version")
- ? d.push(e)
- : -1 < e.search("request") || d.push(e);
- }
- d = d.join("&");
- -1 === d.search("service=") && (d += "&service=WFS");
- a = a + "?" + d;
- this.config["import"].wfs_proxy && (a = this.config["import"].wfs_proxy + a);
- netgis.util.request(a, this.onWFSCapsResponse.bind(this));
- }
-};
-netgis.Import.prototype.onWFSCapsResponse = function (a) {
- var b = new DOMParser().parseFromString(a, "text/xml"),
- c = b.documentElement;
- b = b.getElementsByTagName("parsererror");
- for (var d = 0; d < b.length; d++) console.error("WFS caps parser error:", b[d].textContent);
- 0 < b.length && alert(0 < a.length ? a : b[0].textContent);
- a = this.sections.wfs;
- var e = a.getElementsByTagName("input");
- a = a.getElementsByTagName("select");
- b = a[0];
- a = a[1];
- for (d = b.options.length - 1; 0 <= d; d--) b.options.remove(d);
- for (d = a.options.length - 1; 0 <= d; d--) a.options.remove(d);
- switch (c.nodeName) {
- default:
- case "HTML":
- console.error("could not detect WFS service", c);
- break;
- case "WFS_Capabilities":
- case "wfs:WFS_Capabilities":
- c.getAttribute("version");
- d = c.getElementsByTagName("ows:ServiceIdentification")[0].getElementsByTagName("ows:Title")[0].textContent;
- e[1].value = d;
- d = c.getElementsByTagName("FeatureType");
- for (var f = [], g = 0; g < d.length; g++) {
- e = d[g];
- var h = e.getElementsByTagName("Name")[0].textContent,
- k = e.getElementsByTagName("Title")[0].textContent;
- f.push({ name: h, title: k });
- e = document.createElement("option");
- e.text = k;
- e.value = h;
- b.options.add(e);
- }
- c = c.getElementsByTagName("ows:Operation");
- b = null;
- for (e = 0; e < c.length; e++)
- if ("GetFeature" === c[e].getAttribute("name")) {
- b = c[e];
- break;
- }
- c = null;
- if (b)
- for (b = b.getElementsByTagName("ows:Parameter"), e = 0; e < b.length; e++)
- if (((d = b[e]), "outputFormat" === d.getAttribute("name"))) {
- b = d.getElementsByTagName("ows:Value");
- for (d = 0; d < b.length; d++)
- (e = b[d]),
- (f = e.textContent),
- (e = document.createElement("option")),
- (e.text = f),
- (e.value = f),
- a.options.add(e),
- -1 < f.search("json") && (c = f);
- break;
- }
- c && (a.value = c);
- }
- this.showDetailsWFS(!0);
-};
-netgis.Import.prototype.onWFSAcceptClick = function (a) {
- a = this.sections.wfs;
- var b = a.getElementsByTagName("input"),
- c = a.getElementsByTagName("select"),
- d = "import_" + netgis.util.getTimeStamp(!0);
- b = b[0].value;
- var e = c[0].selectedOptions[0].innerText,
- f = c[0].value;
- c = c[1].value;
- b = netgis.util.replace(b, "request=", "oldrequest=");
- b = netgis.util.replace(b, "Request=", "oldrequest=");
- this.config["import"].wfs_proxy && (b = this.config["import"].wfs_proxy + b);
- d = {
- id: d,
- folder: null,
- active: !0,
- order: this.getLayerOrder(),
- style: this.config.styles["import"],
- title: e,
- type: netgis.LayerTypes.WFS,
- url: b,
- name: f,
- format: c,
- };
- this.config.layers.push(d);
- netgis.util.invoke(a, netgis.Events.IMPORT_LAYER_ACCEPT, d);
- this.modal.hide();
-};
-netgis.Import.prototype.onGeoJSONAcceptClick = function (a) {
- if ((a = this.sections.geojson.getElementsByTagName("input")[0].files[0])) {
- var b = new FileReader();
- b.title = a.name;
- b.onload = this.onGeoJSONLoad.bind(this);
- b.readAsText(a);
- } else alert("No file selected!");
-};
-netgis.Import.prototype.onGeoJSONLoad = function (a) {
- var b = a.target;
- a = b.title;
- b = b.result;
- a = {
- id: "import_" + netgis.util.getTimeStamp(!0),
- folder: null,
- active: !0,
- order: this.getLayerOrder(),
- style: this.config.styles["import"],
- title: a,
- type: netgis.LayerTypes.GEOJSON,
- data: b,
- };
- this.submitImportLayer(a);
-};
-netgis.Import.prototype.onGMLAcceptClick = function (a) {
- if ((a = this.sections.gml.getElementsByTagName("input")[0].files[0])) {
- var b = new FileReader();
- b.title = a.name;
- b.onload = this.onGMLLoad.bind(this);
- b.readAsText(a);
- } else alert("No file selected!");
-};
-netgis.Import.prototype.onGMLLoad = function (a) {
- var b = a.target;
- a = b.result;
- var c = "import_" + netgis.util.getTimeStamp(!0);
- b = b.title;
- a = {
- id: c,
- folder: null,
- active: !0,
- order: this.getLayerOrder(),
- style: this.config.styles["import"],
- title: b,
- type: netgis.LayerTypes.GML,
- data: a,
- };
- this.submitImportLayer(a);
-};
-netgis.Import.prototype.onGeoPackageAcceptClick = function (a) {
- if ((a = this.sections.geopackage.getElementsByTagName("input")[0].files[0])) {
- var b = new FileReader();
- b.title = a.name;
- b.onload = this.onGeoPackageLoad.bind(this);
- b.readAsArrayBuffer(a);
- } else alert("No file selected!");
-};
-netgis.Import.prototype.onGeoPackageLoad = function (a) {
- var b = a.target;
- a = b.result;
- var c = "import_" + netgis.util.getTimeStamp(!0);
- b = b.title;
- a = {
- id: c,
- folder: null,
- active: !0,
- order: this.getLayerOrder(),
- style: this.config.styles["import"],
- title: b,
- type: netgis.LayerTypes.GEOPACKAGE,
- data: a,
- };
- this.submitImportLayer(a);
-};
-netgis.Import.prototype.onSpatialiteAcceptClick = function (a) {
- if ((a = this.sections.spatialite.getElementsByTagName("input")[0].files[0])) {
- var b = new FileReader();
- b.title = a.name;
- b.onload = this.onSpatialiteLoad.bind(this);
- b.readAsArrayBuffer(a);
- } else alert("No file selected!");
-};
-netgis.Import.prototype.onSpatialiteLoad = function (a) {
- var b = a.target;
- a = b.result;
- var c = "import_" + netgis.util.getTimeStamp(!0);
- b = b.title;
- a = {
- id: c,
- folder: null,
- active: !0,
- order: this.getLayerOrder(),
- style: this.config.styles["import"],
- title: b,
- type: netgis.LayerTypes.SPATIALITE,
- data: a,
- };
- this.submitImportLayer(a);
-};
-netgis.Import.prototype.onShapefileAcceptClick = function (a) {
- if ((a = this.sections.shapefile.getElementsByTagName("input")[0].files[0])) {
- var b = new FileReader();
- b.title = a.name;
- b.onload = this.onShapefileLoad.bind(this);
- b.readAsArrayBuffer(a);
- } else alert("No file selected!");
-};
-netgis.Import.prototype.onShapefileLoad = function (a) {
- var b = a.target;
- a = b.result;
- var c = "import_" + netgis.util.getTimeStamp(!0);
- b = b.title;
- a = {
- id: c,
- folder: null,
- active: !0,
- order: this.getLayerOrder(),
- style: this.config.styles["import"],
- title: b,
- type: netgis.LayerTypes.SHAPEFILE,
- data: a,
- };
- this.submitImportLayer(a);
-};
-/* Import feature*/
-netgis.Import.prototype.onImportPreviewFeatures = function (a) {
- var b = a.detail,
- c = b.layer;
- this.previewTree.clear();
- a = this.previewMap.getLayers().getArray();
- for (var d = 1; d < a.length; d++) this.previewMap.removeLayer(a[d]);
- if (ol) {
- a = this.config.styles["import"];
- a = new ol.style.Style({
- fill: new ol.style.Fill({ color: a.fill }),
- stroke: new ol.style.Stroke({ color: a.stroke, width: a.width }),
- });
- c.setStyle(a);
- this.previewMap.addLayer(c);
- var e = this.previewTree.addFolder(null, b.id, b.title);
- a = c.getSource().getFeatures();
- if (0 === a.length) {
- var f = this;
- c.getSource().on("addfeature", function (a) {
- f.featureLoadTimeout && window.clearTimeout(f.featureLoadTimeout);
- f.featureLoadTimeout = window.setTimeout(function () {
- var a = c.getSource().getFeatures();
- f.updatePreviewFeatures(a, e, c, b);
- f.featureLoadTimeout = null;
- }, 100);
- });
- } else this.updatePreviewFeatures(a, e, c, b);
- } else console.error("import preview only supported with OL map renderer", c);
-};
-netgis.Import.prototype.updatePreviewFeatures = function (a, b, c, d) {
- for (var e = 0; e < a.length; e++) {
- var f = a[e],
- g = f.getId(),
- h = f.getProperties();
- g || ((g = e + 1), f.setId(g));
- var k = null,
- l;
- for (l in h)
- switch (l.toLowerCase()) {
- case "name":
- k = h[l];
- break;
- case "title":
- k = h[l];
- break;
- case "id":
- k = h[l];
- break;
- case "gid":
- k = h[l];
- break;
- case "oid":
- k = h[l];
- break;
- case "objectid":
- k = h[l];
- }
- k || (k = g);
- h = f.getGeometry();
- if (h instanceof ol.geom.Polygon || h instanceof ol.geom.MultiPolygon)
- k += " (" + netgis.util.formatArea(h.getArea()) + ")";
- else if (h instanceof ol.geom.LineString) k += " (" + netgis.util.formatArea(h.getLength()) + ")";
- else if (h instanceof ol.geom.MultiLineString) {
- f = 0;
- h = h.getLineStrings();
- for (var m = 0; m < h.length; m++) f += h[m].getLength();
- k += " (" + netgis.util.formatArea(f) + ")";
- }
- this.previewTree.addCheckbox(b, g, "Feature " + k, !0);
- }
- this.previewTree.setFolderOpen(d.id, !0);
- this.previewTree.updateFolderChecks();
- this.preview.show();
- this.previewMap.updateSize();
- this.previewMap.getView().fit(c.getSource().getExtent());
-};
-netgis.Import.prototype.onPreviewSubmitClick = function (a) {
- var b = this.previewTree.container.getElementsByClassName("netgis-folder")[0];
- a = b.getAttribute("data-id");
- b = b.getElementsByTagName("span")[0].innerText;
- for (
- var c = this.previewTree.container.getElementsByTagName("input"),
- d = this.previewMap.getLayers().getArray()[1].getSource(),
- e = [],
- f = 1;
- f < c.length;
- f++
- ) {
- var g = c[f];
- g.checked && ((g = g.getAttribute("data-id")), (g = d.getFeatureById(g)), e.push(g));
- }
- c = new ol.format.GeoJSON().writeFeaturesObject(e);
- d = this.previewMap.getView().getProjection().getCode();
- c.crs = { type: "name", properties: { name: "urn:ogc:def:crs:" + d.replace(":", "::") } };
- a = {
- id: a,
- folder: null,
- active: !0,
- order: this.getLayerOrder(),
- style: this.config.styles["import"],
- title: b,
- type: netgis.LayerTypes.GEOJSON,
- data: c,
- };
- this.config.layers.push(a);
- netgis.util.invoke(this.preview.container, netgis.Events.IMPORT_LAYER_ACCEPT, a);
- this.preview.hide();
- this.modal.hide();
-};
-netgis.Import.prototype.onPreviewTreeItemChange = function (a) {
- a = a.detail;
- var b = this.previewMap.getLayers().getArray()[1].getSource().getFeatureById(a.id);
- a.checked ? b.setStyle(null) : b.setStyle(new ol.style.Style({}));
-};
-netgis.Import.prototype.onGeoportalSearchKeyUp = function (a) {
- switch (a.keyCode) {
- case 13:
- break;
- case 27:
- break;
- default:
- this.onGeoportalSearchChange();
- }
-};
-netgis.Import.prototype.onGeoportalSearchChange = function (a) {
- a = a.detail.query;
- if (0 < a.length) {
- this.geoportalLoader.classList.remove("netgis-hide");
- a = netgis.util.replace(a, " ", ",");
- var b = this.config["import"].geoportal_search_url;
- b = netgis.util.replace(b, "{query}", window.encodeURIComponent(a));
- netgis.util.request(b, this.onGeoportalSearchResponse.bind(this));
- this.geoportalSearch.showClearButton(!0);
- }
-};
-netgis.Import.prototype.onGeoportalSearchClear = function (a) {
- this.geoportalResults.clear();
-};
-netgis.Import.prototype.onGeoportalSearchResponse = function (a) {
- function b(a) {
- if (a && a.layer) for (var c = 0; c < a.layer.length; c++) b(a.layer[c]);
- else a && e.push(a);
- return e.length;
- }
- a = JSON.parse(a);
- this.geoportalResults.clear();
- this.geoportalDataRaw = a = a.wms.srv;
- this.geoportalData = [];
- for (var c = 0; c < a.length; c++) {
- var d = a[c];
- var e = [];
- var f = b(d);
- f = this.geoportalResults.addFolder(null, c, d.title + " (" + f + ")");
- f.setAttribute("title", d["abstract"]);
- for (var g = 0; g < e.length; g++) this.geoportalResults.addCheckbox(f, g, e[g].title);
- d.children = e;
- this.geoportalData.push(d);
- }
- this.geoportalLoader.classList.add("netgis-hide");
-};
-netgis.Import.prototype.onGeoportalTreeItemChange = function (a) {
- a = this.geoportalResults.container.getElementsByClassName("netgis-item");
- for (var b = 0, c = 0; c < a.length; c++) a[c].getElementsByTagName("input")[0].checked && (b += 1);
- this.geoportalSubmit.getElementsByClassName("netgis-count")[0].innerHTML = 0 === b ? "" : " (" + b + ")";
-};
-netgis.Import.prototype.onGeoportalSubmit = function (a) {
- a = this.geoportalResults.container.getElementsByClassName("netgis-item");
- for (var b = 0, c = 0; c < a.length; c++) {
- var d = a[c],
- e = d.getElementsByTagName("input")[0];
- if (e.checked) {
- b += 1;
- e = e.getAttribute("data-id");
- d = d.parentNode.parentNode.parentNode.getAttribute("data-id");
- var f = this.geoportalData[d],
- g = f.children[e],
- h = f.title;
- f = f.getMapUrl;
- var k = g.name;
- g = g.title;
- d = "geoportal_" + d;
- e = d + "_" + e;
- netgis.util.invoke(this.sections.geoportal, netgis.Events.IMPORT_GEOPORTAL_SUBMIT, {
- folder: { id: d, title: h },
- layer: { id: e, url: f, name: k, title: g },
- });
- }
- }
- 0 < b && this.modal.hide();
-};
-netgis = netgis || {};
-netgis.Info = function (a) {
- this.config = a;
- this.queryLayers = {};
- this.popup = new netgis.Popup();
- this.popup.setHeader("Abfrage");
- this.initConfig(a);
-};
-netgis.Info.Config = { default_format: "text/plain", proxy: "" };
-netgis.Info.prototype.initConfig = function (a) {
- a = a.layers;
- for (var b = a.length - 1; 0 <= b; b--) {
- var c = a[b];
- !0 === c.active && this.isLayerQueryable(c)
- ? (this.queryLayers[c.id] = c)
- : this.queryLayers[c.id] && delete this.queryLayers[c.id];
- }
-};
-netgis.Info.prototype.attachTo = function (a) {
- this.popup.attachTo(a);
- a.addEventListener(netgis.Events.CLIENT_CONTEXT_RESPONSE, this.onClientContextResponse.bind(this));
- a.addEventListener(netgis.Events.CLIENT_SET_MODE, this.onClientSetMode.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_TOGGLE, this.onMapLayerToggle.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_CREATE, this.onMapLayerCreate.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_DELETE, this.onMapLayerDelete.bind(this));
- a.addEventListener(netgis.Events.IMPORT_LAYER_ACCEPT, this.onImportLayerAccept.bind(this));
- a.addEventListener(netgis.Events.IMPORT_GEOPORTAL_SUBMIT, this.onImportGeoportalSubmit.bind(this));
- a.addEventListener(netgis.Events.MAP_CLICK, this.onMapClick.bind(this));
- a.addEventListener(netgis.Events.MAP_FEATURE_CLICK, this.onMapFeatureClick.bind(this));
-};
-netgis.Info.prototype.isLayerQueryable = function (a) {
- var b = !1;
- if (!0 === a.query) b = !0;
- else if (!1 !== a.query)
- switch (a.type) {
- case netgis.LayerTypes.WMS:
- case netgis.LayerTypes.WMST:
- b = !0;
- }
- return b;
-};
-netgis.Info.prototype.addSection = function (a, b, c) {
- this.popup.addContent(
- [
- !0 === c ? "" : "",
- "",
- a,
- "
",
- b,
- "
",
- ].join("")
- );
-};
-netgis.Info.prototype.onClientContextResponse = function (a) {
- this.initConfig(a.detail.context.config);
-};
-netgis.Info.prototype.onClientSetMode = function (a) {
- this.popup.hide();
-};
-netgis.Info.prototype.onMapLayerToggle = function (a) {
- var b = a.detail;
- a = b.id;
- if (b.on) {
- b = this.config.layers;
- for (var c = null, d = 0; d < b.length; d++)
- if (b[d].id === a) {
- c = b[d];
- break;
- }
- c && this.isLayerQueryable(c) && (this.queryLayers[a] = c);
- } else delete this.queryLayers[a];
-};
-netgis.Info.prototype.onMapLayerCreate = function (a) {
- a = a.detail;
- this.isLayerQueryable(a) && (this.queryLayers[a.id] = a);
-};
-netgis.Info.prototype.onMapLayerDelete = function (a) {
- delete this.queryLayers[a.detail.id];
-};
-netgis.Info.prototype.onImportLayerAccept = function (a) {
- a = a.detail;
- this.isLayerQueryable(a) && (this.queryLayers[a.id] = a);
-};
-netgis.Info.prototype.onImportGeoportalSubmit = function (a) {};
-netgis.Info.prototype.onMapClick = function (a) {
- a = a.detail;
- if (a.mode === netgis.Modes.SEARCH_PARCEL) this.popup.clearContent(), this.popup.hide();
- else if (a.mode === netgis.Modes.VIEW) {
- var b = this.config.info;
- this.popup.container !== a.overlay && this.popup.attachTo(a.overlay);
- this.popup.clearContent();
- var c = 0,
- d;
- for (d in this.queryLayers) {
- var e = this.queryLayers[d];
- if (a.info && a.info[d]) {
- var f = a.info[d];
- b.proxy && 0 < b.proxy.length && (f = b.proxy + f);
- netgis.util.request(f, this.onLayerResponseWMS.bind(this), { title: e.title });
- c += 1;
- } else {
- if (!e.query_url || "" === e.query_url)
- switch (e.type) {
- case netgis.LayerTypes.WMS:
- case netgis.LayerTypes.WMST:
- f = e.url;
- var g = [
- "SERVICE=WMS",
- "VERSION=1.1.1",
- "REQUEST=GetFeatureInfo",
- "STYLES=",
- "LAYERS=" + window.encodeURIComponent(e.name),
- "QUERY_LAYERS=" + window.encodeURIComponent(e.name),
- "BBOX=" + a.view.bbox.join(","),
- "SRS=" + a.view.projection,
- "WIDTH=" + a.view.width,
- "HEIGHT=" + a.view.height,
- "X=" + Math.round(a.pixel[0]),
- "Y=" + Math.round(a.pixel[1]),
- "INFO_FORMAT=" + (b && b.default_format ? b.default_format : "text/plain"),
- ];
- f = f + (-1 === f.indexOf("?") ? "?" : "") + g.join("&");
- b.proxy && 0 < b.proxy.length && (f = b.proxy + f);
- netgis.util.request(f, this.onLayerResponseWMS.bind(this), { title: e.title });
- c += 1;
- }
- (f = e.query_url) &&
- "" !== f &&
- ((f = netgis.util.replace(f, "{bbox}", a.view.bbox.join(","))),
- (f = netgis.util.replace(f, "{proj}", a.view.projection)),
- (f = netgis.util.replace(f, "{width}", a.view.width)),
- (f = netgis.util.replace(f, "{height}", a.view.height)),
- (f = netgis.util.replace(f, "{x}", a.coords[0])),
- (f = netgis.util.replace(f, "{y}", a.coords[1])),
- (f = netgis.util.replace(f, "{px}", a.pixel[0])),
- (f = netgis.util.replace(f, "{py}", a.pixel[1])),
- (f = netgis.util.replace(f, "{lon}", a.lon)),
- (f = netgis.util.replace(f, "{lat}", a.lat)),
- b.proxy && 0 < b.proxy.length && (f = b.proxy + f),
- netgis.util.request(f, this.onLayerResponseWMS.bind(this), { title: e.title }),
- (c += 1));
- }
- }
- 0 < c ? (this.popup.showLoader(), this.popup.show()) : this.popup.hide();
- }
-};
-netgis.Info.prototype.onMapFeatureClick = function (a) {
- var b = a.detail,
- c = b.properties;
- if (b.mode === netgis.Modes.SEARCH_PARCEL) this.popup.clearContent(), this.popup.hide();
- else {
- a = null;
- var d = [],
- e = "geometry fill fill-opacity stroke stroke-opacity stroke-width styleUrl".split(" ");
- for (g in c)
- if (!(-1 < e.indexOf(g))) {
- var f = c[g];
- d.push([g, f]);
- a ||
- ("name" === g && "" !== f
- ? (a = f)
- : "title" === g && "" !== f
- ? (a = f)
- : "id" === g && f && (a = f));
- }
- !a && b.id && (a = b.id);
- a = a ? 'Feature "' + a + '"' : "Feature";
- "geolocation" === b.id &&
- (((a = this.config.geolocation.marker_title) && "" !== a) || (a = "Geolocation"),
- d.push(["L\u00e4ngengrad (Lon.)", b.lon]),
- d.push(["Breitengrad (Lat.)", b.lat]));
- b = [];
- if (0 < d.length) {
- b.push("");
- for (c = 0; c < d.length; c++) {
- f = d[c];
- var g = f[0];
- f = f[1];
- b.push("");
- b.push("| " + g + " | ");
- b.push("" + f + " | ");
- b.push("
");
- }
- b.push("
");
- } else b.push("Keine Eigenschaften vorhanden...");
- b = b.join("");
- this.addSection(a, b, !1);
- !this.popup.isVisible() && this.popup.show();
- }
-};
-netgis.Info.prototype.onLayerResponseWMS = function (a, b, c) {
- b = b.title;
- if ((c = c.getResponseHeader("Content-Type")))
- switch (c.split(";")[0]) {
- case "text/plain":
- a = "" + a + "
";
- }
- this.popup.hideLoader();
- this.addSection(b, a, !1);
-};
-netgis = netgis || {};
-netgis.LayerID = { EDITABLE: "editable-layer", NON_EDITABLE: "non-editable-layer" };
-netgis = netgis || {};
-netgis.LayerTree = function (a) {
- this.config = a;
- this.importFolder = null;
- this.initElements(a);
- this.initFolders();
- this.initConfig(a);
-};
-netgis.LayerTree.Config = { open: !1, title: "Layers", buttons: [] };
-netgis.LayerTree.Folders = [];
-netgis.LayerTree.prototype.initElements = function (a) {
- a = a.layertree;
- this.panel = new netgis.Panel("Layers");
- this.tree = new netgis.Tree(a.draggable);
- this.tree.attachTo(this.panel.content);
- this.tree.container.addEventListener(netgis.Events.TREE_ITEM_CHANGE, this.onTreeItemChange.bind(this));
- this.tree.container.addEventListener(netgis.Events.TREE_ITEM_SLIDER_CHANGE, this.onTreeItemSliderChange.bind(this));
- this.tree.container.addEventListener(netgis.Events.TREE_ITEM_ORDER_CHANGE, this.onTreeItemOrderChange.bind(this));
- !0 === a.draggable &&
- (this.panel.content.addEventListener("dragover", this.onDragOver.bind(this)),
- this.panel.content.addEventListener("drop", this.onDragDrop.bind(this)));
-};
-netgis.LayerTree.prototype.initFolders = function () {
- this.editFolder = this.tree.addFolder(null, "edit-folder", "Zeichnung", !0, !0);
- this.tree.addCheckbox(this.editFolder, netgis.LayerID.EDITABLE, "Editierbar");
- this.tree.setItemChecked(netgis.LayerID.EDITABLE, !0);
- this.tree.addCheckbox(this.editFolder, netgis.LayerID.NON_EDITABLE, "Nicht-Editierbar");
- this.tree.setItemChecked(netgis.LayerID.NON_EDITABLE, !0);
- this.editFolder.classList.add("netgis-hide");
-};
-netgis.LayerTree.prototype.initConfig = function (a, b) {
- var c = a.layertree;
- c && c.title && this.panel.setTitle(c.title);
- var d = a.folders,
- e = {};
- if (d) {
- for (var f = 0; f < d.length; f++) {
- var g = d[f],
- h = this.tree.addFolder(null, g.id, g.title, b, !1, g.draggable);
- e[g.id] = h;
- !0 === g.open && this.tree.setFolderOpen(g.id, !0);
- }
- for (f = 0; f < d.length; f++)
- (g = d[f]),
- (h = g.id),
- (g = g.parent),
- -1 === g && (g = null),
- "" === g && (g = null),
- g && this.tree.setFolderParent(e[h], e[g]);
- }
- if ((b = a.layers))
- for (f = 0; f < b.length; f++) {
- var k = b[f];
- g = e[k.folder] ? e[k.folder] : null;
- h = k.id ? k.id : f.toString();
- var l = !1;
- if (g)
- for (var m = 0; m < d.length; m++) {
- var n = d[m];
- n.id === k.folder && (l = n.radio);
- }
- m = k.title;
- n = '';
- a.layertree && a.layertree.query_icon && (n = a.layertree.query_icon);
- (!0 === k.query || (k.query_url && "" !== k.query_url)) &&
- n &&
- "" !== n &&
- (m += '' + n + "");
- h =
- !0 === l
- ? this.tree.addRadioButton(g, h, m, k.active, this.createDefaultDetails(k, !0, !1))
- : this.tree.addCheckbox(g, h, m, k.active, !1, this.createDefaultDetails(k, !0, !0));
- h.addEventListener("contextmenu", this.onTreeItemMenu.bind(this));
- !0 === k.hidden && h.classList.add("netgis-hide");
- }
- this.tree.updateFolderChecks();
- if (c && c.buttons)
- for (a = a.layertree.buttons, f = 0; f < a.length; f++)
- (d = a[f]), this.tree.addButton(null, d.id, d.title, this.onTreeButtonClick.bind(this));
- c && !0 === c.open && this.panel.show();
-};
-netgis.LayerTree.prototype.attachTo = function (a) {
- this.panel.attachTo(a);
- a.addEventListener(netgis.Events.CLIENT_CONTEXT_RESPONSE, this.onClientContextResponse.bind(this));
- a.addEventListener(netgis.Events.LAYERTREE_TOGGLE, this.onLayerTreeToggle.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_CREATE, this.onMapLayerCreate.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_TOGGLE, this.onMapLayerToggle.bind(this));
- a.addEventListener(netgis.Events.IMPORT_LAYER_ACCEPT, this.onImportLayerAccept.bind(this));
- a.addEventListener(netgis.Events.IMPORT_GEOPORTAL_SUBMIT, this.onImportGeoportalSubmit.bind(this));
- a.addEventListener(netgis.Events.CONTEXTMENU_SLIDER_CHANGE, this.onContextMenuSliderChange.bind(this));
- a.addEventListener(netgis.Events.MAP_EDIT_LAYER_LOADED, this.onMapEditLayerChange.bind(this));
- a.addEventListener(netgis.Events.MAP_EDIT_LAYER_CHANGE, this.onMapEditLayerChange.bind(this));
-};
-netgis.LayerTree.prototype.createDefaultDetails = function (a, b, c) {
- var d = [];
- !0 === b &&
- d.push({
- title: " Transparenz:",
- type: "slider",
- val: a.transparency ? Math.round(100 * a.transparency) : 0,
- });
- !0 === c &&
- d.push({
- title: " Entfernen",
- type: "button",
- callback: this.onTreeItemDeleteClick.bind(this),
- });
- return d;
-};
-netgis.LayerTree.prototype.onTreeItemChange = function (a) {
- var b = a.detail;
- netgis.util.invoke(a.target, netgis.Events.MAP_LAYER_TOGGLE, { id: b.id, on: b.checked });
-};
-netgis.LayerTree.prototype.onClientContextResponse = function (a) {
- this.initConfig(a.detail.context.config, !0);
-};
-netgis.LayerTree.prototype.onLayerTreeToggle = function (a) {
- this.panel.toggle();
-};
-netgis.LayerTree.prototype.onTreeButtonClick = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id");
- netgis.Client.handleCommand(a, b);
-};
-netgis.LayerTree.prototype.onMapLayerCreate = function (a) {
- this.addLayerItem(a.detail, null);
-};
-netgis.LayerTree.prototype.onMapLayerToggle = function (a) {
- a = a.detail;
- this.tree.setItemChecked(a.id, a.on, !0);
- this.tree.updateFolderChecks();
-};
-netgis.LayerTree.prototype.onImportLayerAccept = function (a) {
- a = a.detail;
- this.importFolder || (this.importFolder = this.tree.addFolder(null, "_import", "Import", !0, !1));
- this.addLayerItem(a, this.importFolder);
- this.tree.updateFolderChecks();
-};
-netgis.LayerTree.prototype.addLayerItem = function (a, b) {
- var c = a.title,
- d = '';
- config = this.config;
- config.layertree && config.layertree.query_icon && (d = config.layertree.query_icon);
- (!0 === a.query || (a.query_url && "" !== a.query_url)) &&
- d &&
- "" !== d &&
- (c += '' + d + "");
- this.tree
- .addCheckbox(b, a.id, c, !0, !0, this.createDefaultDetails(a, !0, !0))
- .addEventListener("contextmenu", this.onTreeItemMenu.bind(this));
-};
-netgis.LayerTree.prototype.onImportGeoportalSubmit = function (a) {
- a = a.detail;
- var b = a.folder.id,
- c = this.tree.getFolder(b);
- c || (c = this.tree.addFolder(null, b, a.folder.title, !0, !1));
- var d = a.layer.id;
- b = {
- id: d,
- folder: b,
- title: a.layer.title,
- active: !0,
- type: netgis.LayerTypes.WMS,
- url: a.layer.url,
- name: a.layer.name,
- order: 1e4,
- transparency: 0,
- };
- this.config.layers.push(b);
- this.tree.addCheckbox(c, d, a.layer.title, !1, !1, this.createDefaultDetails(b, !0, !0));
- this.tree.setItemChecked(d, !0, !1);
-};
-netgis.LayerTree.prototype.onTreeItemMenu = function (a) {
- a.preventDefault();
- return !1;
-};
-netgis.LayerTree.prototype.onContextMenuSliderChange = function (a) {
- var b = a.detail;
- a = 0.01 * b.val;
- var c = null;
- 0 === b.id.indexOf("layer_trans_") && (c = b.id.split("layer_trans_")[1]);
- b = this.config.layers;
- for (var d = 0; d < b.length; d++) {
- var e = b[d];
- if (e.id === c) {
- e.transparency = a;
- break;
- }
- }
- netgis.util.invoke(this.tree.container, netgis.Events.MAP_LAYER_TRANSPARENCY, { id: c, transparency: a });
-};
-netgis.LayerTree.prototype.onTreeItemSliderChange = function (a) {
- var b = a.detail;
- a = b.id;
- b = 0.01 * b.val;
- for (var c = this.config.layers, d = 0; d < c.length; d++) {
- var e = c[d];
- if (e.id === a) {
- e.transparency = b;
- break;
- }
- }
- netgis.util.invoke(this.tree.container, netgis.Events.MAP_LAYER_TRANSPARENCY, { id: a, transparency: b });
-};
-netgis.LayerTree.prototype.onTreeItemOrderChange = function (a) {
- a = a.detail.items;
- for (var b = this.config.layers, c = a.length, d = 0; d < a.length; d++) {
- for (var e = a[d].getElementsByTagName("input")[0].getAttribute("data-id"), f = 0; f < b.length; f++) {
- var g = b[f];
- g.id === e &&
- ((g.order = c),
- netgis.util.invoke(this.tree.container, netgis.Events.MAP_LAYER_ORDER, { id: e, order: c }));
- }
- c--;
- }
-};
-netgis.LayerTree.prototype.onTreeItemDeleteClick = function (a) {
- a = a.currentTarget.parentNode.parentNode.parentNode.parentNode
- .getElementsByTagName("input")[0]
- .getAttribute("data-id");
- netgis.util.invoke(this.tree.container, netgis.Events.MAP_LAYER_DELETE, { id: a });
- this.tree.removeItem(a);
-};
-netgis.LayerTree.prototype.onMapEditLayerChange = function (a) {
- this.editFolder.classList.remove("netgis-hide");
-};
-netgis.LayerTree.prototype.onDragOver = function (a) {
- a.preventDefault();
-};
-netgis.LayerTree.prototype.onDragDrop = function (a) {
- a = this.tree.dragElement;
- "summary" === a.nodeName.toLowerCase() && (a = a.parentNode.parentNode);
- a.parentNode.removeChild(a);
- 0 < this.tree.container.childNodes.length
- ? this.tree.container.insertBefore(a, this.tree.container.childNodes[0])
- : this.tree.container.appendChild(a);
- netgis.util.invoke(this.tree.container, netgis.Events.TREE_ITEM_ORDER_CHANGE, {
- items: this.tree.container.getElementsByClassName("netgis-item"),
- });
-};
-netgis = netgis || {};
-netgis.LayerTypes = {
- TMS: "TMS",
- XYZ: "XYZ",
- OSM: "OSM",
- WMTS: "WMTS",
- WMS: "WMS",
- WMST: "WMST",
- GEOJSON: "GEOJSON",
- VTILES: "VTILES",
- WFS: "WFS",
- GML: "GML",
- KML: "KML",
- GEOPACKAGE: "GEOPACKAGE",
- SPATIALITE: "SPATIALITE",
- SHAPEFILE: "SHAPEFILE",
- WKT: "WKT",
- HIDDEN: "HIDDEN",
-};
-netgis = netgis || {};
-netgis.Legend = function (a) {
- this.config = a;
- this.initElements();
- this.initConfig(a);
-};
-netgis.Legend.Config = { open: !1 };
-netgis.Legend.prototype.initElements = function () {
- this.panel = new netgis.Panel("Legende");
- this.panel.content.classList.add("netgis-legend");
-};
-netgis.Legend.prototype.initConfig = function (a) {
- var b = a.legend;
- b && !0 === b.open && this.show();
- a = a.layers;
- for (b = 0; b < a.length; b++) {
- var c = a[b];
- !0 === c.active ? this.addLayerLegend(c.id) : this.removeLayerLegend(c.id);
- }
-};
-netgis.Legend.prototype.attachTo = function (a) {
- this.panel.attachTo(a);
- a.addEventListener(netgis.Events.CLIENT_CONTEXT_RESPONSE, this.onClientContextResponse.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_TOGGLE, this.onMapLayerToggle.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_CREATE, this.onMapLayerCreate.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_DELETE, this.onMapLayerDelete.bind(this));
- a.addEventListener(netgis.Events.LEGEND_TOGGLE, this.onLegendToggle.bind(this));
-};
-netgis.Legend.prototype.show = function () {
- this.panel.show();
-};
-netgis.Legend.prototype.hide = function () {
- this.panel.hide();
-};
-netgis.Legend.prototype.addSection = function (a, b, c, d) {
- this.panel.content.innerHTML =
- [
- !0 === d ? "" : "",
- "",
- b,
- "
",
- c,
- "
",
- ].join("") + this.panel.content.innerHTML;
-};
-netgis.Legend.prototype.addLayerLegend = function (a) {
- for (var b = null, c = this.config.layers, d = 0; d < c.length; d++) {
- var e = c[d];
- if (e.id === a) {
- b = e;
- break;
- }
- }
- if (b) {
- c = b.legend;
- if (!c || "" === c)
- switch (b.type) {
- case netgis.LayerTypes.WMS:
- case netgis.LayerTypes.WMST:
- (c = b.url) && -1 === c.indexOf("?") && (c += "?"),
- (c += [
- "service=WMS&version=1.1.0&request=GetLegendGraphic&format=image/png",
- "layer=" + b.name,
- ].join("&"));
- }
- c && "" !== c && this.addSection(a, b.title, "
", !0);
- }
-};
-netgis.Legend.prototype.removeLayerLegend = function (a) {
- for (var b = this.panel.content.getElementsByTagName("details"), c = 0; c < b.length; c++) {
- var d = b[c];
- d.getAttribute("data-id") === a && d.parentNode.removeChild(d);
- }
-};
-netgis.Legend.prototype.onClientContextResponse = function (a) {
- this.initConfig(a.detail.context.config);
-};
-netgis.Legend.prototype.onMapLayerToggle = function (a) {
- a = a.detail;
- a.on ? this.addLayerLegend(a.id) : this.removeLayerLegend(a.id);
-};
-netgis.Legend.prototype.onMapLayerCreate = function (a) {
- this.addLayerLegend(a.detail.id);
-};
-netgis.Legend.prototype.onMapLayerDelete = function (a) {
- this.removeLayerLegend(a.detail.id);
-};
-netgis.Legend.prototype.onLegendToggle = function (a) {
- this.panel.toggle();
-};
-netgis = netgis || {};
-netgis.Map = function (a) {
- this.config = a;
- this.mode = null;
- this.interactions = {};
- this.layers = {};
- this.viewHistory = [];
- this.viewIndex = -1;
- this.viewFromHistory = !1;
- this.viewHistoryMax = 20;
- this.paddingBuffer = 40;
- this.hoverBounds = this.hoverFeature = null;
- this.selectedFeatures = [];
- this.sketchFeatures = [];
- this.snap = null;
- this.snapFeatures = new ol.Collection();
- this.drawError = this.selectReset = this.selectMultiple = this.editEventsSilent = !1;
- this.initElements();
- a.map &&
- (this.initMap(a),
- this.initLayers(),
- this.initOverlays(),
- this.initInteractions(),
- this.initConfig(a),
- this.setPadding(0, 0, 0, 0),
- this.setMode(netgis.Modes.VIEW));
-};
-netgis.Map.Config = {
- projection: "EPSG:25832",
- center: [329766.1782104631, 5513621.076679279],
- center_lonlat: [7, 50],
- zoom: 14,
- min_zoom: 5,
- max_zoom: 19,
- extent: [293315.97, 5423948.96, 464350.97, 5644103.06],
- bbox: [293315.97, 5423948.96, 464350.97, 5644103.06],
- scales: [500, 1e3, 3e3, 5e3, 8e3, 1e4, 15e3, 25e3, 5e4, 1e5, 15e4, 25e4, 5e5, 1e6, 15e5, 2e6],
- scale: 1e5,
- scalebar: !0,
- max_view_history: 20,
-};
-netgis.Map.Projections = [["EPSG:25832", "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs"]];
-netgis.Map.Layers = [];
-netgis.Map.Measure = {
- line_color: "rgba( 255, 0, 0, 1.0 )",
- line_width: 3,
- line_dash: [5, 10],
- area_fill: "rgba( 255, 0, 0, 0.3 )",
- point_radius: 4,
- point_fill: "rgba( 255, 255, 255, 1.0 )",
- point_stroke: "rgba( 0, 0, 0, 1.0 )",
- text_color: "#871d33",
- text_back: "rgba( 255, 255, 255, 0.7 )",
-};
-netgis.Map.Tools = {
- editable: !0,
- output_id: "",
- interactive_render: !0,
- select_multi_reset: !0,
- buffer: { default_radius: 300, default_segments: 3 },
- snapping: { show: !0, active: !0, tolerance: 10 },
- bounds: void 0,
- bounds_message: "Out of bounds!",
- show_bounds: !0,
-};
-netgis.Map.Styles = {
- draw: { fill: "rgba( 255, 0, 0, 0.5 )", stroke: "#ff0000", width: 3, radius: 6, viewport_labels: !0 },
- non_edit: { fill: "rgba( 80, 80, 80, 0.5 )", stroke: "#666666", width: 3, radius: 6, viewport_labels: !0 },
- select: { fill: "rgba( 0, 127, 255, 0.5 )", stroke: "#007fff", width: 3, radius: 6 },
- sketch: { fill: "rgba( 0, 127, 0, 0.5 )", stroke: "#007f00", width: 3, radius: 6 },
- error: { fill: "rgba( 255, 0, 0, 0.5 )", stroke: "#ff0000", width: 3, radius: 6 },
- bounds: { fill: "rgba( 0, 0, 0, 0.0 )", stroke: "#000000", width: 3, radius: 6 },
- modify: { fill: "rgba( 255, 127, 0, 0.5 )", stroke: "#ff7f00", width: 3, radius: 6 },
- parcel: { fill: "rgba( 127, 0, 0, 0.0 )", stroke: "rgba( 127, 0, 0, 1.0 )", width: 1.5 },
- import: { fill: "rgba( 0, 127, 255, 0.2 )", stroke: "rgba( 0, 127, 255, 1.0 )", width: 1.5 },
-};
-netgis.Map.prototype.initElements = function () {
- this.container = document.createElement("div");
- this.container.setAttribute("tabindex", -1);
- this.container.className = "netgis-map";
- this.container.addEventListener("pointerleave", this.onPointerLeave.bind(this));
- this.container.addEventListener("click", this.onContainerClick.bind(this));
- this.container.addEventListener("contextmenu", this.onRightClick.bind(this));
- this.container.addEventListener("keydown", this.onKeyDown.bind(this));
- this.container.addEventListener("keyup", this.onKeyUp.bind(this));
-};
-netgis.Map.prototype.initMap = function (a) {
- var b = a.map;
- "undefined" !== typeof proj4
- ? (a.projections && 0 < a.projections.length && proj4.defs(a.projections),
- proj4.defs("urn:ogc:def:crs:OGC:1.3:CRS84", proj4.defs("EPSG:4326")),
- ol.proj.proj4.register(proj4))
- : ((a.projections && 0 < a.projections.length) || b.projection) &&
- console.error("map projections configured but no proj4 js library found", a.projections, b.projection);
- a = void 0;
- b.center_lonlat && (a = ol.proj.fromLonLat(b.center_lonlat, b.projection));
- !a && b.center && (a = b.center);
- var c = void 0;
- if (b.zoom || 0 === b.zoom) c = b.zoom;
- void 0 === c && void 0 !== b.min_zoom && (c = b.min_zoom);
- void 0 === c && (c = 0);
- this.view = new ol.View({ projection: b.projection, center: a, minZoom: b.min_zoom, maxZoom: b.max_zoom, zoom: c });
- b.default_scale &&
- console.error("config[ 'map' ][ 'default_scale' ] is deprecated, use config[ 'map' ][ 'scale' ] instead");
- b.scale && this.view.setResolution(this.getResolutionFromScale(b.scale));
- this.map = new ol.Map({
- target: this.container,
- view: this.view,
- pixelRatio: 1,
- moveTolerance: b.move_tolerance || 0 === b.move_tolerance ? b.move_tolerance : 7,
- controls: [],
- });
- if (
- b.scalebar &&
- ((this.scalebar = new ol.control.ScaleLine({ bar: !0 })),
- this.map.addControl(this.scalebar),
- (a = b.scales) && 0 < a.length)
- )
- for (
- this.scalebarSelect = document.createElement("select"),
- this.scalebarSelect.addEventListener("change", this.onScalebarSelectChange.bind(this)),
- this.scalebar.element.appendChild(this.scalebarSelect),
- c = 0;
- c < a.length;
- c++
- ) {
- var d = a[c],
- e = document.createElement("option");
- e.innerHTML = "1:" + d;
- e.setAttribute("value", d);
- this.scalebarSelect.appendChild(e);
- }
- this.map.on("moveend", this.onMapMoveEnd.bind(this));
- this.map.on("pointermove", this.onPointerMove.bind(this));
- this.map.on("click", this.onPointerClick.bind(this));
- if (b) {
- var f = b.extent;
- b.bbox && (f = b.bbox);
- if (f) {
- var g = this;
- window.setTimeout(function () {
- g.map.updateSize();
- g.view.fit(f);
- }, 10);
- }
- }
-};
-netgis.Map.prototype.initLayers = function () {
- this.measureLayer = new ol.layer.Vector({
- source: new ol.source.Vector({ features: [] }),
- zIndex: 6e4,
- style: this.styleMeasure.bind(this),
- });
- this.map.addLayer(this.measureLayer);
- var a = this.config.tools;
- if (
- a &&
- ((this.nonEditLayer = new ol.layer.Vector({
- source: new ol.source.Vector({ features: [] }),
- zIndex: 5e4,
- style: this.styleNonEdit.bind(this),
- updateWhileAnimating: a && a.interactive_render ? a.interactive_render : !1,
- updateWhileInteracting: a && a.interactive_render ? a.interactive_render : !1,
- })),
- this.map.addLayer(this.nonEditLayer),
- (this.editLayer = new ol.layer.Vector({
- source: new ol.source.Vector({ features: [] }),
- zIndex: 5e4,
- style: this.styleEdit.bind(this),
- updateWhileAnimating: a && a.interactive_render ? a.interactive_render : !1,
- updateWhileInteracting: a && a.interactive_render ? a.interactive_render : !1,
- })),
- this.map.addLayer(this.editLayer),
- this.editLayer.getSource().on("addfeature", this.onEditLayerAdd.bind(this)),
- this.editLayer.getSource().on("changefeature", this.onEditLayerChange.bind(this)),
- this.editLayer.getSource().on("removefeature", this.onEditLayerRemove.bind(this)),
- (this.previewLayer = new ol.layer.Vector({
- source: new ol.source.Vector({ features: [] }),
- zIndex: 55e3,
- style: this.styleSketch.bind(this),
- })),
- this.map.addLayer(this.previewLayer),
- (this.boundsLayer = null),
- (a = a.bounds))
- ) {
- a = netgis.util.replace(a, "'", '"');
- var b = new ol.format.GeoJSON().readFeatures(a);
- a = null;
- this.config.tools.show_bounds && this.config.styles.bounds && (a = this.createStyle(this.config.styles.bounds));
- this.boundsLayer = new ol.layer.Vector({
- source: new ol.source.Vector({ features: b }),
- style: a,
- zIndex: 6e4,
- });
- this.map.addLayer(this.boundsLayer);
- }
- this.geolocLayer = null;
- this.config.modules &&
- !0 === this.config.modules.geolocation &&
- ((a = this.config.geolocation),
- a || (a = netgis.Geolocation.Config),
- (a = [
- new ol.style.Style({
- image: new ol.style.Circle({ fill: new ol.style.Fill({ color: "#ffffff" }), radius: 8 }),
- }),
- new ol.style.Style({
- image: new ol.style.Circle({
- fill: new ol.style.Fill({ color: a.marker_color ? a.marker_color : "#ff0000" }),
- radius: 5,
- }),
- }),
- ]),
- (b = new ol.Feature({ geometry: new ol.geom.Point(ol.proj.fromLonLat([7, 50], this.view.getProjection())) })),
- b.setId("geolocation"),
- (this.geolocLayer = new ol.layer.Vector({
- source: new ol.source.Vector({ features: [b] }),
- style: a,
- zIndex: 66e3,
- })),
- this.map.addLayer(this.geolocLayer),
- this.geolocLayer.setVisible(!1));
-};
-netgis.Map.prototype.initOverlays = function () {
- var a = document.createElement("div");
- a.className = "netgis-map-overlay";
- this.popupOverlay = new ol.Overlay({ id: "popup", element: a, positioning: "center-center" });
- this.map.addOverlay(this.popupOverlay);
-};
-netgis.Map.prototype.initInteractions = function () {
- this.interactions[netgis.Modes.VIEW] = [
- new ol.interaction.DragPan(),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.ZOOM_BOX] = [
- new ol.interaction.DragZoom({
- condition: function (a) {
- return 0 === a.originalEvent.button;
- },
- out: !1,
- className: "netgis-zoom-box",
- }),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.MEASURE_LINE] = [
- new ol.interaction.DragPan(),
- new ol.interaction.Modify({
- source: this.measureLayer.getSource(),
- deleteCondition: ol.events.condition.doubleClick,
- style: this.styleMeasure.bind(this),
- }),
- new ol.interaction.Draw({
- type: "LineString",
- source: this.measureLayer.getSource(),
- style: this.styleMeasure.bind(this),
- }),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.PinchZoom(),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.MEASURE_AREA] = [
- new ol.interaction.DragPan(),
- new ol.interaction.Modify({
- source: this.measureLayer.getSource(),
- deleteCondition: ol.events.condition.doubleClick,
- style: this.styleMeasure.bind(this),
- }),
- new ol.interaction.Draw({
- type: "Polygon",
- source: this.measureLayer.getSource(),
- style: this.styleMeasure.bind(this),
- }),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.PinchZoom(),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.MEASURE_LINE][2].on("drawstart", this.onMeasureLineBegin.bind(this));
- this.interactions[netgis.Modes.MEASURE_AREA][2].on("drawstart", this.onMeasureAreaBegin.bind(this));
- if (this.config.tools && !0 === this.config.tools.editable) {
- var a = this.config.tools.bounds ? !0 : !1;
- this.interactions[netgis.Modes.DRAW_POINTS] = [
- new ol.interaction.Draw({
- type: "Point",
- source: this.editLayer.getSource(),
- style: this.styleSketch.bind(this),
- geometryFunction: a ? this.onDrawPointsUpdateGeom.bind(this) : void 0,
- }),
- new ol.interaction.DragPan(),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.DRAW_POINTS][0].on("drawend", this.onDrawBufferEnd.bind(this));
- if (a) 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),
- geometryFunction: a ? this.onDrawLinesUpdateGeom.bind(this) : void 0,
- }),
- new ol.interaction.DragPan(),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.DRAW_LINES][0].on("drawend", this.onDrawBufferEnd.bind(this));
- if (a) 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),
- geometryFunction: a ? this.onDrawPolygonsUpdateGeom.bind(this) : void 0,
- }),
- new ol.interaction.DragPan(),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.MouseWheelZoom(),
- ];
- if (a) this.interactions[netgis.Modes.DRAW_POLYGONS][0].on("drawend", this.onDrawPolygonsEnd.bind(this));
- this.interactions[netgis.Modes.MODIFY_FEATURES] = [
- new ol.interaction.DragPan(),
- new ol.interaction.Modify({
- source: this.editLayer.getSource(),
- deleteCondition: ol.events.condition.doubleClick,
- style: this.styleModify.bind(this),
- }),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.DELETE_FEATURES] = [
- new ol.interaction.DragPan(),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.CUT_FEATURES_DRAW] = [
- new ol.interaction.Draw({ type: "Polygon", style: this.styleSketch.bind(this) }),
- new ol.interaction.DragPan(),
- new ol.interaction.DragPan({
- condition: function (a) {
- return 1 === a.originalEvent.button;
- },
- }),
- new ol.interaction.MouseWheelZoom(),
- ];
- this.interactions[netgis.Modes.CUT_FEATURES_DRAW][0].on("drawend", this.onCutFeaturesDrawEnd.bind(this));
- }
-};
-netgis.Map.prototype.initConfig = function (a) {
- var b = a.map;
- b &&
- (b.bbox && this.zoomBBox(a.map.bbox),
- !b.zoom || b.extent || b.scale || this.view.setZoom(a.map.zoom),
- b.max_view_history && (this.viewHistoryMax = b.max_view_history));
- if ((a = a.layers))
- for (b = a.length - 1; 0 <= b; b--) {
- var c = a[b];
- !0 === c.active && this.addLayer(c.id, c);
- }
-};
-netgis.Map.prototype.attachTo = function (a) {
- a.appendChild(this.container);
- a.addEventListener(netgis.Events.CLIENT_CONTEXT_RESPONSE, this.onClientContextResponse.bind(this));
- a.addEventListener(netgis.Events.CLIENT_SET_MODE, this.onClientSetMode.bind(this));
- a.addEventListener(netgis.Events.PANEL_TOGGLE, this.onPanelToggle.bind(this));
- a.addEventListener(netgis.Events.PANEL_RESIZE, this.onPanelResize.bind(this));
- a.addEventListener(netgis.Events.MAP_EDIT_LAYER_LOADED, this.onEditLayerLoaded.bind(this));
- a.addEventListener(netgis.Events.MAP_ZOOM, this.onMapZoom.bind(this));
- a.addEventListener(netgis.Events.MAP_ZOOM_HOME, this.onMapZoomHome.bind(this));
- a.addEventListener(netgis.Events.MAP_ZOOM_LONLAT, this.onMapZoomLonLat.bind(this));
- a.addEventListener(netgis.Events.MAP_ZOOM_SCALE, this.onMapZoomScale.bind(this));
- a.addEventListener(netgis.Events.MAP_ZOOM_LAYER, this.onMapZoomLayer.bind(this));
- a.addEventListener(netgis.Events.MAP_ZOOM_LEVEL, this.onMapZoomLevel.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_CREATE, this.onMapLayerCreate.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_TOGGLE, this.onMapLayerToggle.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_TRANSPARENCY, this.onMapLayerTransparency.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_ORDER, this.onMapLayerOrder.bind(this));
- a.addEventListener(netgis.Events.MAP_LAYER_DELETE, this.onMapLayerDelete.bind(this));
- a.addEventListener(netgis.Events.MAP_SNAP_TOGGLE, this.onMapSnapToggle.bind(this));
- a.addEventListener(netgis.Events.MAP_VIEW_PREV, this.onMapViewPrev.bind(this));
- a.addEventListener(netgis.Events.MAP_VIEW_NEXT, this.onMapViewNext.bind(this));
- a.addEventListener(netgis.Events.GEOLOCATION_TOGGLE_ACTIVE, this.onGeolocToggleActive.bind(this));
- a.addEventListener(netgis.Events.GEOLOCATION_CHANGE, this.onGeolocChange.bind(this));
- a.addEventListener(netgis.Events.MEASURE_CLEAR, this.onMeasureClear.bind(this));
- a.addEventListener(netgis.Events.SELECT_MULTI_TOGGLE, this.onSelectMultiToggle.bind(this));
- a.addEventListener(netgis.Events.DRAW_BUFFER_TOGGLE, this.onDrawBufferToggle.bind(this));
- a.addEventListener(netgis.Events.DRAW_BUFFER_CHANGE, this.onDrawBufferChange.bind(this));
- a.addEventListener(netgis.Events.BUFFER_CHANGE, this.onBufferChange.bind(this));
- a.addEventListener(netgis.Events.BUFFER_ACCEPT, this.onBufferAccept.bind(this));
- a.addEventListener(netgis.Events.IMPORT_LAYER_ACCEPT, this.onImportLayerAccept.bind(this));
- a.addEventListener(netgis.Events.IMPORT_LAYER_PREVIEW, this.onImportLayerPreview.bind(this));
- a.addEventListener(netgis.Events.IMPORT_GEOPORTAL_SUBMIT, this.onImportGeoportalSubmit.bind(this));
- a.addEventListener(netgis.Events.MAP_COPY_FEATURE_TO_EDIT, this.onCopyFeatureToEdit.bind(this));
- a.addEventListener(netgis.Events.SEARCHPARCEL_ITEM_ENTER, this.onSearchParcelItemEnter.bind(this));
- a.addEventListener(netgis.Events.SEARCHPARCEL_ITEM_LEAVE, this.onSearchParcelItemLeave.bind(this));
- a.addEventListener(netgis.Events.SEARCHPARCEL_ITEM_CLICK, this.onSearchParcelItemClick.bind(this));
- a.addEventListener(netgis.Events.SEARCHPARCEL_ITEM_IMPORT, this.onSearchParcelItemImport.bind(this));
- a.addEventListener(netgis.Events.EXPORT_BEGIN, this.onExportBegin.bind(this));
- a.addEventListener(netgis.Events.TIMESLIDER_SHOW, this.onTimeSliderShow.bind(this));
- a.addEventListener(netgis.Events.TIMESLIDER_HIDE, this.onTimeSliderHide.bind(this));
- a.addEventListener(netgis.Events.TIMESLIDER_SELECT, this.onTimeSliderSelect.bind(this));
-};
-netgis.Map.prototype.setMode = function (a) {
- switch (this.mode) {
- case netgis.Modes.VIEW:
- this.container.classList.remove("netgis-clickable");
- break;
- case netgis.Modes.MODIFY_FEATURES:
- this.editLayer.setStyle(this.styleEdit.bind(this));
- break;
- case netgis.Modes.DRAW_POINTS:
- case netgis.Modes.DRAW_LINES:
- this.previewLayer.getSource().clear();
- this.container.classList.remove("netgis-not-allowed");
- this.container.removeAttribute("title");
- break;
- case netgis.Modes.DRAW_POLYGONS:
- this.container.classList.remove("netgis-not-allowed");
- this.container.removeAttribute("title");
- break;
- case netgis.Modes.BUFFER_FEATURES:
- this.clearSketchFeatures();
- break;
- case netgis.Modes.BUFFER_FEATURES_EDIT:
- this.clearSketchFeatures();
- this.selectedFeatures = [];
- this.redrawVectorLayers();
- break;
- case netgis.Modes.BUFFER_FEATURES_DYNAMIC:
- this.clearSketchFeatures();
- this.selectedFeatures = [];
- this.redrawVectorLayers();
- break;
- case netgis.Modes.CUT_FEATURES:
- a !== netgis.Modes.CUT_FEATURES_DRAW && ((this.selectedFeatures = []), this.redrawVectorLayers());
- break;
- case netgis.Modes.CUT_FEATURES_DRAW:
- (this.selectedFeatures = []), this.redrawVectorLayers();
- }
- this.map.getInteractions().clear();
- this.mode && this.container.classList.remove("netgis-mode-" + this.mode);
- var b = this.interactions[a];
- b || (console.warn("no interactions found for mode", a), (b = this.interactions[netgis.Modes.VIEW]));
- for (var c = 0; c < b.length; c++) this.map.addInteraction(b[c]);
- b = this.config.tools && this.config.tools.editable;
- switch (a) {
- case netgis.Modes.DRAW_POINTS:
- case netgis.Modes.DRAW_LINES:
- b &&
- (this.setSnapping(this.drawSnapOn),
- this.onDrawBufferToggle({
- detail: { on: this.drawBufferOn, radius: this.drawBufferRadius, segments: this.drawBufferSegments },
- }));
- break;
- case netgis.Modes.DRAW_POLYGONS:
- b && this.setSnapping(this.drawSnapOn);
- break;
- case netgis.Modes.MODIFY_FEATURES:
- b && (this.setSnapping(this.drawSnapOn), this.editLayer.setStyle(this.styleModify.bind(this)));
- }
- this.container.classList.add("netgis-mode-" + a);
- this.mode = a;
-};
-netgis.Map.prototype.addLayer = function (a, b) {
- var c = this.createLayer(b);
- c &&
- (c.set("id", a),
- this.map.addLayer(c),
- (this.layers[a] = c),
- b.order && c.setZIndex(b.order),
- b.transparency && c.setOpacity(1 - b.transparency),
- b.style && c.setStyle(this.createStyle(b.style)),
- b.min_zoom && c.setMinZoom(b.min_zoom - 1e-4),
- b.max_zoom && c.setMaxZoom(b.max_zoom),
- c instanceof ol.layer.Vector && this.addSnapLayer(c),
- b.type === netgis.LayerTypes.WMST &&
- netgis.util.invoke(this.container, netgis.Events.TIMESLIDER_SHOW, {
- layer: a,
- title: b.title,
- url: b.url,
- name: b.name,
- }));
- return c;
-};
-netgis.Map.prototype.isLayerQueryable = function (a) {
- var b = !1;
- if (!0 === a.query) b = !0;
- else if (!1 !== a.query)
- switch (a.type) {
- case netgis.LayerTypes.WMS:
- case netgis.LayerTypes.WMST:
- b = !0;
- }
- return b;
-};
-netgis.Map.prototype.getQueryableLayers = function (a) {
- var b = [],
- c = this.config.layers;
- if (c)
- for (var d = 0; d < c.length; d++) {
- var e = c[d],
- f = this.layers[e.id];
- f && ((a && f instanceof ol.layer.Vector) || (this.isLayerQueryable(e) && b.push(e)));
- }
- return b;
-};
-netgis.Map.prototype.createLayer = function (a) {
- switch (a.type) {
- case netgis.LayerTypes.HIDDEN:
- break;
- case netgis.LayerTypes.TMS:
- case netgis.LayerTypes.XYZ:
- var b = this.createLayerTMS(a.url, a.projection, a.extent, a.scales, a.resolutions);
- break;
- case netgis.LayerTypes.OSM:
- b = this.createLayerTMS("https://{a-c}.tile.openstreetmap.de/{z}/{x}/{y}.png");
- break;
- case netgis.LayerTypes.WMTS:
- b = this.createLayerWMTS(a.url, a.name);
- break;
- case netgis.LayerTypes.WMS:
- b = this.createLayerWMS(a.url, a.name, a.format, a.tiled, a.username, a.password);
- break;
- case netgis.LayerTypes.WMST:
- b = this.createLayerWMST(a.url, a.name, a.format, a.tiled, a.username, a.password);
- break;
- case netgis.LayerTypes.GEOJSON:
- (b = a.data) && netgis.util.isString(b) && (b = JSON.parse(b));
- b = this.createLayerGeoJSON(b ? b : a.url);
- break;
- case netgis.LayerTypes.WFS:
- b = this.createLayerWFS(
- a.url,
- a.name,
- this.view.getProjection().getCode(),
- a.format,
- a.username,
- a.password
- );
- break;
- case netgis.LayerTypes.VTILES:
- b = this.createLayerVectorTiles(a.url, a.extent, a.min_zoom, a.max_zoom);
- break;
- case netgis.LayerTypes.GML:
- b = this.createLayerGML(a.data);
- break;
- case netgis.LayerTypes.KML:
- b = this.createLayerKML(a.url);
- break;
- case netgis.LayerTypes.GEOPACKAGE:
- b = this.createLayerGeoPackage(a.data);
- break;
- case netgis.LayerTypes.SPATIALITE:
- b = this.createLayerSpatialite(a.data);
- break;
- case netgis.LayerTypes.SHAPEFILE:
- b = this.createLayerShapefile(a.data);
- break;
- case netgis.LayerTypes.WKT:
- b = this.createLayerWKT(a.data);
- break;
- default:
- console.error("unknown layer type", a.type);
- }
- return b;
-};
-netgis.Map.prototype.removeLayer = function (a) {
- var b = this.layers[a];
- b instanceof ol.layer.Vector && this.removeSnapLayer(b);
- for (var c = 0; c < this.config.layers.length; c++) {
- var d = this.config.layers[c];
- d.id === a &&
- d.type === netgis.LayerTypes.WMST &&
- netgis.util.invoke(this.container, netgis.Events.TIMESLIDER_HIDE, null);
- }
- this.map.removeLayer(b);
- delete this.layers[a];
-};
-netgis.Map.prototype.setLayerOrder = function (a, b) {
- this.layers[a].setZIndex(b);
-};
-netgis.Map.prototype.createStyle = function (a) {
- var b = a.radius ? a.radius : 3,
- c = a.width ? a.width : 1,
- d = a.fill ? a.fill : "gray",
- e = a.stroke ? a.stroke : "black";
- return function (a) {
- return new ol.style.Style({
- image: new ol.style.Circle({ radius: b - c, fill: new ol.style.Fill({ color: d }) }),
- fill: new ol.style.Fill({ color: d }),
- stroke: new ol.style.Stroke({ color: e, width: c }),
- });
- };
-};
-netgis.Map.prototype.styleMeasure = function (a) {
- var b = a.getGeometry(),
- c = this.config.measure;
- c || (c = netgis.Map.Measure);
- var d = new ol.style.Style({
- fill: new ol.style.Fill({ color: c.area_fill }),
- stroke: new ol.style.Stroke({ color: c.line_color, width: c.line_width, lineDash: c.line_dash }),
- });
- b instanceof ol.geom.Polygon
- ? ((b = b.getArea()),
- d.setText(
- new ol.style.Text({
- text: [netgis.util.formatArea(b, !0), "4mm sans-serif"],
- font: "Arial",
- fill: new ol.style.Fill({ color: c.text_color }),
- backgroundFill: new ol.style.Fill({ color: c.text_back }),
- padding: [2, 4, 2, 4],
- overflow: !0,
- })
- ))
- : b instanceof ol.geom.LineString &&
- (this.mode === netgis.Modes.MEASURE_LINE || this.mode === netgis.Modes.VIEW) &&
- ((b = b.getLength()),
- d.setText(
- new ol.style.Text({
- text: [netgis.util.formatDistance(b), "4mm sans-serif"],
- font: "Arial",
- fill: new ol.style.Fill({ color: c.text_color }),
- backgroundFill: new ol.style.Fill({ color: c.text_back }),
- padding: [2, 4, 2, 4],
- overflow: !0,
- })
- ));
- return c.point_radius && 0 < c.point_radius
- ? ((b = this.getGeometryPoints(a)),
- (a = new ol.style.Style({
- image: new ol.style.Circle({
- radius: 1.25 * c.point_radius,
- fill: new ol.style.Fill({ color: c.point_stroke }),
- }),
- geometry: b,
- })),
- (c = new ol.style.Style({
- image: new ol.style.Circle({ radius: c.point_radius, fill: new ol.style.Fill({ color: c.point_fill }) }),
- geometry: b,
- })),
- [d, a, c])
- : d;
-};
-netgis.Map.prototype.styleEdit = function (a) {
- var b, c;
- this.config &&
- this.config.styles &&
- (this.config.styles.draw && (b = this.config.styles.draw),
- this.config.styles.select && (c = this.config.styles.select));
- b || (b = netgis.Map.Styles.draw);
- c || (c = netgis.Map.Styles.select);
- var d = a.getGeometry(),
- e = this.hoverFeature === a;
- -1 < this.selectedFeatures.indexOf(a) && (e = !0);
- var f = e ? c.fill : b.fill,
- g = e ? c.stroke : b.stroke;
- c = new ol.style.Style({
- image: new ol.style.Circle({ radius: e ? c.radius : b.radius, fill: new ol.style.Fill({ color: g }) }),
- fill: new ol.style.Fill({ color: f }),
- stroke: new ol.style.Stroke({ color: g, width: b.width }),
- });
- e && c.setZIndex(1);
- if (d instanceof ol.geom.Polygon || d instanceof ol.geom.MultiPolygon) {
- e = d.getArea();
- if (!e || 0 >= e) return c;
- !0 === b.viewport_labels &&
- ((b = this.view.calculateExtent(this.map.getSize())),
- (f = ol.geom.Polygon.fromExtent(b)),
- (b = new jsts.io.OL3Parser()),
- (d = b.read(d)),
- (f = b.read(f)),
- (d = d.intersection(f)),
- (d = b.write(d)),
- c.setGeometry(d));
- e = netgis.util.formatArea(e, !0);
- (a = a.getProperties().title) && (e = a + "\n" + e);
- c.setText(
- new ol.style.Text({
- text: e,
- font: "4mm Arial, sans-serif",
- fill: new ol.style.Fill({ color: g }),
- backgroundFill: new ol.style.Fill({ color: "rgba( 255, 255, 255, 0.5 )" }),
- padding: [2, 4, 2, 4],
- })
- );
- }
- return c;
-};
-netgis.Map.prototype.styleNonEdit = function (a) {
- var b, c;
- this.config &&
- this.config.styles &&
- (this.config.styles.non_edit && (b = this.config.styles.non_edit),
- this.config.styles.select && (c = this.config.styles.select));
- b || (b = netgis.Map.Styles.non_edit);
- c || (c = netgis.Map.Styles.select);
- var d = a.getGeometry(),
- e = this.hoverFeature === a;
- -1 < this.selectedFeatures.indexOf(a) && (e = !0);
- var f = e ? c.fill : b.fill,
- g = e ? c.stroke : b.stroke;
- c = new ol.style.Style({
- image: new ol.style.Circle({ radius: e ? c.radius : b.radius, fill: new ol.style.Fill({ color: g }) }),
- fill: new ol.style.Fill({ color: f }),
- stroke: new ol.style.Stroke({ color: g, width: b.width }),
- });
- e && c.setZIndex(1);
- if (d instanceof ol.geom.Polygon) {
- e = d.getArea();
- if (!e || 0 >= e) return c;
- !0 === b.viewport_labels &&
- ((b = this.map.getView().calculateExtent(this.map.getSize())),
- (f = ol.geom.Polygon.fromExtent(b)),
- (b = new jsts.io.OL3Parser()),
- (d = b.read(d)),
- (f = b.read(f)),
- (d = d.intersection(f)),
- (d = b.write(d)),
- c.setGeometry(d));
- e = netgis.util.formatArea(e, !0);
- (a = a.getProperties().title) && (e = a + "\n" + e);
- c.setText(
- new ol.style.Text({
- text: e,
- font: "4mm Arial, sans-serif",
- fill: new ol.style.Fill({ color: g }),
- backgroundFill: new ol.style.Fill({ color: "rgba( 255, 255, 255, 0.5 )" }),
- padding: [2, 4, 2, 4],
- })
- );
- }
- return c;
-};
-netgis.Map.prototype.styleSketch = function (a) {
- var b, c;
- this.config &&
- this.config.styles &&
- (this.config.styles.sketch && (b = this.config.styles.sketch),
- this.config.styles.error && (c = this.config.styles.error));
- b || (b = netgis.Map.Styles.sketch);
- c || (c = netgis.Map.Styles.error);
- this.drawError && c && (b = c);
- var d = a.getGeometry();
- c = new ol.style.Style({
- image: new ol.style.Circle({ radius: b.radius, fill: new ol.style.Fill({ color: b.fill }) }),
- fill: new ol.style.Fill({ color: b.fill }),
- stroke: new ol.style.Stroke({ color: b.stroke, width: b.width }),
- });
- d instanceof ol.geom.Polygon &&
- ((d = d.getArea()),
- c.setText(
- new ol.style.Text({
- text: [netgis.util.formatArea(d, !0), "4mm sans-serif"],
- font: "Arial",
- fill: new ol.style.Fill({ color: b.stroke }),
- backgroundFill: new ol.style.Fill({ color: "rgba( 255, 255, 255, 0.5 )" }),
- padding: [2, 4, 2, 4],
- })
- ));
- a = new ol.style.Style({
- image: new ol.style.Circle({ radius: b.radius, fill: new ol.style.Fill({ color: b.stroke }) }),
- geometry: this.getGeometryPoints(a),
- });
- return [c, a];
-};
-netgis.Map.prototype.styleModify = function (a) {
- var b;
- this.config && this.config.styles && this.config.styles.modify && (b = this.config.styles.modify);
- b || (b = netgis.Map.Styles.modify);
- var c = new ol.style.Style({
- image: new ol.style.Circle({ radius: b.radius, fill: new ol.style.Fill({ color: b.stroke }) }),
- fill: new ol.style.Fill({ color: b.fill }),
- stroke: new ol.style.Stroke({ color: b.stroke, width: b.width }),
- }),
- d = new ol.style.Style({
- image: new ol.style.Circle({ radius: b.radius, fill: new ol.style.Fill({ color: b.stroke }) }),
- geometry: this.getGeometryPoints(a),
- });
- a = a.getGeometry();
- a instanceof ol.geom.Polygon &&
- ((a = a.getArea()),
- c.setText(
- new ol.style.Text({
- text: [netgis.util.formatArea(a, !0), "4mm sans-serif"],
- font: "Arial",
- fill: new ol.style.Fill({ color: b.stroke }),
- backgroundFill: new ol.style.Fill({ color: "rgba( 255, 255, 255, 0.5 )" }),
- padding: [2, 4, 2, 4],
- })
- ));
- return [c, d];
-};
-netgis.Map.prototype.styleHover = function (a) {
- var b;
- this.config && this.config.styles && this.config.styles.select && (b = this.config.styles.select);
- b || (b = netgis.Map.Styles.select);
- return new ol.style.Style({
- image: new ol.style.Circle({ radius: b.radius, fill: new ol.style.Fill({ color: b.stroke }) }),
- fill: new ol.style.Fill({ color: b.fill }),
- stroke: new ol.style.Stroke({ color: b.stroke, width: b.width }),
- zIndex: 1,
- });
-};
-netgis.Map.prototype.getGeometryPoints = function (a) {
- var b = a.getGeometry();
- if (b instanceof ol.geom.LineString) return new ol.geom.MultiPoint(b.getCoordinates());
- if (b instanceof ol.geom.Polygon) {
- a = [];
- b = b.getCoordinates();
- for (var c = 0; c < b.length; c++) for (var d = b[c], e = 0; e < d.length; e++) a.push(d[e]);
- return new ol.geom.MultiPoint(a);
- }
- if (b instanceof ol.geom.MultiPolygon) {
- a = [];
- for (var f = b.getPolygons(), g = 0; g < f.length; g++)
- for (b = f[g].getCoordinates(), c = 0; c < b.length; c++)
- for (d = b[c], e = 0; e < d.length; e++) a.push(d[e]);
- return new ol.geom.MultiPoint(a);
- }
- if (b instanceof ol.geom.MultiLineString) {
- a = [];
- f = b.getPolygons();
- for (g = 0; g < f.length; g++)
- for (b = f[g].getCoordinates(), c = 0; c < b.length; c++)
- for (d = b[c], e = 0; e < d.length; e++) a.push(d[e]);
- return new ol.geom.MultiPoint(a);
- }
- return b;
-};
-netgis.Map.prototype.redrawVectorLayers = function () {
- this.map.getLayers().forEach(function (a, b, c) {
- (a instanceof ol.layer.Vector || a instanceof ol.layer.VectorTile) && a.setStyle(a.getStyle());
- });
-};
-netgis.Map.prototype.setSnapping = function (a) {
- var b = this.config.tools.snapping;
- a
- ? ((this.snap = new ol.interaction.Snap({
- features: this.snapFeatures,
- pixelTolerance: b.tolerance ? b.tolerance : 10,
- })),
- this.map.addInteraction(this.snap),
- this.snapFeatures.changed())
- : this.snap && (this.map.removeInteraction(this.snap), (this.snap = null));
- this.drawSnapOn = a;
-};
-netgis.Map.prototype.setDrawTrace = function (a) {};
-netgis.Map.prototype.addSnapLayer = function (a) {
- a = a.getSource().getFeatures();
- for (var b = 0; b < a.length; b++) this.snapFeatures.push(a[b]);
-};
-netgis.Map.prototype.removeSnapLayer = function (a) {
- a = a.getSource().getFeatures();
- for (var b = 0; b < a.length; b++) this.snapFeatures.remove(a[b]);
-};
-netgis.Map.prototype.setDrawBuffer = function (a, b, c) {
- if (a) {
- var d = this.createBufferFeature(new ol.geom.Point(this.view.getCenter()), b, c);
- this.previewLayer.getSource().addFeature(d);
- this.drawBufferRadius = b;
- this.drawBufferSegments = c;
- } else this.previewLayer.getSource().clear();
- this.drawBufferOn = a;
-};
-netgis.Map.prototype.createLayerTMS = function (a, b, c, d, e) {
- "map" === d &&
- (this.config.map && this.config.map.scales
- ? (d = this.config.map.scales)
- : (console.error("TMS layer references map scales, but none given in config,", a), (d = void 0)));
- "map" === c &&
- (this.config.map && this.config.map.extent
- ? (c = this.config.map.extent)
- : (console.error("TMS layer references map 'extent', but none given in config 'map',", a), (c = void 0)));
- if (b && c && (d || e)) {
- if (d) for (e = [], b = 0; b < d.length; b++) e.unshift(this.getResolutionFromScale(d[b]));
- c = new ol.source.TileImage({
- crossOrigin: null,
- projection: this.view.getProjection(),
- tileGrid: new ol.tilegrid.TileGrid({ extent: c, origin: c ? [c[0], c[1]] : [0, 0], resolutions: e }),
- tileUrlFunction: function (b) {
- if (null !== b) {
- var c = a;
- c = netgis.util.replace(c, "{z}", b[0]);
- c = netgis.util.replace(c, "{x}", b[1]);
- c = netgis.util.replace(c, "{y}", b[2]);
- return (c = netgis.util.replace(c, "{-y}", -b[2] - 1));
- }
- },
- });
- c = new ol.layer.Tile({ source: c });
- } else c = new ol.layer.Tile({ source: new ol.source.XYZ({ url: a, crossOrigin: "anonymous" }) });
- return c;
-};
-netgis.Map.prototype.createLayerWMS = function (a, b, c, d, e, f) {
- "image/tiff" === c &&
- (console.error(
- "WMS layer format 'image/tiff' detected but not supported in OL, reverting to 'image/png' for '" + a + "'"
- ),
- (c = "image/png"));
- a = { url: a, params: { LAYERS: b, FORMAT: c ? c : "image/png", TRANSPARENT: "true" }, hidpi: !1 };
- e &&
- f &&
- (a.imageLoadFunction = function (a, b) {
- var c = new XMLHttpRequest();
- c.open("GET", b);
- c.setRequestHeader("Authorization", "Basic " + window.btoa(e + ":" + f));
- c.onload = function () {
- a.getImage().src = b;
- };
- c.send();
- });
- d
- ? ((d = new ol.source.TileWMS(a)), (d = new ol.layer.Tile({ source: d })))
- : ((d = new ol.source.ImageWMS(a)), (d = new ol.layer.Image({ source: d })));
- return d;
-};
-netgis.Map.prototype.createLayerWMST = function (a, b, c, d, e, f) {
- "image/tiff" === c &&
- (console.error(
- "WMST layer format 'image/tiff' detected but not supported in OL, reverting to 'image/png' for '" + a + "'"
- ),
- (c = "image/png"));
- a = {
- url: a,
- params: { LAYERS: b, FORMAT: c ? c : "image/png", TRANSPARENT: "true", VERSION: "1.1.1" },
- hidpi: !1,
- };
- e &&
- f &&
- (a.imageLoadFunction = function (a, b) {
- var c = new XMLHttpRequest();
- c.open("GET", b);
- c.setRequestHeader("Authorization", "Basic " + window.btoa(e + ":" + f));
- c.onload = function () {
- a.getImage().src = b;
- };
- c.send();
- });
- d
- ? ((d = new ol.source.TileWMS(a)), (d = new ol.layer.Tile({ source: d })))
- : ((d = new ol.source.ImageWMS(a)), (d = new ol.layer.Image({ source: d })));
- return d;
-};
-netgis.Map.prototype.createLayerWMTS = function (a) {
- for (var b = [], c = this.client.config.map.scales, d = this.client.config.map.extent, e = 0; e < c.length; e++)
- b.unshift(this.getResolutionFromScale(c[e]));
- b = new ol.source.TileImage({
- crossOrigin: null,
- projection: this.view.getProjection(),
- tileGrid: new ol.tilegrid.TileGrid({ extent: d, origin: [d[0], d[1]], resolutions: b }),
- tileUrlFunction: function (b) {
- if (null !== b) {
- var c = a;
- c = netgis.util.replace(c, "{z}", b[0]);
- c = netgis.util.replace(c, "{x}", b[1]);
- c = netgis.util.replace(c, "{y}", b[2]);
- return (c = netgis.util.replace(c, "{-y}", -b[2]));
- }
- },
- });
- return new ol.layer.Tile({ source: b });
-};
-netgis.Map.prototype.createLayerWMTS_01 = function (a, b) {
- for (
- var c = this.view.getProjection().getExtent(),
- d = ol.extent.getWidth(c) / 256,
- e = Array(14),
- f = Array(14),
- g = 0;
- 14 > g;
- ++g
- )
- (e[g] = d / Math.pow(2, g)), (f[g] = g);
- source = new ol.source.WMTS({
- url: a,
- params: { LAYER: b, FORMAT: "image/png", TRANSPARENT: "true", VERSION: "1.1.1" },
- layer: b,
- format: "image/jpeg",
- matrixSet: "UTM32",
- tileGrid: new ol.tilegrid.WMTS({ origin: ol.extent.getTopLeft(c), resolutions: e, matrixIds: f }),
- });
-};
-netgis.Map.prototype.createLayerGeoJSON = function (a) {
- if (netgis.util.isObject(a)) {
- var b = new ol.format.GeoJSON(),
- c = b.readProjection(a);
- a = b.readFeatures(a, { featureProjection: this.view.getProjection() });
- c = c.getCode();
- switch (c) {
- case "EPSG:3857":
- case "EPSG:4326":
- case this.view.getProjection().getCode():
- break;
- default:
- console.warn("unsupported import projection '" + c + "'");
- }
- var d = new ol.layer.Vector({ source: new ol.source.Vector({ features: a }) });
- return d;
- }
- if (netgis.util.isString(a)) {
- d = new ol.layer.Vector({ source: new ol.source.Vector({ features: [] }) });
- var e = this;
- netgis.util.request(a, function (a) {
- a = JSON.parse(a);
- a = e.createLayerGeoJSON(a);
- d.getSource().addFeatures(a.getSource().getFeatures());
- });
- return d;
- }
-};
-netgis.Map.prototype.createLayerGML = function (a) {
- console.warn("GML support is experimental!");
- var b = [];
- a = new DOMParser().parseFromString(a, "text/xml").getElementsByTagName("gml:featureMember");
- for (var c = 0; c < a.length; c++) {
- for (var d = {}, e = a[c].children[0], f = 0; f < e.attributes.length; f++) {
- var g = e.attributes[f];
- d[g.nodeName] = g.nodeValue;
- }
- for (f = 0; f < e.children.length; f++)
- if (((g = e.children[f]), "ogr:geometryProperty" !== g.nodeName)) {
- var h = g.nodeName.split(":");
- d[h[h.length - 1]] = g.innerHTML;
- }
- e = e.getElementsByTagName("ogr:geometryProperty")[0].children[0];
- (f = e.getAttribute("srsName")) &&
- "EPSG:4326" !== f &&
- f !== this.projection &&
- console.warn("unsupported import projection:", f);
- switch (e.nodeName) {
- case "gml:Polygon":
- d.geometry = this.gmlParsePolygon(e, f);
- break;
- case "gml:MultiPolygon":
- d.geometry = this.gmlParseMultiPolygon(e, f);
- }
- d = new ol.Feature(d);
- b.push(d);
- }
- return new ol.layer.Vector({ source: new ol.source.Vector({ features: b }) });
-};
-netgis.Map.prototype.gmlParsePolygon = function (a, b) {
- var c = [];
- a = a.getElementsByTagName("gml:LinearRing");
- for (var d = 0; d < a.length; d++) {
- var e = a[d].getElementsByTagName("gml:coordinates")[0].innerHTML;
- c.push(this.gmlParseCoordinates(e, b));
- }
- return new ol.geom.Polygon(c);
-};
-netgis.Map.prototype.gmlParseMultiPolygon = function (a, b) {
- var c = [];
- a = a.getElementsByTagName("gml:polygonMember");
- for (var d = 0; d < a.length; d++) {
- var e = a[d].getElementsByTagName("gml:Polygon")[0];
- c.push(this.gmlParsePolygon(e, b));
- }
- return new ol.geom.MultiPolygon(c);
-};
-netgis.Map.prototype.gmlParseCoordinates = function (a, b) {
- a = a.split(" ");
- for (var c = 0; c < a.length; c++) {
- a[c] = a[c].split(",");
- for (var d = 0; d < a[c].length; d++) a[c][d] = Number.parseFloat(a[c][d]);
- b && (a[c] = ol.proj.transform(a[c], b, this.view.getProjection()));
- }
- return a;
-};
-netgis.Map.prototype.createLayerGeoPackage = function (a) {
- var b = new ol.layer.Vector({ source: new ol.source.Vector({ features: [] }) }),
- c = this;
- a = new Uint8Array(a);
- window.GeoPackage.setSqljsWasmLocateFile(function (a) {
- return c.config["import"].geopackage_lib + a;
- });
- window.GeoPackage.GeoPackageAPI.open(a).then(function (a) {
- for (var d = [], f = new ol.format.GeoJSON(), g = a.getFeatureTables(), h = 0; h < g.length; h++)
- for (var k = a.queryForGeoJSONFeaturesInTable(g[h]), l = 0; l < k.length; l++) {
- var m = f.readGeometry(k[l].geometry, { featureProjection: c.view.getProjection() });
- m = new ol.Feature({ geometry: m });
- d.push(m);
- }
- b.getSource().addFeatures(d);
- });
- return b;
-};
-netgis.Map.prototype.createLayerSpatialite = function (a) {
- var b = new ol.layer.Vector({ source: new ol.source.Vector({ features: [] }) }),
- c = this;
- window.initSqlJs().then(function (d) {
- var e = [],
- f = new Uint8Array(a);
- d = new d.Database(f);
- var g = d.exec(
- "SELECT name FROM sqlite_schema WHERE type = 'table' \n\t\t\t\t\tAND name NOT LIKE 'sqlite_%' \n\t\t\t\t\tAND name NOT LIKE 'sql_%' \n\t\t\t\t\tAND name NOT LIKE 'idx_%' \n\t\t\t\t\tAND name NOT LIKE 'spatial_ref_sys%' \n\t\t\t\t\tAND name NOT LIKE 'spatialite_%' \n\t\t\t\t\tAND name NOT LIKE 'geometry_columns%' \n\t\t\t\t\tAND name NOT LIKE 'views_%' \n\t\t\t\t\tAND name NOT LIKE 'virts_%' \n\t\t\t\t\tAND name NOT LIKE 'SpatialIndex' \n\t\t\t\t\tAND name NOT LIKE 'KNN%' \n\t\t\t\t\tAND name NOT LIKE 'ElementaryGeometries' \n\t\t\t\t;"
- );
- f = g[0].values;
- for (var h = 0; h < f.length; h++) {
- g = d.exec("SELECT * FROM " + f[h][0]);
- var k = g[0];
- g = null;
- for (var l = 0; l < k.columns.length; l++) {
- if ("geometry" === k.columns[l].toLowerCase()) {
- g = l;
- break;
- }
- if ("geom" === k.columns[l].toLowerCase()) {
- g = l;
- break;
- }
- }
- if (null !== g)
- for (k = k.values, l = 0; l < k.length; l++) {
- var m = k[l][g],
- n = new Uint8Array(m.length - 43 - 1 + 5);
- n[0] = m[1];
- n[1] = m[39];
- n[2] = m[40];
- n[3] = m[41];
- n[4] = m[42];
- for (var p = m.length - 43 - 1, q = 0; q < p; q++) n[5 + q] = m[43 + q];
- m = new ol.format.WKB().readGeometry(n, { featureProjection: c.view.getProjection() });
- e.push(new ol.Feature({ geometry: m }));
- }
- }
- b.getSource().addFeatures(e);
- });
- return b;
-};
-netgis.Map.prototype.createLayerShapefile = function (a) {
- var b = new ol.layer.Vector({ source: new ol.source.Vector({ features: [] }) }),
- c = this;
- shp(a).then(function (a) {
- var d = new ol.format.GeoJSON();
- d.readProjection(a);
- a = d.readFeatures(a, { featureProjection: c.view.getProjection() });
- b.getSource().addFeatures(a);
- });
- return b;
-};
-netgis.Map.prototype.createLayerWKT = function (a) {
- for (var b = new ol.format.WKT(), c = [], d = 0; d < a.length; d++) {
- var e = a[d],
- f = b.readGeometry(e.geometry),
- g = e.properties;
- g.geometry = f;
- g.wkt = e.geometry;
- f = new ol.Feature(g);
- f.setId(e.id);
- c.push(f);
- }
- return new ol.layer.Vector({ source: new ol.source.Vector({ features: c }) });
-};
-netgis.Map.prototype.createLayerWFS = function (a, b, c, d, e, f) {
- "?" !== a[a.length - 1] && (a += "?");
- a += "service=WFS&version=1.1.0&request=GetFeature";
- c || (c = this.view.getProjection().getCode());
- d = d ? netgis.util.replace(d, " ", "+") : "application/json";
- var g = new ol.source.Vector({
- format: new ol.format.GeoJSON(),
- strategy: ol.loadingstrategy.bbox,
- loader: function (h, k, n, p, q) {
- h = a + "&typename=" + b + "&srsname=" + c + "&bbox=" + h.join(",") + "," + c + "&outputFormat=" + d;
- var l = new XMLHttpRequest();
- l.open("GET", h);
- e && f && l.setRequestHeader("Authorization", "Basic " + window.btoa(e + ":" + f));
- l.onerror = function () {
- console.error("WFS request error");
- q();
- };
- l.onload = function () {
- if (200 === l.status) {
- g.clear();
- var a = g.getFormat().readFeatures(l.responseText);
- g.addFeatures(a);
- p(a);
- } else console.error("WFS request status", l.status), q();
- };
- l.send();
- },
- }),
- h = new ol.layer.Vector({ source: g }),
- k = this;
- g.on("featuresloadstart", function (a) {
- k.removeSnapLayer(h);
- });
- g.on("featuresloadend", function (a) {
- window.setTimeout(function () {
- k.addSnapLayer(h);
- }, 10);
- });
- return h;
-};
-netgis.Map.prototype.createLayerVectorTiles = function (a, b, c, d) {
- return new ol.layer.VectorTile({
- extent: b,
- source: new ol.source.VectorTile({ format: new ol.format.MVT(), overlaps: !0, url: a, minZoom: c, maxZoom: d }),
- });
-};
-netgis.Map.prototype.createLayerKML = function (a) {
- var b = new ol.layer.Vector({ source: new ol.source.Vector({ features: [] }) }),
- c = this;
- netgis.util.request(a, function (a) {
- a = new ol.format.KML().readFeatures(a, { featureProjection: c.view.getProjection() });
- for (var d = 0; d < a.length; d++) {
- var f = a[d],
- g = f.getProperties(),
- h = { fill: "rgba( 127, 127, 127, 0.5 )", stroke: "rgba( 127, 127, 127, 1.0 )", radius: 5, width: 3 },
- k;
- for (k in g) {
- var l = g[k];
- switch (k) {
- case "fill":
- h.fill = l;
- break;
- case "fill-opacity":
- h["fill-opacity"] = l;
- break;
- case "stroke":
- h.stroke = l;
- break;
- case "stroke-opacity":
- h["stroke-opacity"] = l;
- break;
- case "stroke-width":
- h.width = l;
- }
- }
- h["fill-opacity"] &&
- ((g = netgis.util.hexToRGB(h.fill)),
- (g = "rgba(" + g.join(",") + "," + h["fill-opacity"] + ")"),
- (h.fill = g));
- h["stroke-opacity"] &&
- ((g = netgis.util.hexToRGB(h.stroke)),
- (g = "rgba(" + g.join(",") + "," + h["stroke-opacity"] + ")"),
- (h.stroke = g));
- h = new ol.style.Style({
- image: new ol.style.Circle({ radius: h.radius, fill: new ol.style.Fill({ color: h.stroke }) }),
- fill: new ol.style.Fill({ color: h.fill }),
- stroke: new ol.style.Stroke({ color: h.stroke, width: h.width }),
- });
- f.setStyle(h);
- }
- b.getSource().addFeatures(a);
- });
- return b;
-};
-netgis.Map.prototype.createBufferFeature = function (a, b, c) {
- a = this.createBufferGeometry(a, b, c);
- return new ol.Feature({ geometry: a });
-};
-netgis.Map.prototype.createBufferGeometry = function (a, b, c) {
- var d = new jsts.io.OL3Parser();
- a = d.read(a).buffer(b, c);
- if (this.boundsLayer)
- for (b = this.boundsLayer.getSource().getFeatures(), c = 0; c < b.length; c++) {
- var e = d.read(b[c].getGeometry());
- a.intersects(e) && (a = a.intersection(e));
- }
- return d.write(a);
-};
-netgis.Map.prototype.splitMultiPolygons = function (a) {
- a = a.getSource();
- for (var b = a.getFeatures(), c = [], d = [], e = 0; e < b.length; e++) {
- var f = b[e],
- g = f.getGeometry();
- if (g instanceof ol.geom.MultiPolygon) {
- g = g.getPolygons();
- for (var h = 0; h < g.length; h++) {
- var k = new ol.Feature({ geometry: g[h] });
- d.push(k);
- }
- c.push(f);
- }
- }
- for (e = 0; e < c.length; e++) a.removeFeature(c[e]);
- a.addFeatures(d);
-};
-netgis.Map.prototype.clearSketchFeatures = function () {
- for (var a = this.editLayer.getSource(), b = 0; b < this.sketchFeatures.length; b++)
- a.removeFeature(this.sketchFeatures[b]);
- this.sketchFeatures = [];
-};
-netgis.Map.prototype.updateDrawBufferPreview = function () {
- if (!1 !== this.config.tools.editable) {
- var a = this.interactions[this.mode][0].getOverlay().getSource().getFeatures();
- if (!(1 > a.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.Map.prototype.isPointInsideLayer = function (a, b) {
- a = a.getSource().getFeatures();
- for (var c = 0; c < a.length; c++) if (a[c].getGeometry().intersectsCoordinate(b)) return !0;
- return !1;
-};
-netgis.Map.prototype.isGeomInsideLayer = function (a, b) {
- var c = b.getCoordinates();
- if (b instanceof ol.geom.LineString) {
- if (2 > c.length) return !1;
- } else if (b instanceof ol.geom.Polygon && ((c = c[0]), 4 > c.length || 0 >= b.getArea())) return !1;
- c = new jsts.io.OL3Parser();
- b = c.read(b);
- a = a.getSource().getFeatures();
- for (var d = 0; d < a.length; d++) {
- var e = a[d].getGeometry();
- if (c.read(e).contains(b)) return !0;
- }
- return !1;
-};
-netgis.Map.prototype.getScaleFromResolution = function (a) {
- return Math.round(2834.6472 * a);
-};
-netgis.Map.prototype.getResolutionFromScale = function (a) {
- var b = 39.3701 * ol.proj.Units.METERS_PER_UNIT[this.view.getProjection().getUnits()];
- return 1 / (this.normalizeScale(a) * b * 72);
-};
-netgis.Map.prototype.normalizeScale = function (a) {
- return 1 < a ? 1 / a : a;
-};
-netgis.Map.prototype.updateEditOutput = function () {
- var a = this.editLayer.getSource().getFeatures(),
- b = this.view.getProjection().getCode(),
- 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); d < a.length; d++) {
- var e = a[d].getGeometry();
- e instanceof ol.geom.Polygon && (b += e.getArea());
- }
- c.area = b;
- netgis.util.invoke(this.container, netgis.Events.MAP_EDIT_LAYER_CHANGE, { geojson: c });
-};
-netgis.Map.prototype.updateSnapFeatures = function () {
- this.snapFeatures.clear();
- var a = this;
- this.map.getLayers().forEach(function (b, c, d) {
- c = b.get("id");
- c !== netgis.Client.Layers.PARCEL_DISTRICTS &&
- c !== netgis.Client.Layers.PARCEL_FIELDS &&
- c !== netgis.Client.Layers.PARCEL_FEATURES &&
- b instanceof ol.layer.Vector &&
- a.addSnapLayer(b);
- });
-};
-netgis.Map.prototype.zoom = function (a) {
- this.view.animate({ zoom: this.view.getZoom() + a, duration: 200 });
-};
-netgis.Map.prototype.zoomLevel = function (a) {
- this.view.animate({ zoom: a, center: this.view.getCenter(), duration: 300 });
-};
-netgis.Map.prototype.zoomCoords = function (a, b, c) {
- this.view.animate({ zoom: c, center: [a, b], duration: 500 });
-};
-netgis.Map.prototype.zoomLonLat = function (a, b, c) {
- this.view.animate({ zoom: c, center: ol.proj.fromLonLat([a, b], this.view.getProjection()), duration: 500 });
-};
-netgis.Map.prototype.zoomExtentLonLat = function (a, b, c, d) {
- a = ol.proj.fromLonLat([a, b], this.view.getProjection());
- c = ol.proj.fromLonLat([c, d], this.view.getProjection());
- this.view.fit([a[0], a[1], c[0], c[1]]);
-};
-netgis.Map.prototype.zoomExtent = function (a, b, c, d) {
- this.view.fit([a, b, c, d]);
-};
-netgis.Map.prototype.zoomBBox = function (a, b) {
- this.view.fit(a, { duration: b });
-};
-netgis.Map.prototype.zoomScale = function (a, b) {
- b
- ? this.view.animate({ resolution: this.getResolutionFromScale(a), duration: 500 })
- : this.view.setResolution(this.getResolutionFromScale(a));
-};
-netgis.Map.prototype.zoomFeature = function (a, b) {
- a = this.layers[a].getSource().getFeatureById(b);
- this.view.fit(a.getGeometry().getExtent(), { duration: 500 });
-};
-netgis.Map.prototype.zoomFeatures = function (a) {
- if (a && !(1 > a.length)) {
- for (var b = a[0].getGeometry().getExtent(), c = 1; c < a.length; c++)
- b = ol.extent.extend(b, a[c].getGeometry().getExtent());
- this.view.fit(b, { duration: 0, padding: this.view.padding });
- }
-};
-netgis.Map.prototype.addViewHistory = function (a, b) {
- if (0 < this.viewHistory.length) {
- var c = this.viewHistory[this.viewHistory.length - 1],
- d = !0;
- 10 < Math.abs(a[0] - c.center[0]) && (d = !1);
- 10 < Math.abs(a[1] - c.center[1]) && (d = !1);
- 0.1 < Math.abs(b - c.zoom) && (d = !1);
- if (!0 === d) return;
- }
- this.viewHistory.push({ center: a, zoom: b });
- this.viewHistory.length > this.viewHistoryMax && this.viewHistory.shift();
- this.viewIndex = this.viewHistory.length - 1;
-};
-netgis.Map.prototype.gotoViewHistory = function (a) {
- if (!(1 > this.viewHistory.length)) {
- var b = this.viewHistory.length - 1;
- 0 > a && (a = b);
- a > b && (a = 0);
- a !== this.viewIndex &&
- ((b = this.viewHistory[a]),
- (this.viewIndex = a),
- (this.viewFromHistory = !0),
- this.view.setCenter(b.center),
- this.view.setZoom(b.zoom));
- }
-};
-netgis.Map.prototype.setPadding = function (a, b, c, d) {
- var e = this.paddingBuffer;
- this.view.padding = [a + e, b + e, c + e, d + e];
-};
-netgis.Map.prototype.exportImage = function (a, b, c, d, e) {
- var f = this,
- g = this.container,
- h = this.map,
- k = this.config["export"],
- l = new Image();
- l.onload = function () {
- var m = document.createElement("div");
- m.style.position = "fixed";
- m.style.top = "0px";
- m.style.left = "0px";
- m.style.width = b + "px";
- m.style.height = c + "px";
- m.style.background = "white";
- m.style.zIndex = -1;
- m.style.opacity = 0;
- m.style.pointerEvents = "none";
- g.appendChild(m);
- h.setTarget(m);
- h.once("rendercomplete", function () {
- var n = document.createElement("canvas");
- n.width = b;
- n.height = c;
- var p = n.getContext("2d");
- p.webkitImageSmoothingEnabled = !1;
- p.mozImageSmoothingEnabled = !1;
- p.imageSmoothingEnabled = !1;
- Array.prototype.forEach.call(document.querySelectorAll(".ol-layer canvas"), function (a) {
- if (0 < a.width) {
- var b = a.parentNode.style.opacity;
- p.globalAlpha = "" === b ? 1 : Number(b);
- b = a.style.transform
- .match(/^matrix\(([^\(]*)\)$/)[1]
- .split(",")
- .map(Number);
- CanvasRenderingContext2D.prototype.setTransform.apply(p, b);
- p.drawImage(a, 0, 0);
- }
- });
- p.drawImage(l, 0, 0);
- p.fillStyle = "#fff";
- p.fillRect(0, n.height - 30, 140, 30);
- p.fillStyle = "#000";
- p.font = "4mm sans-serif";
- p.fillText(netgis.util.getTimeStamp(), 10, n.height - 10);
- var q = document.createElement("a");
- switch (a) {
- case "pdf":
- e = e ? e : 0;
- var r = 297 - e - e,
- t = 210 - e - e,
- u = n.width / n.height;
- if (!d) {
- var v = r;
- r = t;
- t = v;
- }
- if (n.height > n.width) {
- var w = t;
- v = w * u;
- v > r && ((v = r), (w = v / u));
- } else (v = r), (w = v / u), w > t && ((w = t), (v = w * u));
- u = new jsPDF(d ? "l" : "p");
- var x = e;
- x += (r - v) / 2;
- r = e;
- r += (t - w) / 2;
- u.addImage(n.toDataURL("image/png,1.0", 1), "PNG", x, r, v, w);
- u.setFillColor(255, 255, 255);
- u.rect(x, r + w - 11, 80, 11, "F");
- u.setFontSize(8);
- u.text("Datum: " + netgis.util.getTimeStamp(), x + 2, r + w - 2 - 4);
- u.text("Quelle: " + window.location.href, x + 2, r + w - 2);
- n = u.output("bloburl", { filename: k.default_filename + ".pdf" });
- window.open(n, "_blank");
- break;
- case "jpeg":
- window.navigator.msSaveBlob
- ? window.navigator.msSaveBlob(n.msToBlob(), k.default_filename + ".jpg")
- : (q.setAttribute("download", k.default_filename + ".jpg"),
- q.setAttribute("href", n.toDataURL("image/jpeg", 1)),
- q.click());
- break;
- case "png":
- window.navigator.msSaveBlob
- ? window.navigator.msSaveBlob(n.msToBlob(), k.default_filename + ".png")
- : (q.setAttribute("download", k.default_filename + ".png"),
- q.setAttribute("href", n.toDataURL("image/png", 1)),
- q.click());
- break;
- case "gif":
- q.setAttribute("download", k.default_filename + ".gif"),
- (t = new GIF({ workerScript: k.gif_worker, quality: 1 })),
- t.addFrame(n),
- t.on("finished", function (a) {
- q.setAttribute("href", window.URL.createObjectURL(a));
- q.click();
- }),
- t.render();
- }
- h.setTarget(g);
- g.removeChild(m);
- netgis.util.invoke(f.container, netgis.Events.EXPORT_END, null);
- });
- h.renderSync();
- };
- l.src = k.logo;
-};
-netgis.Map.prototype.exportFeatures = function (a) {
- var b = this.editLayer.getSource().getFeatures();
- !0 === a && ((a = this.nonEditLayer.getSource().getFeatures()), (b = b.concat(a)));
- b = new ol.format.GeoJSON().writeFeaturesObject(b, {
- featureProjection: this.view.getProjection(),
- dataProjection: "EPSG:4326",
- });
- a = this.config["export"].default_filename + ".geojson";
- b.name = a;
- netgis.util.downloadJSON(b, a);
- netgis.util.invoke(this.container, netgis.Events.EXPORT_END, null);
-};
-netgis.Map.prototype.onClientContextResponse = function (a) {
- this.initConfig(a.detail.context.config);
-};
-netgis.Map.prototype.onEditLayerLoaded = function (a) {
- a = a.detail.geojson;
- var b = new ol.format.GeoJSON();
- b.readProjection(a);
- a = b.readFeatures(a, { featureProjection: this.view.getProjection().getCode() });
- var c = this,
- d = a.slice();
- window.setTimeout(function () {
- c.zoomFeatures(d);
- }, 10);
- b = [];
- for (var e = 0; e < a.length; e++) {
- var f = a[e];
- !0 === f.getProperties().editable && b.push(f);
- }
- for (e = 0; e < b.length; e++) a.splice(a.indexOf(b[e]), 1);
- this.editEventsSilent = !0;
- this.editLayer.getSource().addFeatures(b);
- this.nonEditLayer.getSource().addFeatures(a);
- this.editEventsSilent = !1;
-};
-netgis.Map.prototype.onClientSetMode = function (a) {
- this.setMode(a.detail.mode);
-};
-netgis.Map.prototype.onPanelResize = function (a) {
- this.setPadding(0, 0, 0, a.detail.width);
- this.redrawVectorLayers();
-};
-netgis.Map.prototype.onPanelToggle = function (a) {
- a = !1;
- for (var b = 0, c = this.container.parentNode.getElementsByClassName("netgis-panel"), d = 0; d < c.length; d++)
- if (c[d].classList.contains("netgis-show")) {
- a = !0;
- b = c[d].getBoundingClientRect().width;
- break;
- }
- a ? this.setPadding(0, 0, 0, b) : this.setPadding(0, 0, 0, 0);
- this.redrawVectorLayers();
-};
-netgis.Map.prototype.onMapZoom = function (a) {
- this.zoom(a.detail.delta);
-};
-netgis.Map.prototype.onMapZoomHome = function (a) {
- a = this.config;
- if (a.map.bbox) this.zoomBBox(a.map.bbox, 500);
- else if (a.map.center) {
- var b = a.map.center;
- this.zoomCoords(b[0], b[1], a.map.zoom);
- } else a.map.center_lonlat && ((b = a.map.center_lonlat), this.zoomLonLat(b[0], b[1], a.map.zoom));
-};
-netgis.Map.prototype.onMapZoomLonLat = function (a) {
- a = a.detail;
- this.zoomLonLat(a.lon, a.lat, a.zoom);
-};
-netgis.Map.prototype.onMapZoomScale = function (a) {
- a = a.detail;
- this.zoomScale(a.scale, a.anim);
-};
-netgis.Map.prototype.onMapZoomLayer = function (a) {
- a = a.detail;
- var b = this.layers[a.id];
- b
- ? this.view.fit(b.getSource().getExtent(), { duration: 600 })
- : console.warning("trying to zoom non existing layer", a.id);
-};
-netgis.Map.prototype.onMapZoomLevel = function (a) {
- this.view.setZoom(a.detail.z);
-};
-netgis.Map.prototype.onMapViewPrev = function (a) {
- this.gotoViewHistory(this.viewIndex - 1);
-};
-netgis.Map.prototype.onMapViewNext = function (a) {
- this.gotoViewHistory(this.viewIndex + 1);
-};
-netgis.Map.prototype.onMapLayerToggle = function (a) {
- a = a.detail;
- switch (a.id) {
- case netgis.LayerID.EDITABLE:
- a.on ? this.map.addLayer(this.editLayer) : this.map.removeLayer(this.editLayer);
- break;
- case netgis.LayerID.NON_EDITABLE:
- a.on ? this.map.addLayer(this.nonEditLayer) : this.map.removeLayer(this.nonEditLayer);
- break;
- default:
- if (a.on)
- for (var b = this.config.layers, c = 0; c < b.length; c++) {
- var d = b[c];
- d.id === a.id && this.addLayer(a.id, d);
- }
- else this.removeLayer(a.id);
- }
-};
-netgis.Map.prototype.onMapLayerTransparency = function (a) {
- a = a.detail;
- var b = this.layers[a.id];
- b ||
- (netgis.util.invoke(this.container, netgis.Events.MAP_LAYER_TOGGLE, { id: a.id, on: !0 }),
- (b = this.layers[a.id]));
- b.setOpacity(1 - a.transparency);
-};
-netgis.Map.prototype.onMapLayerOrder = function (a) {
- a = a.detail;
- var b = this.layers[a.id];
- b && b.setZIndex(a.order);
-};
-netgis.Map.prototype.onMapLayerCreate = function (a) {
- a = a.detail;
- this.addLayer(a.id, a);
-};
-netgis.Map.prototype.onMapLayerDelete = function (a) {
- this.removeLayer(a.detail.id);
-};
-netgis.Map.prototype.onMapSnapToggle = function (a) {
- this.setSnapping(a.detail.on);
-};
-netgis.Map.prototype.onMapMoveEnd = function (a) {
- a = this.view.getCenter();
- var b = this.view.getZoom(),
- c = this.getScaleFromResolution(this.view.getResolution());
- !1 === this.viewFromHistory && this.addViewHistory(a, b);
- netgis.util.invoke(this.container, netgis.Events.MAP_VIEW_CHANGE, { center: a, zoom: b, scale: c });
- this.viewFromHistory = !1;
-};
-netgis.Map.prototype.onPointerMove = function (a) {
- var b = a.pixel;
- a = a.coordinate;
- var c = null,
- d = null,
- e = void 0,
- f = this;
- this.map.forEachFeatureAtPixel(b, function (a, b) {
- if (b && b !== f.measureLayer && b !== f.nonEditLayer)
- if (b === f.boundsLayer) e = a;
- else if (b !== f.previewLayer) return (c = a), (d = b), !0;
- });
- switch (this.mode) {
- case netgis.Modes.VIEW:
- 0 === this.getQueryableLayers(!0).length
- ? c
- ? this.container.classList.add("netgis-clickable")
- : this.container.classList.remove("netgis-clickable")
- : this.container.classList.add("netgis-clickable");
- break;
- case netgis.Modes.DRAW_POINTS:
- case netgis.Modes.DRAW_LINES:
- this.updateDrawBufferPreview();
- }
- if (
- this.boundsLayer &&
- (this.mode === netgis.Modes.DRAW_POINTS ||
- this.mode === netgis.Modes.DRAW_LINES ||
- this.mode === netgis.Modes.DRAW_POLYGONS)
- ) {
- if (e) this.container.classList.remove("netgis-not-allowed"), this.container.removeAttribute("title");
- else {
- this.container.classList.add("netgis-not-allowed");
- var g = this.config.tools.bounds_message;
- g && 0 < g.length && this.container.setAttribute("title", g);
- }
- this.hoverBounds = e;
- }
- g = !0;
- this.mode === netgis.Modes.MEASURE_LINE && (g = !1);
- this.mode === netgis.Modes.MEASURE_AREA && (g = !1);
- this.mode === netgis.Modes.DRAW_POINTS && (g = !1);
- this.mode === netgis.Modes.DRAW_LINES && (g = !1);
- this.mode === netgis.Modes.DRAW_POLYGONS && (g = !1);
- this.mode === netgis.Modes.CUT_FEATURES_DRAW && (g = !1);
- if (c !== this.hoverFeature && g) {
- if (this.hoverFeature) this.onFeatureLeave(this.hoverFeature, this.hoverLayer, b, a);
- if (c) this.onFeatureEnter(c, d, b, a);
- this.redrawVectorLayers();
- this.hoverFeature = c;
- this.hoverLayer = d;
- }
- if (c) this.onFeatureHover(c, d, b, a);
-};
-netgis.Map.prototype.onPointerLeave = function (a) {
- this.hoverFeature &&
- (this.onFeatureLeave(this.hoverFeature, this.hoverLayer, [a.offsetX, a.offsetY], null),
- (this.hoverLayer = this.hoverFeature = null));
-};
-netgis.Map.prototype.onPointerClick = function (a) {
- var b = a.pixel;
- a = a.coordinate;
- this.popupOverlay.setPosition(a);
- var c = {
- resolution: this.view.getResolution(),
- projection: this.view.getProjection().getCode(),
- bbox: this.view.calculateExtent(this.map.getSize()),
- width: this.map.getSize()[0],
- height: this.map.getSize()[1],
- },
- d = ol.proj.toLonLat(a, this.view.getProjection()),
- e = {};
- for (g in this.layers) {
- var f = this.layers[g].getSource();
- f.getFeatureInfoUrl &&
- (e[g] = f.getFeatureInfoUrl(a, c.resolution, c.projection, { INFO_FORMAT: "text/html" }));
- }
- var g = {
- mode: this.mode,
- pixel: b,
- coords: a,
- lon: d[0],
- lat: d[1],
- overlay: this.popupOverlay.getElement(),
- view: c,
- info: e,
- };
- this.mode === netgis.Modes.VIEW && netgis.util.invoke(this.container, netgis.Events.MAP_CLICK, g);
- var h = [],
- k = this;
- this.map.forEachFeatureAtPixel(b, function (a, b) {
- b &&
- b !== k.nonEditLayer &&
- b !== k.boundsLayer &&
- b !== k.measureLayer &&
- b !== k.previewLayer &&
- (-1 < k.sketchFeatures.indexOf(a) || h.push({ feature: a, layer: b }));
- });
- g = !0;
- this.mode === netgis.Modes.VIEW && (g = !1);
- this.mode === netgis.Modes.MEASURE_LINE && (g = !1);
- this.mode === netgis.Modes.MEASURE_AREA && (g = !1);
- this.mode === netgis.Modes.DRAW_POINTS && (g = !1);
- this.mode === netgis.Modes.DRAW_LINES && (g = !1);
- this.mode === netgis.Modes.DRAW_POLYGONS && (g = !1);
- this.mode === netgis.Modes.CUT_FEATURES_DRAW && (g = !1);
- g &&
- (0 < h.length && !1 === this.selectMultiple && (this.selectedFeatures = []),
- 0 === h.length && !1 === this.selectMultiple && (this.selectedFeatures = []),
- !0 === this.selectReset && ((this.selectedFeatures = []), (this.selectReset = !1)),
- this.mode === netgis.Modes.BUFFER_FEATURES_DYNAMIC &&
- this.updateBufferFeaturesSketch(this.bufferFeaturesRadius, this.bufferFeaturesSegments));
- for (c = 0; c < h.length; c++)
- (d = h[c]),
- g &&
- ((e = this.selectedFeatures.indexOf(d.feature)),
- -1 < e ? this.selectedFeatures.splice(e, 1) : this.selectedFeatures.push(d.feature)),
- this.onFeatureClick(d.feature, d.layer, b, a);
- this.redrawVectorLayers();
-};
-netgis.Map.prototype.onContainerClick = function (a) {
- if (2 === a.detail) this.onDoubleClick(a);
-};
-netgis.Map.prototype.onDoubleClick = function (a) {
- switch (this.mode) {
- case netgis.Modes.MEASURE_LINE:
- this.interactions[netgis.Modes.MEASURE_LINE] &&
- this.interactions[netgis.Modes.MEASURE_LINE][2].finishDrawing();
- break;
- case netgis.Modes.MEASURE_AREA:
- this.interactions[netgis.Modes.MEASURE_AREA] &&
- this.interactions[netgis.Modes.MEASURE_AREA][2].finishDrawing();
- break;
- case netgis.Modes.DRAW_LINES:
- this.interactions[netgis.Modes.DRAW_LINES] && this.interactions[netgis.Modes.DRAW_LINES][0].finishDrawing();
- break;
- case netgis.Modes.DRAW_POLYGONS:
- this.interactions[netgis.Modes.DRAW_POLYGONS] &&
- this.interactions[netgis.Modes.DRAW_POLYGONS][0].finishDrawing();
- break;
- case netgis.Modes.CUT_FEATURES_DRAW:
- this.interactions[netgis.Modes.CUT_FEATURES_DRAW] &&
- this.interactions[netgis.Modes.CUT_FEATURES_DRAW][0].finishDrawing();
- }
-};
-netgis.Map.prototype.onRightClick = function (a) {
- switch (this.mode) {
- case netgis.Modes.MEASURE_LINE:
- this.interactions[netgis.Modes.MEASURE_LINE] &&
- this.interactions[netgis.Modes.MEASURE_LINE][2].finishDrawing();
- break;
- case netgis.Modes.MEASURE_AREA:
- this.interactions[netgis.Modes.MEASURE_AREA] &&
- this.interactions[netgis.Modes.MEASURE_AREA][2].finishDrawing();
- break;
- case netgis.Modes.DRAW_LINES:
- this.interactions[netgis.Modes.DRAW_LINES] && this.interactions[netgis.Modes.DRAW_LINES][0].finishDrawing();
- break;
- case netgis.Modes.DRAW_POLYGONS:
- this.interactions[netgis.Modes.DRAW_POLYGONS] &&
- this.interactions[netgis.Modes.DRAW_POLYGONS][0].finishDrawing();
- break;
- case netgis.Modes.CUT_FEATURES_DRAW:
- this.interactions[netgis.Modes.CUT_FEATURES_DRAW] &&
- this.interactions[netgis.Modes.CUT_FEATURES_DRAW][0].finishDrawing();
- }
- a.preventDefault();
- return !1;
-};
-netgis.Map.prototype.onKeyDown = function (a) {
- a = a.keyCode || a.which;
- switch (this.mode) {
- case netgis.Modes.MEASURE_LINE:
- 13 === a && this.interactions[netgis.Modes.MEASURE_LINE][2].finishDrawing();
- 27 === a && this.interactions[netgis.Modes.MEASURE_LINE][2].abortDrawing();
- break;
- case netgis.Modes.MEASURE_AREA:
- 13 === a && this.interactions[netgis.Modes.MEASURE_AREA][2].finishDrawing();
- 27 === a && this.interactions[netgis.Modes.MEASURE_AREA][2].abortDrawing();
- break;
- case netgis.Modes.DRAW_LINES:
- var b = this.interactions[netgis.Modes.DRAW_LINES][0];
- 13 === a && b.finishDrawing();
- 27 === a && b.abortDrawing();
- 8 === a && b.removeLastPoint();
- 46 === a && b.abortDrawing();
- break;
- case netgis.Modes.DRAW_POLYGONS:
- b = this.interactions[netgis.Modes.DRAW_POLYGONS][0];
- 13 === a && b.finishDrawing();
- 27 === a && b.abortDrawing();
- 8 === a && b.removeLastPoint();
- 46 === a && b.abortDrawing();
- break;
- case netgis.Modes.CUT_FEATURES_DRAW:
- (b = this.interactions[netgis.Modes.CUT_FEATURES_DRAW][0]),
- 13 === a && b.finishDrawing(),
- 27 === a && b.abortDrawing(),
- 8 === a && b.removeLastPoint(),
- 46 === a && b.abortDrawing(),
- 16 === a &&
- netgis.util.invoke(this.container, netgis.Events.CLIENT_SET_MODE, {
- mode: netgis.Modes.CUT_FEATURES,
- });
- }
- 16 === a &&
- !1 === this.selectMultiple &&
- netgis.util.invoke(this.container, netgis.Events.SELECT_MULTI_TOGGLE, { on: !0 });
-};
-netgis.Map.prototype.onKeyUp = function (a) {
- a = a.keyCode || a.which;
- switch (this.mode) {
- case netgis.Modes.BUFFER_FEATURES:
- this.selectMultiple &&
- netgis.util.invoke(this.container, netgis.Events.CLIENT_SET_MODE, {
- mode: netgis.Modes.BUFFER_FEATURES_EDIT,
- });
- break;
- case netgis.Modes.CUT_FEATURES:
- this.selectMultiple &&
- netgis.util.invoke(this.container, netgis.Events.CLIENT_SET_MODE, {
- mode: netgis.Modes.CUT_FEATURES_DRAW,
- });
- }
- 16 === a &&
- (netgis.util.invoke(this.container, netgis.Events.SELECT_MULTI_TOGGLE, { on: !1 }),
- (this.selectReset = !1),
- !0 === this.config.tools.select_multi_reset && (this.selectReset = !0));
-};
-netgis.Map.prototype.onFeatureEnter = function (a, b, c, d) {
- if (b) {
- switch (this.mode) {
- case netgis.Modes.VIEW:
- this.container.classList.add("netgis-clickable");
- break;
- case netgis.Modes.DELETE_FEATURES:
- case netgis.Modes.BUFFER_FEATURES:
- case netgis.Modes.BUFFER_FEATURES_DYNAMIC:
- case netgis.Modes.CUT_FEATURES:
- this.container.classList.add("netgis-clickable");
- a.setStyle(this.styleHover.bind(this));
- break;
- case netgis.Modes.SEARCH_PARCEL:
- this.container.classList.add("netgis-clickable"), a.setStyle(this.styleHover.bind(this));
- }
- netgis.util.invoke(this.container, netgis.Events.MAP_FEATURE_ENTER, {
- pixel: c,
- coords: d,
- layer: b.get("id"),
- properties: a.getProperties(),
- });
- }
-};
-netgis.Map.prototype.onFeatureHover = function (a, b, c, d) {};
-netgis.Map.prototype.onFeatureClick = function (a, b, c, d) {
- var e = ol.proj.toLonLat(d, this.view.getProjection());
- c = {
- pixel: c,
- coords: d,
- lon: e[0],
- lat: e[1],
- overlay: this.popupOverlay.getElement(),
- layer: b.get("id"),
- id: a.getId(),
- properties: a.getProperties(),
- mode: this.mode,
- };
- netgis.util.invoke(this.container, netgis.Events.MAP_FEATURE_CLICK, c);
- switch (this.mode) {
- case netgis.Modes.DELETE_FEATURES:
- b.getSource().removeFeature(a);
- this.onFeatureLeave(a, b);
- netgis.util.invoke(this.container, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.VIEW });
- break;
- case netgis.Modes.BUFFER_FEATURES:
- case netgis.Modes.BUFFER_FEATURES_EDIT:
- this.onFeatureLeave(a, b);
- this.selectMultiple
- ? netgis.util.invoke(this.container, netgis.Events.CLIENT_SET_MODE, {
- mode: netgis.Modes.BUFFER_FEATURES,
- })
- : netgis.util.invoke(this.container, netgis.Events.CLIENT_SET_MODE, {
- mode: netgis.Modes.BUFFER_FEATURES_EDIT,
- });
- break;
- case netgis.Modes.BUFFER_FEATURES_DYNAMIC:
- this.updateBufferFeaturesSketch(this.bufferFeaturesRadius, this.bufferFeaturesSegments);
- break;
- case netgis.Modes.CUT_FEATURES:
- if (a.getGeometry() instanceof ol.geom.Point) this.onFeatureLeave(a, b);
- else
- this.selectMultiple ||
- netgis.util.invoke(this.container, netgis.Events.CLIENT_SET_MODE, {
- mode: netgis.Modes.CUT_FEATURES_DRAW,
- });
- }
-};
-netgis.Map.prototype.onFeatureLeave = function (a, b, c, d) {
- netgis.util.invoke(this.container, netgis.Events.MAP_FEATURE_LEAVE, {
- pixel: c,
- coords: d,
- layer: b ? b.get("id") : null,
- properties: a.getProperties(),
- });
- switch (this.mode) {
- case netgis.Modes.DELETE_FEATURES:
- case netgis.Modes.BUFFER_FEATURES:
- case netgis.Modes.BUFFER_FEATURES_DYNAMIC:
- case netgis.Modes.CUT_FEATURES:
- case netgis.Modes.CUT_FEATURES_DRAW:
- this.container.classList.remove("netgis-clickable");
- a.setStyle(null);
- break;
- case netgis.Modes.SEARCH_PARCEL:
- this.container.classList.remove("netgis-clickable"), a.setStyle(null);
- }
-};
-netgis.Map.prototype.onEditLayerAdd = function (a) {
- this.editEventsSilent || this.updateEditOutput();
- this.snapFeatures.push(a.feature);
-};
-netgis.Map.prototype.onEditLayerRemove = function (a) {
- this.editEventsSilent || this.updateEditOutput();
- this.snapFeatures.remove(a.feature);
-};
-netgis.Map.prototype.onEditLayerChange = function (a) {
- this.editEventsSilent || this.updateEditOutput();
-};
-netgis.Map.prototype.onCopyFeatureToEdit = function (a) {
- a = a.detail;
- var b = this.layers[a.source].getSource().getFeatureById(a.id);
- b
- ? this.editLayer.getSource().getFeatureById(a.id) ||
- (b.setStyle(void 0), (this.selectedFeatures = []), this.editLayer.getSource().addFeature(b))
- : console.error("feature to copy not found", a);
-};
-netgis.Map.prototype.onGeolocToggleActive = function (a) {
- a.detail.on ? this.geolocLayer.setVisible(!0) : this.geolocLayer.setVisible(!1);
-};
-netgis.Map.prototype.onGeolocChange = function (a) {
- a = a.detail;
- this.geolocLayer
- .getSource()
- .getFeatures()[0]
- .getGeometry()
- .setCoordinates(ol.proj.fromLonLat([a.lon, a.lat], this.view.getProjection()));
- !0 === a.center && this.zoomLonLat(a.lon, a.lat, this.view.getZoom());
-};
-netgis.Map.prototype.onMeasureLineBegin = function (a) {
- this.measureLayer.getSource().clear();
-};
-netgis.Map.prototype.onMeasureAreaBegin = function (a) {
- this.measureLayer.getSource().clear();
-};
-netgis.Map.prototype.onMeasureClear = function (a) {
- this.measureLayer.getSource().clear();
-};
-netgis.Map.prototype.onDrawBufferEnd = function (a) {
- var b = a.feature;
- a = this.previewLayer.getSource().getFeatures();
- if (0 !== a.length) {
- a = a[0];
- if (this.boundsLayer) {
- var c = !0;
- c =
- b.getGeometry() instanceof ol.geom.Point
- ? this.isPointInsideLayer(this.boundsLayer, b.getGeometry().getCoordinates())
- : this.isGeomInsideLayer(this.boundsLayer, b.getGeometry());
- if (!c) return;
- c = new jsts.io.OL3Parser();
- for (
- var d = c.read(a.getGeometry()), e = this.boundsLayer.getSource().getFeatures(), f = 0;
- f < e.length;
- f++
- ) {
- var g = c.read(e[f].getGeometry());
- d.intersects(g) && (d = d.intersection(g));
- }
- c = c.write(d);
- a.setGeometry(c);
- }
- var h = this.editLayer.getSource();
- h.addFeature(a.clone());
- window.setTimeout(function () {
- h.removeFeature(b);
- }, 10);
- }
-};
-netgis.Map.prototype.onSelectMultiToggle = function (a) {
- this.selectMultiple = a.detail.on;
-};
-netgis.Map.prototype.onDrawBufferToggle = function (a) {
- a = a.detail;
- this.setDrawBuffer(a.on, a.radius, a.segments);
-};
-netgis.Map.prototype.onDrawBufferChange = function (a) {
- a = a.detail;
- this.drawBufferRadius = a.radius;
- this.drawBufferSegments = a.segments;
- this.updateDrawBufferPreview();
-};
-netgis.Map.prototype.onBufferChange = function (a) {
- a = a.detail;
- this.updateBufferFeaturesSketch(a.radius, a.segments);
- this.bufferFeaturesRadius = a.radius;
- this.bufferFeaturesSegments = a.segments;
-};
-netgis.Map.prototype.updateBufferFeaturesSketch = function (a, b) {
- var c = this.selectedFeatures,
- d = this.editLayer.getSource();
- this.clearSketchFeatures();
- for (var e = 0; e < c.length; e++) {
- var f = this.createBufferFeature(this.selectedFeatures[e].getGeometry(), a, b);
- d.addFeature(f);
- this.sketchFeatures.push(f);
- }
-};
-netgis.Map.prototype.onBufferAccept = function (a) {
- a = this.selectedFeatures;
- for (var b = this.editLayer.getSource(), c = 0; c < a.length; c++) b.removeFeature(a[c]);
- this.sketchFeatures = [];
- this.selectedFeatures = [];
-};
-netgis.Map.prototype.onCutFeaturesDrawEnd = function (a) {
- a = a.feature;
- for (var b = 0; b < this.selectedFeatures.length; b++) {
- var c = this.selectedFeatures[b];
- if (c)
- if ((this.onFeatureLeave(c, null), c.getGeometry() instanceof ol.geom.Point))
- console.error("trying to cut a point feature", c);
- else {
- var d = new jsts.io.OL3Parser(),
- e = d.read(c.getGeometry()),
- f = d.read(a.getGeometry());
- e = e.difference(f);
- d = d.write(e);
- d = new ol.Feature({ geometry: d });
- e = this.editLayer.getSource();
- e.removeFeature(c);
- e.addFeature(d);
- }
- }
- this.selectedFeatures = [];
- this.editEventsSilent = !0;
- this.splitMultiPolygons(this.editLayer);
- this.editEventsSilent = !1;
- this.updateEditOutput();
- netgis.util.invoke(this.container, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.VIEW });
-};
-netgis.Map.prototype.onImportLayerAccept = function (a) {
- a = a.detail;
- a = this.addLayer(a.id, a);
- var b = a.getSource();
- var features = b.getFeatures()
- if (features.length < 100){
- this.editLayer.getSource().addFeatures(b.getFeatures())
- }
- b instanceof ol.source.Vector &&
- 0 < b.getFeatures().length &&
- this.view.fit(a.getSource().getExtent(), { duration: 600 });
-};
-netgis.Map.prototype.onImportGeoportalSubmit = function (a) {};
-netgis.Map.prototype.onImportLayerPreview = function (a) {
- a = a.detail;
- var b = this.createLayer(a),
- c = this.view.getProjection().getCode();
- netgis.util.invoke(this.container, netgis.Events.IMPORT_LAYER_PREVIEW_FEATURES, {
- id: a.id,
- title: a.title,
- layer: b,
- proj: c,
- });
-};
-netgis.Map.prototype.onSearchParcelReset = function (a) {
- (a = this.config.searchparcel.districts_service.min_zoom) && this.view.setZoom(a);
-};
-netgis.Map.prototype.onSearchParcelItemEnter = function (a) {
- a = a.detail.id;
- this.layers.searchparcel_parcels.getSource().getFeatureById(a).setStyle(this.styleHover.bind(this));
-};
-netgis.Map.prototype.onSearchParcelItemLeave = function (a) {
- a = a.detail.id;
- this.layers.searchparcel_parcels.getSource().getFeatureById(a).setStyle(null);
-};
-netgis.Map.prototype.onSearchParcelItemClick = function (a) {
- this.zoomFeature("searchparcel_parcels", a.detail.id);
-};
-netgis.Map.prototype.onSearchParcelItemImport = function (a) {};
-netgis.Map.prototype.onDrawPointsUpdateGeom = function (a, b, c) {
- b ? b.setCoordinates(a) : (b = new ol.geom.Point(a));
- return b;
-};
-netgis.Map.prototype.onDrawLinesUpdateGeom = function (a, b, c) {
- b ? b.setCoordinates(a) : (b = new ol.geom.LineString(a));
- this.drawError = !this.isGeomInsideLayer(this.boundsLayer, b);
- return b;
-};
-netgis.Map.prototype.onDrawPolygonsUpdateGeom = function (a, b, c) {
- b ? ((a = [a[0].concat([a[0][0]])]), b.setCoordinates(a)) : (b = new ol.geom.Polygon(a));
- c = !0;
- if (4 > a[0].length)
- for (var d = 0; d < a[0].length; d++) {
- if (!this.isPointInsideLayer(this.boundsLayer, a[0][d])) {
- c = !1;
- break;
- }
- }
- else c = this.isGeomInsideLayer(this.boundsLayer, b);
- this.drawError = !c;
- return b;
-};
-netgis.Map.prototype.onDrawPointsEnd = function (a) {
- if (this.boundsLayer) {
- var b = a.feature,
- c = this.editLayer;
- this.isPointInsideLayer(this.boundsLayer, b.getGeometry().getCoordinates()) ||
- window.setTimeout(function () {
- c.getSource().removeFeature(b);
- }, 10);
- }
-};
-netgis.Map.prototype.onDrawLinesEnd = function (a) {
- if (this.boundsLayer) {
- var b = a.feature,
- c = this.editLayer;
- this.isGeomInsideLayer(this.boundsLayer, b.getGeometry()) ||
- window.setTimeout(function () {
- c.getSource().removeFeature(b);
- }, 10);
- }
-};
-netgis.Map.prototype.onDrawPolygonsEnd = function (a) {
- if (this.boundsLayer) {
- var b = a.feature,
- c = this.editLayer;
- this.isGeomInsideLayer(this.boundsLayer, b.getGeometry()) ||
- window.setTimeout(function () {
- c.getSource().removeFeature(b);
- }, 10);
- }
-};
-netgis.Map.prototype.onExportBegin = function (a) {
- a = a.detail;
- switch (a.format) {
- case "geojson":
- this.exportFeatures(a.nonEdits);
- break;
- default:
- this.exportImage(a.format, a.width, a.height, a.landscape, a.padding);
- }
-};
-netgis.Map.prototype.onScalebarSelectChange = function (a) {
- netgis.util.invoke(this.scalebarSelect, netgis.Events.MAP_ZOOM_SCALE, {
- scale: this.scalebarSelect.value,
- anim: !0,
- });
-};
-netgis.Map.prototype.onTimeSliderShow = function (a) {};
-netgis.Map.prototype.onTimeSliderHide = function (a) {};
-netgis.Map.prototype.onTimeSliderSelect = function (a) {
- a = a.detail;
- console.info("Time Slider Select:", a);
- this.layers[a.layer].getSource().updateParams({ TIME: a.time });
-};
-netgis = netgis || {};
-netgis.Menu = function (a) {
- this.config = a;
- this.initElements();
- this.initConfig(a);
-};
-netgis.Menu.Config = { header: "NetGIS Client", items: [], compact: !0 };
-netgis.Menu.prototype.initElements = function () {
- this.container = document.createElement("nav");
- this.container.className = "netgis-menu netgis-noselect netgis-color-a netgis-gradient-a netgis-shadow-large";
- this.toggle = document.createElement("button");
- this.toggle.setAttribute("type", "button");
- this.toggle.addEventListener("click", this.onToggleClick.bind(this));
- this.toggle.className = "netgis-menu-toggle netgis-hover-c";
- this.toggle.innerHTML = "";
- this.container.appendChild(this.toggle);
-};
-netgis.Menu.prototype.initConfig = function (a) {
- var b = a.menu;
- if (
- b &&
- (b.header && this.addHeader(b.header),
- !0 === b.compact && this.container.classList.add("netgis-compact"),
- b.items)
- ) {
- b = b.items;
- for (var c = 0; c < b.length; c++) {
- var d = b[c];
- if (d.items) {
- var e = d.items;
- if ("scales" === d.id) for (var f = this.getScaleItems(), g = 0; g < f.length; g++) e.push(f[g]);
- this.addDropdown(d.title, e);
- } else if (d.url && 0 < d.url.length) this.addLink(d.url, d.title);
- else if (d.options)
- if ("scales" === d.options) {
- e = { 0: "1:X" };
- for (g = 0; g < a.map.scales.length; g++) e[a.map.scales[g]] = "1:" + a.map.scales[g];
- var h = a.map.default_scale;
- this.addSelect(d.id, d.title, e, h).options[0].classList.add("netgis-hide");
- } else {
- e = d.options;
- if (d.value) h = d.value;
- else
- for (var k in e) {
- h = k;
- break;
- }
- this.addSelect(d.id, d.title, e, h);
- }
- else this.addButton(d.id, d.title);
- }
- }
-};
-netgis.Menu.prototype.attachTo = function (a) {
- a.appendChild(this.container);
- a.addEventListener(netgis.Events.MAP_VIEW_CHANGE, this.onMapViewChange.bind(this));
-};
-netgis.Menu.prototype.addHeader = function (a) {
- var b = document.createElement("h1");
- b.className = "netgis-hover-c";
- b.innerHTML = a;
- this.container.appendChild(b);
- return b;
-};
-netgis.Menu.prototype.addButton = function (a, b) {
- a = this.createButton(a, b);
- this.container.appendChild(a);
- return a;
-};
-netgis.Menu.prototype.addLink = function (a, b) {
- a = this.createLink(a, b);
- this.container.appendChild(a);
- return a;
-};
-netgis.Menu.prototype.addSelect = function (a, b, c, d) {
- var e = document.createElement("span");
- e.className = "netgis-wrapper netgis-hover-c";
- var f = document.createElement("select");
- f.setAttribute("data-id", a);
- for (var g in c) {
- a = c[g];
- var h = document.createElement("option");
- h.setAttribute("value", g);
- h.innerHTML = a;
- f.appendChild(h);
- }
- f.value = d;
- f.addEventListener("change", this.onSelectChange.bind(this));
- e.appendChild(f);
- b && ((c = document.createElement("span")), (c.className = "netgis-icon"), (c.innerHTML = b), e.appendChild(c));
- this.container.appendChild(e);
- return f;
-};
-netgis.Menu.prototype.addDropdown = function (a, b) {
- var c = document.createElement("div");
- c.className = "netgis-dropdown netgis-hover-c";
- var d = document.createElement("button");
- d.setAttribute("type", "button");
- d.addEventListener("click", this.onDropdownClick.bind(this));
- d.innerHTML = a;
- c.appendChild(d);
- a = document.createElement("ul");
- a.className = "netgis-color-e netgis-shadow";
- c.appendChild(a);
- for (d = 0; d < b.length; d++) a.appendChild(this.createMenuItem(b[d]));
- this.container.appendChild(c);
- return c;
-};
-netgis.Menu.prototype.getScaleItems = function () {
- var a = [];
- if (!this.config || !this.config.map || !this.config.map.scales) return a;
- for (var b = this.config.map.scales, c = 0; c < b.length; c++)
- a.push({ id: netgis.Commands.ZOOM_SCALE, title: "1:" + b[c] });
- return a;
-};
-netgis.Menu.prototype.createMenuItem = function (a) {
- var b = document.createElement("li");
- b.className = "netgis-hover-c";
- var c = a.items;
- if ("scales" === a.id) for (var d = this.getScaleItems(), e = 0; e < d.length; e++) c.push(d[e]);
- if (c && 0 < c.length) (a = this.createMenu(a.title, c)), b.appendChild(a.button), b.appendChild(a.list);
- else if (a.type)
- switch (a.type) {
- case "checkbox":
- a = this.createCheckbox(a.id, a.title, a.value);
- b.appendChild(a);
- break;
- default:
- console.error("unhandled menu item type", a.type, "for", a.id);
- }
- else
- a.url
- ? ((a = this.createLink(a.url, a.title)), b.appendChild(a))
- : ((a = this.createButton(a.id, a.title)), b.appendChild(a));
- return b;
-};
-netgis.Menu.prototype.createMenu = function (a, b) {
- var c = document.createElement("button");
- c.setAttribute("type", "button");
- c.addEventListener("pointerdown", this.onButtonClick.bind(this));
- c.innerHTML = a;
- a = document.createElement("ul");
- a.className = "netgis-color-e netgis-shadow";
- for (var d = 0; d < b.length; d++) a.appendChild(this.createMenuItem(b[d]));
- return { button: c, list: a };
-};
-netgis.Menu.prototype.createLink = function (a, b) {
- var c = document.createElement("a");
- c.setAttribute("href", a);
- c.setAttribute("target", "_blank");
- c.className = "netgis-button netgis-text-e netgis-hover-c";
- c.innerHTML = b;
- return c;
-};
-netgis.Menu.prototype.createButton = function (a, b) {
- var c = document.createElement("button");
- c.className = "netgis-text-e netgis-hover-c";
- c.setAttribute("type", "button");
- c.setAttribute("data-id", a);
- c.addEventListener("pointerdown", this.onButtonClick.bind(this));
- c.innerHTML = b;
- return c;
-};
-netgis.Menu.prototype.createCheckbox = function (a, b, c) {
- var d = document.createElement("label");
- d.className = "netgis-button";
- var e = document.createElement("input");
- e.setAttribute("type", "checkbox");
- e.setAttribute("data-id", a);
- e.addEventListener("change", this.onCheckboxChange.bind(this));
- e.checked = c;
- d.appendChild(e);
- a = document.createElement("span");
- a.innerHTML = b;
- d.appendChild(a);
- return d;
-};
-netgis.Menu.prototype.onToggleClick = function (a) {
- this.container.classList.toggle("netgis-menu-large");
-};
-netgis.Menu.prototype.onButtonClick = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id");
- this.container.classList.remove("netgis-menu-large");
- this.container.scrollTop = 0;
- netgis.util.invoke(a, netgis.Events.MENU_BUTTON_CLICK, { id: b });
- netgis.Client.handleCommand(a, b);
-};
-netgis.Menu.prototype.onCheckboxChange = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id"),
- c = a.checked;
- netgis.util.invoke(a, netgis.Events.MENU_CHECKBOX_CHANGE, { id: b, checked: c });
- switch (b) {
- case netgis.Menu.ItemID.SNAP_TOGGLE:
- netgis.util.invoke(a, netgis.Events.MAP_SNAP_TOGGLE, { on: c });
- break;
- default:
- console.error("unhandled menu item id", b);
- }
-};
-netgis.Menu.prototype.onSelectChange = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id"),
- c = a.value;
- netgis.util.invoke(a, netgis.Events.MENU_SELECT_CHANGE, { id: b, value: c });
- switch (b) {
- case "scales":
- netgis.util.invoke(a, netgis.Events.MAP_ZOOM_SCALE, { scale: Number.parseInt(c) });
- }
-};
-netgis.Menu.prototype.onMapViewChange = function (a) {
- a = a.detail;
- for (var b = a.scale, c = this.container.getElementsByTagName("button"), d = 0; d < c.length; d++) {
- var e = c[d];
- "zoom_scale" === e.getAttribute("data-id") &&
- (Number.parseInt(e.innerText.split(":")[1]) === b
- ? e.classList.add("netgis-bold")
- : e.classList.remove("netgis-bold"));
- }
- c = this.container.getElementsByTagName("select");
- for (d = 0; d < c.length; d++) {
- e = c[d];
- if ("scales" === !e.getAttribute("data-id")) break;
- for (var f = !1, g = this.config.map.scales, h = 0; h < g.length; h++)
- if (g[h] === b) {
- f = !0;
- break;
- }
- f
- ? e.options[0].classList.add("netgis-hide")
- : (e.options[0].setAttribute("value", a.scale),
- (e.options[0].innerHTML = "1:" + a.scale),
- e.options[0].classList.remove("netgis-hide"));
- e.value = b;
- }
-};
-netgis.Menu.prototype.onDropdownClick = function (a) {
- a.currentTarget.parentNode.classList.toggle("netgis-active");
-};
-netgis = netgis || {};
-netgis.Modal = function (a) {
- this.initElements(a);
- this.initEvents();
-};
-netgis.Modal.prototype.initElements = function (a) {
- this.container = document.createElement("div");
- this.container.className = "netgis-modal";
- this.container.addEventListener("click", this.onContainerClick.bind(this));
- this.content = document.createElement("div");
- this.content.className = "netgis-color-e netgis-shadow";
- this.container.appendChild(this.content);
- this.header = this.addHeader(this.content, a, this.onHeaderClick.bind(this));
-};
-netgis.Modal.prototype.initEvents = function () {};
-netgis.Modal.prototype.attachTo = function (a) {
- a.appendChild(this.container);
-};
-netgis.Modal.prototype.show = function () {
- this.container.classList.add("netgis-show");
-};
-netgis.Modal.prototype.hide = function () {
- this.container.classList.remove("netgis-show");
-};
-netgis.Modal.prototype.addHeader = function (a, b, c) {
- var d = document.createElement("button");
- d.className = "netgis-button netgis-clip-text netgis-color-c netgis-gradient-a";
- d.innerHTML = "" + b + "";
- d.setAttribute("type", "button");
- c && (d.onclick = c);
- a && a.appendChild(d);
- return d;
-};
-netgis.Modal.prototype.onHeaderClick = function (a) {
- this.hide();
-};
-netgis.Modal.prototype.onContainerClick = function (a) {
- a.target === this.container && this.hide();
-};
-netgis = netgis || {};
-netgis.Modes = Object.freeze({
- VIEW: "view",
- ZOOM_BOX: "zoom-box",
- MEASURE_LINE: "measure-line",
- MEASURE_AREA: "measure-area",
- DRAW_POINTS: "draw-points",
- DRAW_LINES: "draw-lines",
- DRAW_POLYGONS: "draw-polygons",
- MODIFY_FEATURES: "modify-features",
- DELETE_FEATURES: "delete-features",
- BUFFER_FEATURES: "buffer-features",
- BUFFER_FEATURES_EDIT: "buffer-features-edit",
- BUFFER_FEATURES_DYNAMIC: "buffer-features-dynamic",
- CUT_FEATURES: "cut-features",
- CUT_FEATURES_DRAW: "cut-features-draw",
- CUT_FEATURES_DYNAMIC: "cut-features-dynamic",
- SEARCH_PARCEL: "search-parcel",
-});
-netgis = netgis || {};
-netgis.Modules = {
- menu: !0,
- layertree: !0,
- map: !0,
- controls: !0,
- attribution: !0,
- legend: !0,
- geolocation: !0,
- info: !0,
- searchplace: !0,
- searchparcel: !0,
- toolbox: !0,
- import: !0,
- export: !0,
- timeslider: !0,
-};
-netgis = netgis || {};
-netgis.OWS = (function () {
- return {
- read: function (a, b) {
- console.info("OWS READ:", a);
- console.info("OWS PROPS:", a.properties);
- a = a.features;
- for (b = 0; b < a.length; b++) {
- var c = a[b];
- console.info("OWS FEATURE:", b, c);
- var d = c;
- c = d.properties;
- switch (d.type) {
- case "Feature":
- d = c.minScaleDenominator;
- var e = c.maxScaleDenominator;
- console.info("TITLE:", c.title, "FOLDER:", c.folder);
- console.info("MIN/MAX SCALE:", d, e);
- c = c.offerings;
- for (d = 0; d < c.length; d++) {
- e = c[d];
- console.info("OFFERING:", d, e);
- var f = e,
- g = f.code;
- e = f.content;
- switch (g) {
- case "http://www.opengis.net/spec/owc-atom/1.0/req/kml":
- for (f = 0; f < e.length; f++)
- switch (((g = e[f]), g.type)) {
- case "application/vnd.google-earth.kml+xml":
- break;
- default:
- console.error("OWS: unknown offering content type '" + g.type + "'", g);
- }
- break;
- default:
- console.error("OWS: unknown offering code '" + g + "'", f);
- }
- }
- break;
- default:
- console.error("OWS: unknown feature type '" + d.type + "'", d);
- }
- }
- },
- };
-})();
-netgis = netgis || {};
-netgis.OWS = (function () {
- return {
- read: function (a, b) {
- b = { layers: [], folders: [] };
- netgis.util.isDefined(a.properties) && (b.bbox = a.properties.bbox);
- a = a.features;
- for (var c = 0; c < a.length; c++) {
- var d = a[c];
- if ("Feature" === d.type) {
- var e = d.properties;
- e = e.folder;
- var f = !1;
- for (d = 0; d < b.folders.length; d++)
- if (b.folders[d].id === e) {
- f = !0;
- break;
- }
- if (!f) {
- d = e.split("/");
- e = [];
- for (f = 0; f < d.length; f++) {
- var g = d[f];
- 0 < g.length && e.push(g);
- }
- var h = -1;
- for (f = 0; f < e.length; f++) {
- g = e[f];
- var k = "/" + e.slice(0, f + 1).join("/"),
- l = !1;
- for (d = 0; d < b.folders.length; d++)
- if (b.folders[d].path === k) {
- h = d;
- l = !0;
- break;
- }
- l || ((d = b.folders.length), b.folders.push({ title: g, parent: h, path: k }), (h = d));
- }
- }
- }
- }
- for (c = 0; c < a.length; c++)
- if (((d = a[c]), "Feature" === d.type)) {
- e = d.properties;
- f = -1;
- for (d = 0; d < b.folders.length; d++)
- if (b.folders[d].path === e.folder) {
- f = d;
- break;
- }
- d = e.offerings;
- for (g = 0; g < d.length; g++)
- switch (((h = d[g]), (k = h.operations), h.code)) {
- case "http://www.opengis.net/spec/owc-geojson/1.0/req/wms":
- b.layers.push({
- folder: f,
- type: netgis.LayerTypes.WMS,
- url: k[0].href,
- title: e.title,
- attribution: e.rights,
- active: e.active,
- });
- break;
- case "http://www.opengis.net/spec/owc-geojson/1.0/req/xyz":
- h = k[0];
- b.layers.push({
- folder: f,
- type: netgis.LayerTypes.XYZ,
- url: h.href,
- title: e.title,
- attribution: e.rights,
- active: e.active,
- });
- break;
- case "http://www.opengis.net/spec/owc-geojson/1.0/req/osm":
- (h = k[0]),
- b.layers.push({
- folder: f,
- type: netgis.LayerTypes.XYZ,
- url: h.href,
- title: e.title,
- attribution: e.rights,
- active: e.active,
- });
- }
- }
- return b;
- },
- };
-})();
-netgis.OWS.Config = { url: "" };
-netgis = netgis || {};
-netgis.Panel = function (a) {
- this.initElements(a);
- this.initEvents();
-};
-netgis.Panel.prototype.initElements = function (a) {
- var b = document.createElement("section");
- b.className = "netgis-panel netgis-resize-right netgis-color-e netgis-shadow";
- this.content = document.createElement("div");
- b.appendChild(this.content);
- this.header = this.addHeader(b, a, this.onHeaderClick.bind(this));
- this.container = b;
-};
-netgis.Panel.prototype.initEvents = function () {
- this.resizeObserver = new ResizeObserver(this.onResize.bind(this)).observe(this.container);
-};
-netgis.Panel.prototype.attachTo = function (a) {
- a.appendChild(this.container);
- a.addEventListener(netgis.Events.PANEL_TOGGLE, this.onPanelToggle.bind(this));
-};
-netgis.Panel.prototype.addHeader = function (a, b, c) {
- var d = document.createElement("button");
- d.className = "netgis-button netgis-clip-text netgis-color-c netgis-gradient-a netgis-shadow";
- d.innerHTML = "" + b + "";
- d.setAttribute("type", "button");
- c && (d.onclick = c);
- a && a.appendChild(d);
- return d;
-};
-netgis.Panel.prototype.show = function () {
- this.container.classList.contains("netgis-show") ||
- (this.container.classList.add("netgis-show"),
- netgis.util.invoke(this.container, netgis.Events.PANEL_TOGGLE, {
- container: this.container,
- visible: !0,
- width: this.container.getBoundingClientRect().width,
- }));
-};
-netgis.Panel.prototype.hide = function () {
- this.container.classList.contains("netgis-show") &&
- (this.container.classList.remove("netgis-show"),
- netgis.util.invoke(this.container, netgis.Events.PANEL_TOGGLE, { container: this.container, visible: !1 }));
-};
-netgis.Panel.prototype.toggle = function () {
- this.container.classList.toggle("netgis-show");
- var a = this.container.classList.contains("netgis-show");
- netgis.util.invoke(this.container, netgis.Events.PANEL_TOGGLE, {
- container: this.container,
- visible: a,
- width: a ? this.container.getBoundingClientRect().width : void 0,
- });
-};
-netgis.Panel.prototype.visible = function () {
- return this.container.classList.contains("netgis-show");
-};
-netgis.Panel.prototype.width = function () {
- return this.container.getBoundingClientRect().width;
-};
-netgis.Panel.prototype.setTitle = function (a) {
- this.header.getElementsByTagName("span")[0].innerHTML = a;
-};
-netgis.Panel.prototype.onHeaderClick = function (a) {
- this.hide();
-};
-netgis.Panel.prototype.onResize = function (a) {
- this.container.classList.contains("netgis-show") &&
- ((a = this.container.getBoundingClientRect()),
- netgis.util.invoke(this.container, netgis.Events.PANEL_RESIZE, { width: a.width }));
-};
-netgis.Panel.prototype.onPanelToggle = function (a) {
- a = a.detail;
- a.visible && a.container !== this.container && this.hide();
-};
-netgis = netgis || {};
-netgis.Plugins = function (a) {
- this.config = a;
- this.plugins = {};
- this.initConfig(a);
-};
-netgis.Plugins.Config = {};
-netgis.Plugins.prototype.initConfig = function (a) {
- if ((a = a.plugins))
- for (var b = 0; b < a.length; b++) {
- var c = a[b],
- d = {};
- switch (c.type) {
- case "panel":
- var e = new netgis.Panel(c.title);
- e.container.classList.add("netgis-plugin");
- c.active && e.show();
- d.panel = e;
- break;
- case "window":
- (e = new netgis.Window(c.title)),
- e.container.classList.add("netgis-plugin"),
- c.active && e.show(),
- (d.window = e);
- }
- if (e && (e.container.setAttribute("data-id", c.id), c.url && 0 < c.url.length)) {
- var f = document.createElement("iframe");
- f.setAttribute("name", c.id);
- f.setAttribute("title", c.title);
- f.setAttribute("src", c.url);
- f.setAttribute("data-id", c.id);
- f.onload = this.onIFrameLoad.bind(this);
- d.iframe = f;
- e.content.appendChild(f);
- }
- this.plugins[c.id] = d;
- }
-};
-netgis.Plugins.prototype.attachTo = function (a) {
- for (var b in this.plugins) {
- var c = this.plugins[b];
- c.panel && c.panel.attachTo(a);
- c.window && c.window.attachTo(a);
- }
- a.addEventListener(netgis.Events.PLUGIN_TOGGLE, this.onPluginToggle.bind(this));
- a.addEventListener(netgis.Events.PANEL_TOGGLE, this.onPanelToggle.bind(this));
- for (var d in netgis.Events) a.addEventListener(netgis.Events[d], this.onClientEvent.bind(this));
-};
-netgis.Plugins.prototype.onPluginToggle = function (a) {
- a = this.plugins[a.detail.id];
- a.panel && a.panel.toggle();
- a.window && a.window.toggle();
-};
-netgis.Plugins.prototype.onIFrameLoad = function (a) {
- var b = a.target,
- c;
- for (c in netgis.Events)
- b.contentDocument.addEventListener(
- netgis.Events[c],
- function (a) {
- this.onIFrameEvent(a, b.getAttribute("data-id"));
- }.bind(this)
- );
-};
-netgis.Plugins.prototype.onIFrameMessage = function (a) {
- console.info("IFrame Message:", a);
-};
-netgis.Plugins.prototype.onIFrameEvent = function (a, b) {
- var c = a.explicitOriginalTarget,
- d = a.detail;
- b = this.plugins[b];
- b.panel && !b.panel.container.parentNode.contains(c) && netgis.util.invoke(b.panel.container, a.type, d);
- b.window && !b.window.container.parentNode.contains(c) && netgis.util.invoke(b.window.container, a.type, d);
-};
-netgis.Plugins.prototype.onClientEvent = function (a) {
- var b = a.srcElement,
- c = a.type;
- a = a.detail;
- if (!b.classList.contains("netgis-plugin"))
- for (var d in this.plugins) {
- var e = this.plugins[d];
- (e.panel && e.panel.container === b) ||
- (e.window && e.window.container === b) ||
- netgis.util.invoke(e.iframe.contentDocument, c, a);
- }
-};
-netgis.Plugins.prototype.onPanelToggle = function (a) {
- a = a.detail;
- if (a.visible)
- for (var b in this.plugins) {
- var c = this.plugins[b];
- c.panel && a.container !== c.panel.container && c.panel.hide();
- }
-};
-netgis = netgis || {};
-netgis.Popup = function (a) {
- a || (a = { direction: "down" });
- this.options = a;
- this.initElements();
-};
-netgis.Popup.prototype.initElements = function () {
- document.body.addEventListener("pointerdown", this.onDocumentPointerDown.bind(this));
- this.container = document.createElement("div");
- this.container.className = "netgis-popup";
- this.container.addEventListener("pointerdown", this.onPointerDown.bind(this));
- this.content = document.createElement("div");
- this.content.className = "netgis-content netgis-color-e netgis-round";
- this.container.appendChild(this.content);
- this.content.addEventListener("pointermove", function (a) {
- a.stopPropagation();
- });
- switch (this.options.direction) {
- default:
- case "down":
- this.container.classList.add("netgis-dir-down");
- break;
- case "right":
- this.container.classList.add("netgis-dir-right");
- }
- this.arrow = document.createElement("div");
- this.arrow.className = "netgis-arrow";
- this.container.appendChild(this.arrow);
- this.closer = document.createElement("button");
- this.closer.setAttribute("type", "button");
- this.closer.className = "netgis-closer netgis-color-e netgis-text-a";
- this.closer.innerHTML = "";
- this.closer.onclick = this.onCloserClick.bind(this);
- this.content.appendChild(this.closer);
- this.loader = document.createElement("div");
- this.loader.className = "netgis-loader netgis-color-e netgis-text-a";
- this.loader.innerHTML = "";
- this.wrapper = document.createElement("div");
- this.wrapper.className = "netgis-wrapper";
- this.content.appendChild(this.wrapper);
-};
-netgis.Popup.prototype.attachTo = function (a) {
- a.appendChild(this.container);
-};
-netgis.Popup.prototype.show = function () {
- this.container.classList.add("netgis-show");
- netgis.util.isMobile() && (this.container.style.width = document.body.getBoundingClientRect().width - 10 + "px");
-};
-netgis.Popup.prototype.hide = function () {
- this.container.classList.remove("netgis-show");
-};
-netgis.Popup.prototype.isVisible = function () {
- return this.container.classList.contains("netgis-show");
-};
-netgis.Popup.prototype.showLoader = function () {
- this.content.appendChild(this.loader);
-};
-netgis.Popup.prototype.hideLoader = function () {
- this.loader.parentNode === this.content && this.content.removeChild(this.loader);
-};
-netgis.Popup.prototype.setPosition = function (a, b) {
- var c = this.container.parentNode.getBoundingClientRect(),
- d = this.arrow.getBoundingClientRect();
- a > c.width - d.width && (a = c.width - d.width);
- a < d.width && (a = d.width);
- switch (this.options.direction) {
- default:
- case "down":
- this.container.style.left = a + "px";
- this.container.style.top = b + "px";
- break;
- case "right":
- (this.container.style.right = c.width - a + "px"), (this.container.style.top = b + "px");
- }
- this.content.style.left = "";
- a = this.content.getBoundingClientRect();
- 0 > a.x
- ? (this.content.style.left = -a.x + "px")
- : a.x + a.width > c.width && (this.content.style.left = -(a.x + a.width - c.width) + "px");
-};
-netgis.Popup.prototype.setHeader = function (a) {
- this.closer.getElementsByTagName("span")[0].innerHTML = a;
-};
-netgis.Popup.prototype.setContent = function (a) {
- this.wrapper.innerHTML = a;
-};
-netgis.Popup.prototype.clearContent = function () {
- this.wrapper.innerHTML = "";
-};
-netgis.Popup.prototype.addContent = function (a) {
- this.wrapper.innerHTML += a;
-};
-netgis.Popup.prototype.onDocumentPointerDown = function (a) {};
-netgis.Popup.prototype.onPointerDown = function (a) {
- a.stopPropagation();
-};
-netgis.Popup.prototype.onCloserClick = function (a) {
- this.hide();
-};
-netgis = netgis || {};
-netgis.Search = function (a) {
- this.debounce = 400;
- this.initElements(a);
- this.initEvents();
-};
-netgis.Search.prototype.initElements = function (a) {
- var b = document.createElement("div");
- b.className = "netgis-search";
- this.container = b;
- var c = document.createElement("label");
- b.appendChild(c);
- this.label = c;
- var d = document.createElement("input");
- d.className = "netgis-round netgis-shadow";
- d.setAttribute("type", "text");
- d.setAttribute("placeholder", a);
- c.appendChild(d);
- this.input = d;
- a = document.createElement("button");
- a.setAttribute("type", "button");
- a.innerHTML = "";
- c.appendChild(a);
- this.button = a;
- a = document.createElement("button");
- a.setAttribute("type", "button");
- a.className = "netgis-hide";
- a.innerHTML = "";
- c.appendChild(a);
- this.closer = a;
- c = document.createElement("ul");
- b.appendChild(c);
- this.results = c;
-};
-netgis.Search.prototype.initEvents = function () {
- this.input.addEventListener("change", this.onInputChange.bind(this));
- this.input.addEventListener("keydown", this.onInputKeyDown.bind(this));
- this.input.addEventListener("keyup", this.onInputKeyUp.bind(this));
- this.button.addEventListener("click", this.onButtonClick.bind(this));
- this.closer.addEventListener("click", this.onCloserClick.bind(this));
-};
-netgis.Search.prototype.attachTo = function (a) {
- a.appendChild(this.container);
-};
-netgis.Search.prototype.show = function () {
- this.container.classList.remove("netgis-hide");
-};
-netgis.Search.prototype.hide = function () {
- this.container.classList.add("netgis-hide");
-};
-netgis.Search.prototype.toggle = function () {
- this.container.classList.toggle("netgis-hide");
-};
-netgis.Search.prototype.isVisible = function () {
- return !this.container.classList.contains("netgis-hide");
-};
-netgis.Search.prototype.minimize = function () {
- this.container.classList.remove("netgis-color-e", "netgis-shadow");
- this.input.classList.add("netgis-shadow");
-};
-netgis.Search.prototype.maximize = function () {
- this.container.classList.add("netgis-color-e", "netgis-shadow");
- this.input.classList.remove("netgis-shadow");
-};
-netgis.Search.prototype.focus = function () {
- this.input.focus();
-};
-netgis.Search.prototype.setTitle = function (a) {
- this.input.setAttribute("placeholder", a);
-};
-netgis.Search.prototype.addResult = function (a, b) {
- var c = document.createElement("li"),
- d = document.createElement("button");
- d.className = "netgis-button netgis-clip-text netgis-color-e netgis-hover-a";
- d.innerHTML = a;
- d.setAttribute("type", "button");
- d.setAttribute("title", d.innerText);
- d.setAttribute("data-result", b);
- d.addEventListener("click", this.onResultClick.bind(this));
- c.appendChild(d);
- 0 === this.results.childNodes.length && this.showClearButton(!0);
- this.results.appendChild(c);
- this.maximize();
- return c;
-};
-netgis.Search.prototype.clearResults = function () {
- this.results.innerHTML = "";
- this.minimize();
- netgis.util.invoke(this.container, netgis.Events.SEARCH_CLEAR, null);
-};
-netgis.Search.prototype.clearAll = function () {
- this.clearResults();
- this.lastQuery = null;
- this.input.value = "";
- this.showClearButton(!1);
-};
-netgis.Search.prototype.requestSearch = function (a) {
- (this.lastQuery && this.lastQuery === a) ||
- ((this.lastQuery = a), netgis.util.invoke(this.container, netgis.Events.SEARCH_CHANGE, { query: a }));
-};
-netgis.Search.prototype.showClearButton = function (a) {
- !1 === a
- ? (this.button.classList.remove("netgis-hide"), this.closer.classList.add("netgis-hide"))
- : (this.button.classList.add("netgis-hide"), this.closer.classList.remove("netgis-hide"));
-};
-netgis.Search.prototype.onInputKeyDown = function (a) {
- if (13 === a.keyCode) return a.preventDefault(), !1;
-};
-netgis.Search.prototype.onInputKeyUp = function (a) {
- switch (a.keyCode) {
- case 13:
- a = this.results.getElementsByTagName("button");
- 0 < a.length && a[0].click();
- break;
- case 27:
- this.clearAll();
- break;
- default:
- this.onInputChange();
- }
-};
-netgis.Search.prototype.onInputChange = function (a) {
- this.timeout && window.clearTimeout(this.timeout);
- this.timeout = window.setTimeout(this.onInputTimeout.bind(this), this.debounce);
-};
-netgis.Search.prototype.onInputTimeout = function () {
- var a = this.input.value;
- a = a.trim();
- 0 < a.length ? this.requestSearch(a) : this.clearAll();
-};
-netgis.Search.prototype.onButtonClick = function (a) {
- this.input.focus();
-};
-netgis.Search.prototype.onCloserClick = function (a) {
- this.clearAll();
- this.input.focus();
-};
-netgis.Search.prototype.onResultClick = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-result");
- netgis.util.invoke(a, netgis.Events.SEARCH_SELECT, { item: a, data: b });
-};
-netgis = netgis || {};
-netgis.SearchParcel = function (a) {
- this.config = a;
- this.districtsLayerID = "searchparcel_districts";
- this.fieldsLayerID = "searchparcel_fields";
- this.parcelsLayerID = "searchparcel_parcels";
- this.selected = {};
- this.initElements();
- this.initEvents();
- this.initConfig(a);
-};
-netgis.SearchParcel.Config = {
- open: !1,
- name_url:
- "./proxy.php?https://geodaten.naturschutz.rlp.de/kartendienste_naturschutz/mod_alkis/gem_search.php?placename={q}",
- parcel_url:
- "./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",
- districts_service: {
- type: "WFS",
- url: "http://geo5.service24.rlp.de/wfs/verwaltungsgrenzen_rp.fcgi?",
- name: "vermkv:gemarkungen_rlp",
- format: "application/json; subtype=geojson",
- min_zoom: 12,
- },
- fields_service: {
- url: "http://geo5.service24.rlp.de/wfs/verwaltungsgrenzen_rp.fcgi?",
- name: "vermkv:fluren_rlp",
- filter_property: "gmkgnr",
- },
-};
-netgis.SearchParcel.prototype.initElements = function () {
- this.panel = new netgis.Panel("Flurst\u00fccks-Suche");
- this.panel.container.style.minWidth = "92mm";
- this.panel.container.addEventListener(netgis.Events.PANEL_TOGGLE, this.onPanelToggle.bind(this));
- this.container = document.createElement("section");
- this.container.className = "netgis-search-parcel";
- this.panel.content.appendChild(this.container);
- this.popup = new netgis.Popup();
- this.popup.setHeader("Flurst\u00fcck");
- var a = document.createElement("section");
- this.top = a;
- this.container.appendChild(a);
- var b = this.createInput("Gemarkungsname:");
- b.style.position = "relative";
- a.appendChild(b);
- this.nameInput = b.children[0];
- this.nameInput.setAttribute("title", "ENTER: Ausw\u00e4hlen, ESCAPE: Zur\u00fccksetzen");
- this.nameInput.addEventListener("keyup", this.onInputNameKey.bind(this));
- this.nameLoader = document.createElement("div");
- this.nameLoader.className = "netgis-loader netgis-text-primary netgis-hide";
- this.nameLoader.innerHTML = "";
- b.appendChild(this.nameLoader);
- this.nameList = document.createElement("ul");
- a.appendChild(this.nameList);
- b = this.createInput("Gemarkungsnummer:");
- this.districtInput = b.children[0];
- a.appendChild(b);
- b = this.createInput("Flurnummer:");
- this.fieldInput = b.children[0];
- this.fieldInput.addEventListener("keyup", this.onInputFieldKey.bind(this));
- a.appendChild(b);
- b = this.createInput("Flurst\u00fccksnummer (Z\u00e4hler/Nenner):");
- this.parcelInputA = b.children[1];
- this.parcelInputA.style.width = "48%";
- this.parcelInputB = this.parcelInputA.cloneNode(!0);
- this.parcelInputB.style.marginLeft = "4%";
- b.appendChild(this.parcelInputB);
- a.appendChild(b);
- b = document.createElement("button");
- b.setAttribute("type", "button");
- b.addEventListener("click", this.onParcelSearchClick.bind(this));
- b.className = "netgis-color-a netgis-hover-c";
- b.innerHTML = "Flurst\u00fccke suchen";
- b.style.marginTop = "4mm";
- a.appendChild(b);
- b = document.createElement("section");
- b.className = "netgis-hide";
- this.bottom = b;
- this.container.appendChild(b);
- var c = document.createElement("button");
- c.className = "netgis-button netgis-clip-text netgis-color-c netgis-gradient-a";
- c.innerHTML = "Flurst\u00fccke ";
- c.setAttribute("type", "button");
- c.addEventListener("click", this.onBottomHeaderClick.bind(this));
- b.appendChild(c);
- this.parcelCount = c.getElementsByTagName("span")[1];
- this.parcelInfo = document.createElement("p");
- this.parcelTable = this.createTable(["Flur", "Z\u00e4hler", "Nenner", "FKZ", "Fl\u00e4che (qm)"]);
- this.parcelTable.classList.add("netgis-hide");
- this.parcelTable.style.position = "absolute";
- this.parcelTable.style.width = "100%";
- this.parcelTable.style.top = "12mm";
- this.parcelTable.style.bottom = "0mm";
- this.parcelTable.style.margin = "0mm";
- this.parcelTable.style.overflow = "auto";
- b.appendChild(this.parcelTable);
- this.parcelList = this.parcelTable.getElementsByTagName("tbody")[0];
- this.parcelReset = document.createElement("button");
- this.parcelReset.setAttribute("type", "button");
- this.parcelReset.addEventListener("click", this.onResetClick.bind(this));
- this.parcelReset.className = "netgis-color-a netgis-hover-c";
- this.parcelReset.innerHTML = "Zur\u00fccksetzen";
- this.parcelReset.style.marginTop = "4mm";
- a.appendChild(this.parcelReset);
-};
-netgis.SearchParcel.prototype.initEvents = function () {
- this.resizeObserver = new ResizeObserver(this.onTopResize.bind(this)).observe(this.top);
-};
-netgis.SearchParcel.prototype.initConfig = function (a) {
- this.districtsLayer = a.searchparcel.districts_service;
- this.districtsLayer.id = this.districtsLayerID;
- this.districtsLayer.style = a.styles.parcel;
- this.districtsLayer.order = 99999;
- a.layers.push(this.districtsLayer);
- this.fieldsLayer = {
- id: this.fieldsLayerID,
- type: netgis.LayerTypes.GEOJSON,
- style: a.styles.parcel,
- order: 99999,
- data: null,
- };
- a.layers.push(this.fieldsLayer);
- this.parcelsLayer = {
- id: this.parcelsLayerID,
- type: netgis.LayerTypes.WKT,
- style: a.styles.parcel,
- order: 99999,
- data: null,
- };
- a.layers.push(this.parcelsLayer);
- if (!0 === a.searchparcel.open) {
- var b = this;
- window.setTimeout(function () {
- b.panel.show();
- }, 100);
- }
-};
-netgis.SearchParcel.prototype.attachTo = function (a) {
- this.panel.attachTo(a);
- this.popup.attachTo(a);
- a.addEventListener(netgis.Events.CLIENT_SET_MODE, this.onClientSetMode.bind(this));
- a.addEventListener(netgis.Events.SEARCHPARCEL_TOGGLE, this.onSearchParcelToggle.bind(this));
- a.addEventListener(netgis.Events.MAP_FEATURE_ENTER, this.onMapFeatureEnter.bind(this));
- a.addEventListener(netgis.Events.MAP_FEATURE_CLICK, this.onMapFeatureClick.bind(this));
- a.addEventListener(netgis.Events.MAP_FEATURE_LEAVE, this.onMapFeatureLeave.bind(this));
- a.addEventListener(netgis.Events.MAP_COPY_FEATURE_TO_EDIT, this.onMapCopyFeatureToEdit.bind(this));
-};
-netgis.SearchParcel.prototype.createInput = function (a) {
- var b = document.createElement("label");
- b.className = "netgis-hover-text-primary";
- b.innerHTML = a;
- a = document.createElement("input");
- a.setAttribute("type", "text");
- b.appendChild(a);
- return b;
-};
-netgis.SearchParcel.prototype.createNameItem = function (a) {
- var b = document.createElement("li"),
- c = document.createElement("button");
- c.setAttribute("type", "button");
- c.addEventListener("click", this.onNameItemClick.bind(this));
- c.className = "netgis-color-e netgis-hover-a netgis-text-a netgis-hover-text-e";
- c.innerHTML = a;
- b.appendChild(c);
- return b;
-};
-netgis.SearchParcel.prototype.createTable = function (a) {
- var b = document.createElement("div");
- b.className = "netgis-table-wrapper";
- var c = document.createElement("table");
- b.appendChild(c);
- var d = document.createElement("thead");
- c.appendChild(d);
- var e = document.createElement("tr");
- e.className = "netgis-color-d netgis-shadow";
- d.appendChild(e);
- d = document.createElement("th");
- e.appendChild(d);
- var f = document.createElement("input");
- f.setAttribute("type", "checkbox");
- f.addEventListener("change", this.onTableFilterChange.bind(this));
- f.setAttribute("title", "Nur markierte Parzellen anzeigen");
- d.appendChild(f);
- this.tableFilter = f;
- for (f = 0; f < a.length; f++) (d = document.createElement("th")), (d.innerHTML = a[f]), e.appendChild(d);
- a = document.createElement("tbody");
- c.appendChild(a);
- return b;
-};
-netgis.SearchParcel.prototype.createParcelItem = function (a, b, c, d, e, f, g) {
- var h = document.createElement("tr");
- h.className = "netgis-hover-d";
- h.setAttribute("title", "Klicken zum zoomen");
- h.setAttribute("data-id", d);
- h.setAttribute("data-field", a);
- h.setAttribute("data-parcel-a", b);
- h.setAttribute("data-parcel-b", c);
- h.setAttribute("data-bbox", f);
- h.setAttribute("data-geom", g);
- h.addEventListener("pointerenter", this.onParcelEnter.bind(this));
- h.addEventListener("pointerleave", this.onParcelLeave.bind(this));
- h.addEventListener("click", this.onParcelClick.bind(this));
- f = document.createElement("td");
- h.appendChild(f);
- g = document.createElement("button");
- g.setAttribute("type", "button");
- g.setAttribute("title", "Geometrie \u00fcbernehmen");
- g.addEventListener("click", this.onParcelImportClick.bind(this));
- g.className = "netgis-hover-a";
- g.innerHTML = "";
- f.appendChild(g);
- f = document.createElement("td");
- f.innerHTML = a;
- h.appendChild(f);
- a = document.createElement("td");
- a.innerHTML = b;
- h.appendChild(a);
- b = document.createElement("td");
- b.innerHTML = c;
- h.appendChild(b);
- c = document.createElement("td");
- c.innerHTML = netgis.util.trim(d, "_");
- h.appendChild(c);
- d = document.createElement("td");
- d.innerHTML = e;
- h.appendChild(d);
- return h;
-};
-netgis.SearchParcel.prototype.reset = function () {
- this.hideBottom();
- this.nameLoader.classList.add("netgis-hide");
- this.nameInput.value = "";
- this.districtInput.value = "";
- this.fieldInput.value = "";
- this.parcelInputA.value = "";
- this.parcelInputB.value = "";
- this.nameList.innerHTML = "";
- this.parcelInfo.innerHTML = "";
- this.parcelList.innerHTML = "";
- this.parcelTable.classList.add("netgis-hide");
- this.tableFilter.checked = !1;
- this.parcelList.classList.remove("netgis-filter-active");
- this.selected = {};
- this.parcelReset.classList.add("netgis-hide");
- this.parcelCount.innerHTML = "";
- var a = this;
- window.setTimeout(function () {
- a.top.scrollTop = 0;
- a.parcelTable.scrollTop = 0;
- }, 10);
- netgis.util.invoke(this.container, netgis.Events.SEARCHPARCEL_RESET, null);
- this.panel.visible() && this.showDistricts(!0);
- this.showFields(!1);
- this.showParcels(!1);
-};
-netgis.SearchParcel.prototype.showDistricts = function (a) {
- a
- ? (netgis.util.invoke(this.container, netgis.Events.MAP_LAYER_TOGGLE, { id: this.districtsLayerID, on: !0 }),
- netgis.util.invoke(this.container, netgis.Events.MAP_ZOOM_LEVEL, {
- z: this.config.searchparcel.districts_service.min_zoom,
- }))
- : netgis.util.invoke(this.container, netgis.Events.MAP_LAYER_TOGGLE, { id: this.districtsLayerID, on: !1 });
-};
-netgis.SearchParcel.prototype.showFields = function (a, b) {
- a
- ? ((b.crs = { type: "name", properties: { name: "urn:ogc:def:crs:EPSG::25832" } }),
- (this.fieldsLayer.data = b),
- netgis.util.invoke(this.container, netgis.Events.MAP_LAYER_TOGGLE, { id: this.fieldsLayerID, on: !0 }),
- netgis.util.invoke(this.container, netgis.Events.MAP_ZOOM_LAYER, { id: this.fieldsLayerID }))
- : (netgis.util.invoke(this.container, netgis.Events.MAP_LAYER_TOGGLE, { id: this.fieldsLayerID, on: !1 }),
- (this.fieldsLayer.data = null));
-};
-netgis.SearchParcel.prototype.showParcels = function (a, b) {
- if (a) {
- a = [];
- for (var c = 0; c < b.length; c++) {
- var d = b[c];
- a.push({
- id: d.fsk,
- geometry: d.geometry,
- properties: { flaeche: d.flaeche, fln: d.fln, fsk: d.fsk, fsn_nen: d.fsn_nen, fsn_zae: d.fsn_zae },
- });
- }
- this.parcelsLayer.data = a;
- netgis.util.invoke(this.container, netgis.Events.MAP_LAYER_TOGGLE, { id: this.parcelsLayerID, on: !0 });
- netgis.util.invoke(this.container, netgis.Events.MAP_ZOOM_LAYER, { id: this.parcelsLayerID });
- } else netgis.util.invoke(this.container, netgis.Events.MAP_LAYER_TOGGLE, { id: this.parcelsLayerID, on: !1 });
-};
-netgis.SearchParcel.prototype.onSearchParcelToggle = function (a) {
- this.panel.toggle();
-};
-netgis.SearchParcel.prototype.onClientSetMode = function (a) {
- a = a.detail;
- this.popup.clearContent();
- this.popup.hide();
- a.mode === netgis.Modes.SEARCH_PARCEL
- ? this.reset()
- : (this.showDistricts(!1), this.showFields(!1), this.showParcels(!1));
-};
-netgis.SearchParcel.prototype.onPanelToggle = function (a) {
- !1 === a.detail.visible
- ? netgis.util.invoke(this.panel.container, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.VIEW })
- : netgis.util.invoke(this.panel.container, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.SEARCH_PARCEL });
-};
-netgis.SearchParcel.prototype.onInputNameKey = function (a) {
- switch (a.keyCode) {
- case 13:
- this.selectFirstName();
- break;
- case 27:
- this.reset();
- break;
- default:
- this.requestName(this.nameInput.value.trim());
- }
-};
-netgis.SearchParcel.prototype.requestName = function (a) {
- this.nameDebounce && window.clearTimeout(this.nameDebounce);
- if (0 !== a.length) {
- var b = this.config.searchparcel.name_url;
- b = netgis.util.replace(b, "{q}", window.encodeURIComponent(a));
- this.nameDebounce = window.setTimeout(this.onInputNameDebounce.bind(this, b), 200);
- this.nameLoader.classList.remove("netgis-hide");
- }
-};
-netgis.SearchParcel.prototype.onInputNameDebounce = function (a) {
- netgis.util.request(a, this.onInputNameResponse.bind(this));
-};
-netgis.SearchParcel.prototype.onInputNameResponse = function (a) {
- this.nameLoader.classList.add("netgis-hide");
- this.parcelReset.classList.remove("netgis-hide");
- this.nameList.innerHTML = "";
- if ("{" === a.charAt(0) || "[" === a.charAt(0)) {
- a = JSON.parse(a);
- for (var b = 0; b < a.data.length; b++) {
- var c = a.data[b],
- d = this.createNameItem(c.gmk_name);
- d.getElementsByTagName("button")[0].setAttribute("data-id", c.gmk_gmn);
- this.nameList.appendChild(d);
- }
- }
-};
-netgis.SearchParcel.prototype.onNameItemClick = function (a) {
- a = a.target;
- var b = a.getAttribute("data-id");
- this.nameInput.value = a.innerHTML;
- this.nameList.innerHTML = "";
- this.districtInput.value = b;
- this.requestFields(b);
-};
-netgis.SearchParcel.prototype.requestFields = function (a) {
- var b = this.config.searchparcel.fields_service,
- c = b.url;
- c =
- c +
- "service=WFS&version=1.0.0&request=GetFeature&outputFormat=application/json; subtype=geojson&typename=" +
- b.name;
- c = c + "&filter=" + (b.filter_property + "");
- netgis.util.request(
- c + ("" + a + ""),
- this.onFieldsResponse.bind(this)
- );
-};
-netgis.SearchParcel.prototype.onFieldsResponse = function (a) {
- a = JSON.parse(a);
- this.showDistricts(!1);
- this.showFields(!0, a);
- this.showParcels(!1);
-};
-netgis.SearchParcel.prototype.selectFirstName = function () {
- var a = this.nameList.getElementsByTagName("button");
- 0 < a.length && a[0].click();
-};
-netgis.SearchParcel.prototype.setDistrict = function (a, b) {
- this.nameInput.value = a;
- this.districtInput.value = b;
- this.requestFields(b);
-};
-netgis.SearchParcel.prototype.setFieldNumber = function (a) {
- this.fieldInput.value = a;
- this.onParcelSearchClick();
-};
-netgis.SearchParcel.prototype.setParcelNumber = function (a, b) {
- this.parcelInputA.value = a;
- this.parcelInputB.value = b;
- this.onParcelSearchClick();
-};
-netgis.SearchParcel.prototype.showBottom = function () {
- this.top.classList.add("netgis-resize-bottom");
- this.top.style.height = "50%";
- this.top.style.bottom = "auto";
- this.bottom.classList.remove("netgis-hide");
-};
-netgis.SearchParcel.prototype.hideBottom = function () {
- this.top.classList.remove("netgis-resize-bottom");
- this.top.style.height = "auto";
- this.top.style.bottom = "0mm";
- this.bottom.classList.add("netgis-hide");
-};
-netgis.SearchParcel.prototype.onInputFieldKey = function (a) {
- switch (a.keyCode) {
- case 13:
- this.onParcelSearchClick();
- }
-};
-netgis.SearchParcel.prototype.onParcelSearchClick = function (a) {
- this.requestParcels(
- this.districtInput.value.trim(),
- this.fieldInput.value.trim(),
- this.parcelInputA.value.trim(),
- this.parcelInputB.value.trim()
- );
-};
-netgis.SearchParcel.prototype.requestParcels = function (a, b, c, d) {
- var e = this.config.searchparcel.parcel_url;
- e = netgis.util.replace(e, "{district}", a ? a : "");
- e = netgis.util.replace(e, "{field}", b ? b : "");
- e = netgis.util.replace(e, "{parcelA}", c ? c : "");
- e = netgis.util.replace(e, "{parcelB}", d ? d : "");
- this.parcelTable.classList.add("netgis-hide");
- this.parcelList.innerHTML = "";
- this.parcelList.classList.remove("netgis-filter-active");
- this.tableFilter.checked = !1;
- this.selected = {};
- this.parcelInfo.innerHTML = "Suche Flurst\u00fccke...";
- netgis.util.request(e, this.onParcelsResponse.bind(this));
-};
-netgis.SearchParcel.prototype.updateTableRows = function () {
- for (var a = this.parcelList.getElementsByTagName("tr"), b = 0; b < a.length; b++) {
- var c = a[b],
- d = c.getAttribute("data-id"),
- e = c.getElementsByTagName("button")[0];
- !0 === this.selected[d]
- ? (c.classList.add("netgis-active", "netgis-text-a", "netgis-hover-text-a"),
- e.setAttribute("disabled", "disabled"),
- e.setAttribute("title", "Geometrie bereits \u00fcbernommen"),
- e.classList.remove("netgis-hover-a"))
- : (c.classList.remove("netgis-active", "netgis-text-a", "netgis-hover-text-a"),
- e.removeAttribute("disabled"),
- e.setAttribute("title", "Geometrie \u00fcbernehmen"),
- e.classList.add("netgis-hover-a"));
- }
-};
-netgis.SearchParcel.prototype.onParcelsResponse = function (a) {
- a = JSON.parse(a);
- this.parcelCount.innerHTML = "(" + a.count + ")";
- if (0 === a.count) this.parcelInfo.innerHTML = a.Info;
- else {
- for (var b = 0; b < a.data.length; b++) {
- var c = a.data[b];
- c = this.createParcelItem(c.fln, c.fsn_zae, c.fsn_nen, c.fsk, c.flaeche, c.bbox, c.geometry);
- this.parcelList.appendChild(c);
- }
- this.parcelTable.classList.remove("netgis-hide");
- this.showBottom();
- this.showDistricts(!1);
- this.showFields(!1);
- this.showParcels(!0, a.data);
- }
- this.container.classList.contains("netgis-hide") || this.parcelTable.scrollIntoView();
-};
-netgis.SearchParcel.prototype.onParcelEnter = function (a) {
- a = a.target;
- var b = a.getAttribute("data-geom");
- a = {
- id: a.getAttribute("data-id"),
- field: a.getAttribute("data-field"),
- parcelA: a.getAttribute("data-parcel-a"),
- parcelB: a.getAttribute("data-parcel-b"),
- geom: b,
- };
- netgis.util.invoke(this.container, netgis.Events.SEARCHPARCEL_ITEM_ENTER, a);
-};
-netgis.SearchParcel.prototype.onParcelLeave = function (a) {
- netgis.util.invoke(this.container, netgis.Events.SEARCHPARCEL_ITEM_LEAVE, { id: a.target.getAttribute("data-id") });
-};
-netgis.SearchParcel.prototype.onParcelClick = function (a) {
- netgis.util.invoke(this.container, netgis.Events.SEARCHPARCEL_ITEM_CLICK, {
- id: a.currentTarget.getAttribute("data-id"),
- });
-};
-netgis.SearchParcel.prototype.onParcelImportClick = function (a) {
- a.stopPropagation();
- a = a.currentTarget.parentElement.parentElement;
- var b = a.getAttribute("data-id");
- a.getAttribute("data-geom");
- netgis.util.invoke(this.container, netgis.Events.MAP_COPY_FEATURE_TO_EDIT, { source: this.parcelsLayerID, id: b });
-};
-netgis.SearchParcel.prototype.onResetClick = function (a) {
- this.reset();
-};
-netgis.SearchParcel.prototype.onTopResize = function (a) {
- if (!this.bottom.classList.contains("netgis-hide")) {
- a = this.top.getBoundingClientRect();
- var b = this.top.parentNode.getBoundingClientRect();
- this.bottom.style.top = a.bottom - b.top + "px";
- }
-};
-netgis.SearchParcel.prototype.onBottomHeaderClick = function (a) {
- this.reset();
-};
-netgis.SearchParcel.prototype.onMapFeatureEnter = function (a) {
- var b = a.target;
- a = a.detail;
- switch (a.layer) {
- case this.districtsLayerID:
- a = a.properties.gemarkung;
- b.setAttribute("title", a);
- break;
- case this.fieldsLayerID:
- a = a.properties.flurname;
- b.setAttribute("title", a);
- break;
- case this.parcelsLayerID:
- (a =
- "Flur: " +
- a.properties.fln +
- " / Z\u00e4hler: " +
- a.properties.fsn_zae +
- " / Nenner: " +
- a.properties.fsn_nen),
- b.setAttribute("title", a);
- }
-};
-netgis.SearchParcel.prototype.onMapFeatureClick = function (a) {
- var b = a.detail;
- this.popup.hide();
- switch (b.layer) {
- case this.districtsLayerID:
- this.setDistrict(b.properties.gemarkung + " (" + b.properties.ldkreis + ")", b.properties.gmkgnr);
- break;
- case this.fieldsLayerID:
- this.setFieldNumber(b.properties.flur);
- break;
- case this.parcelsLayerID:
- if (((a = b.properties.fsk), !this.selected[a])) {
- this.popup.container !== b.overlay && this.popup.attachTo(b.overlay);
- var c = "| Flur: | " + (b.properties.fln + " | ");
- c += "
|---|
| Z\u00e4hler: | " + b.properties.fsn_zae + " | ";
- c += "
|---|
| Nenner: | " + b.properties.fsn_nen + " | ";
- c += "
|---|
| Fl\u00e4che: | " + b.properties.flaeche + " qm | ";
- this.popup.setContent(
- c +
- "
|---|
"
- );
- b = this.popup.content.getElementsByTagName("button")[1];
- b.setAttribute("data-id", a);
- b.addEventListener("click", this.onParcelPopupButtonClick.bind(this));
- this.popup.show();
- }
- }
-};
-netgis.SearchParcel.prototype.onParcelPopupButtonClick = function (a) {
- a = a.currentTarget.getAttribute("data-id");
- netgis.util.invoke(this.container, netgis.Events.MAP_COPY_FEATURE_TO_EDIT, { source: this.parcelsLayerID, id: a });
- this.popup.hide();
-};
-netgis.SearchParcel.prototype.onMapFeatureLeave = function (a) {
- var b = a.target;
- switch (a.detail.layer) {
- case this.districtsLayerID:
- case this.fieldsLayerID:
- b.setAttribute("title", "");
- break;
- case this.parcelsLayerID:
- b.setAttribute("title", "");
- }
-};
-netgis.SearchParcel.prototype.onMapCopyFeatureToEdit = function (a) {
- a = a.detail;
- var b = a.id;
- a.source === this.parcelsLayerID && (this.selected[b] || (this.selected[b] = !0), this.updateTableRows());
-};
-netgis.SearchParcel.prototype.onTableFilterChange = function (a) {
- this.parcelList.classList.toggle("netgis-filter-active", a.currentTarget.checked);
-};
-netgis = netgis || {};
-netgis.SearchPlace = function (a) {
- this.config = a;
- this.initElements();
- this.initEvents();
- this.initConfig(a);
-};
-netgis.SearchPlace.Config = {
- title: "Search...",
- url: "",
- zoom: 17,
- marker_color: "darkgray",
- marker_title: "Search-Result",
-};
-netgis.SearchPlace.prototype.initElements = function () {
- this.search = new netgis.Search("");
- this.container = this.search.container;
- this.container.classList.add("netgis-search-place", "netgis-responsive");
- this.search.container.addEventListener(netgis.Events.SEARCH_CHANGE, this.onSearchChange.bind(this));
- this.search.container.addEventListener(netgis.Events.SEARCH_SELECT, this.onSearchSelect.bind(this));
- this.search.container.addEventListener(netgis.Events.SEARCH_CLEAR, this.onSearchClear.bind(this));
-};
-netgis.SearchPlace.prototype.initEvents = function () {};
-netgis.SearchPlace.prototype.initConfig = function (a) {
- (a = a.searchplace) && a.title && this.search.setTitle(a.title);
-};
-netgis.SearchPlace.prototype.attachTo = function (a) {
- this.search.attachTo(a);
- a.addEventListener(netgis.Events.SEARCHPLACE_TOGGLE, this.onSearchPlaceToggle.bind(this));
-};
-netgis.SearchPlace.prototype.onSearchPlaceToggle = function (a) {
- (a = a.detail) && a.on ? this.search.show() : this.search.toggle();
- if (this.search.isVisible()) {
- var b = this.search;
- window.setTimeout(function () {
- b.focus();
- }, 200);
- }
-};
-netgis.SearchPlace.prototype.onSearchChange = function (a) {
- var b = this.config.searchplace;
- b &&
- b.url &&
- ((b = b.url),
- (b = netgis.util.replace(b, "{query}", window.encodeURIComponent(a.detail.query))),
- (b = netgis.util.replace(b, "{epsg}", 4326)),
- netgis.util.request(b, this.onSearchResponse.bind(this)));
-};
-netgis.SearchPlace.prototype.onSearchResponse = function (a) {
- a = JSON.parse(a);
- this.search.clearResults();
- if (a.geonames) {
- a = a.geonames;
- for (var b = 0; b < a.length; b++) {
- var c = a[b],
- d = c.title,
- e = 0.5 * (Number.parseFloat(c.minx) + Number.parseFloat(c.maxx)),
- f = 0.5 * (Number.parseFloat(c.miny) + Number.parseFloat(c.maxy));
- c = { type: c.category, id: b, lon: e, lat: f };
- this.search.addResult(d, JSON.stringify(c));
- }
- } else if (a.data)
- for (a = a.data, b = 0; b < a.length; b++)
- (c = a[b]),
- (d = c.name),
- (c = { type: "street", id: c.strid, lon: Number.parseFloat(c.wgs_x), lat: Number.parseFloat(c.wgs_y) }),
- this.search.addResult(d, JSON.stringify(c));
-};
-netgis.SearchPlace.prototype.onSearchSelect = function (a) {
- a = JSON.parse(a.detail.data);
- netgis.util.invoke(this.container, netgis.Events.MAP_ZOOM_LONLAT, {
- lon: a.lon,
- lat: a.lat,
- zoom: this.config.searchplace.zoom,
- });
- if ("street" === a.type) {
- var b = this.config.searchplace.url_detail;
- b &&
- ((b = netgis.util.replace(b, "{id}", a.id)),
- netgis.util.request(b, this.onSearchDetailResponse.bind(this)));
- }
-};
-netgis.SearchPlace.prototype.onSearchDetailResponse = function (a) {
- a = JSON.parse(a);
- var b = a.hsnrarr;
- if (0 !== b.length) {
- this.search.clearResults();
- for (var c = 0; c < b.length; c++) {
- var d = b[c],
- e = a.strname + " " + d.hsnr;
- d = { type: "address", lon: Number.parseFloat(d.wgs_x), lat: Number.parseFloat(d.wgs_y) };
- this.search.addResult(e, JSON.stringify(d));
- }
- }
-};
-netgis.SearchPlace.prototype.onSearchClear = function (a) {};
-netgis = netgis || {};
-netgis.SLD = (function () {
- return {
- read: function (a, b) {
- var c = {};
- a = new DOMParser().parseFromString(a, "text/xml").getElementsByTagName("NamedLayer");
- for (var d = 0; d < a.length; d++) {
- var e = a[d],
- f = e.getElementsByTagName("se:Name")[0].innerHTML;
- console.info("Layer:", f);
- e = e.getElementsByTagName("se:FeatureTypeStyle");
- for (f = 0; f < e.length; f++)
- for (var g = e[f].getElementsByTagName("se:Rule"), h = 0; h < g.length; h++) {
- var k = g[h],
- l = k.getElementsByTagName("se:Name")[0].innerHTML;
- console.info("Rule:", l);
- l = k.getElementsByTagName("se:PolygonSymbolizer")[0];
- k = l.getElementsByTagName("se:Fill")[0];
- l = l.getElementsByTagName("se:Stroke")[0];
- c.polygon = {
- fill: k.querySelector("[name='fill']").innerHTML,
- stroke: l.querySelector("[name='stroke']").innerHTML,
- strokeWidth: Number.parseFloat(l.querySelector("[name='stroke-width']").innerHTML),
- };
- }
- }
- console.info("SLD:", c);
- b.invoke(netgis.Events.MAP_UPDATE_STYLE, c);
- return c;
- },
- };
-})();
-netgis = netgis || {};
-netgis.Tabs = function (a) {
- this.initElements(a);
- this.setActiveTab(0);
-};
-netgis.Tabs.prototype.initElements = function (a) {
- this.container = document.createElement("div");
- this.container.className = "netgis-tabs";
- this.header = document.createElement("div");
- this.header.className = "netgis-header netgis-color-d";
- this.container.appendChild(this.header);
- this.content = document.createElement("div");
- this.content.className = "netgis-content netgis-color-e";
- this.container.appendChild(this.content);
- for (var b = 0; b < a.length; b++) {
- var c = document.createElement("button");
- c.setAttribute("type", "button");
- c.addEventListener("click", this.onHeaderButtonClick.bind(this));
- c.className = "netgis-button netgis-color-d";
- c.innerHTML = a[b];
- this.header.appendChild(c);
- c = document.createElement("section");
- c.className = "netgis-color-e netgis-form";
- this.content.appendChild(c);
- }
-};
-netgis.Tabs.prototype.attachTo = function (a) {
- a.appendChild(this.container);
-};
-netgis.Tabs.prototype.setActiveTab = function (a) {
- for (
- var b = this.header.getElementsByClassName("netgis-button"),
- c = this.content.getElementsByTagName("section"),
- d = 0;
- d < b.length;
- d++
- ) {
- var e = b[d],
- f = c[d];
- d === a
- ? (e.classList.add("netgis-color-e"),
- e.classList.add("netgis-text-a"),
- e.classList.add("netgis-bar-a"),
- e.classList.add("netgis-active"),
- e.scrollIntoView({ behavior: "smooth" }),
- f.classList.remove("netgis-hide"),
- (f.scrollTop = 0))
- : (e.classList.remove("netgis-color-e"),
- e.classList.remove("netgis-text-a"),
- e.classList.remove("netgis-bar-a"),
- e.classList.remove("netgis-active"),
- f.classList.add("netgis-hide"));
- }
-};
-netgis.Tabs.prototype.getContentSection = function (a) {
- return this.content.getElementsByTagName("section")[a];
-};
-netgis.Tabs.prototype.appendContent = function (a, b) {
- this.content.getElementsByTagName("section")[a].appendChild(b);
-};
-netgis.Tabs.prototype.updateHeaderScroll = function () {
- for (var a = 0, b = this.header.getElementsByTagName("button"), c = 0; c < b.length; c++) {
- var d = b[c];
- a += d.getBoundingClientRect().width;
- d.classList.contains("netgis-active") && d.scrollIntoView();
- }
- b = this.header.getBoundingClientRect().width;
- a > b ? this.container.classList.add("netgis-scroll") : this.container.classList.remove("netgis-scroll");
-};
-netgis.Tabs.prototype.onHeaderButtonClick = function (a) {
- a = a.currentTarget;
- for (var b = this.header.getElementsByClassName("netgis-button"), c = 0, d = 0; d < b.length; d++)
- if (b[d] === a) {
- c = d;
- break;
- }
- this.setActiveTab(c);
-};
-netgis = netgis || {};
-netgis.TimeSlider = function (a) {
- this.config = a;
- this.insertTop = !0;
- this.initElements();
- for (a = 1900; 2e3 >= a; a++);
- var b = this;
- window.setTimeout(function () {
- b.container.scrollLeft = 0;
- }, 1);
-};
-netgis.TimeSlider.Config = {};
-netgis.TimeSlider.prototype.initElements = function () {
- this.container = document.createElement("section");
- this.container.className = "netgis-timeslider netgis-footer netgis-noselect netgis-color-e netgis-hide";
- document.addEventListener("pointermove", this.onPointerMove.bind(this));
- document.addEventListener("pointerup", this.onPointerUp.bind(this));
- this.header = document.createElement("button");
- this.header.className = "netgis-header netgis-button netgis-clip-text netgis-color-a netgis-hover-c netgis-shadow";
- this.header.innerHTML =
- "TimeSlider";
- this.header.setAttribute("type", "button");
- this.header.addEventListener("click", this.onHeaderClick.bind(this));
- this.container.appendChild(this.header);
- this.wrapper = document.createElement("div");
- this.wrapper.className = "netgis-wrapper";
- this.wrapper.addEventListener("pointerdown", this.onPointerDown.bind(this));
- this.container.appendChild(this.wrapper);
- this.table = document.createElement("table");
- this.wrapper.appendChild(this.table);
- this.top = document.createElement("tr");
- this.table.appendChild(this.top);
- this.bottom = document.createElement("tr");
-};
-netgis.TimeSlider.prototype.attachTo = function (a) {
- a.appendChild(this.container);
- a.addEventListener(netgis.Events.TIMESLIDER_SHOW, this.onTimeSliderShow.bind(this));
- a.addEventListener(netgis.Events.TIMESLIDER_HIDE, this.onTimeSliderHide.bind(this));
-};
-netgis.TimeSlider.prototype.setVisible = function (a) {
- a
- ? (this.container.classList.remove("netgis-hide"), this.container.parentNode.classList.add("netgis-footer"))
- : (this.container.classList.add("netgis-hide"), this.container.parentNode.classList.remove("netgis-footer"));
-};
-netgis.TimeSlider.prototype.setTitle = function (a) {
- this.header.getElementsByTagName("span")[0].innerHTML = a;
-};
-netgis.TimeSlider.prototype.clearTimeSteps = function () {
- this.top.innerHTML = "";
-};
-netgis.TimeSlider.prototype.addTimeStep = function (a, b) {
- var c = document.createElement("td");
- c.setAttribute("data-id", a);
- a = document.createElement("button");
- a.className = "netgis-button netgis-color-e netgis-hover-d";
- a.innerHTML = "" + b + "";
- a.setAttribute("type", "button");
- a.addEventListener("click", this.onTimeStepClick.bind(this));
- c.appendChild(a);
- this.top.appendChild(c);
-};
-netgis.TimeSlider.prototype.addTimeStep_01 = function (a, b) {
- a = document.createElement("td");
- var c = document.createElement("td");
- this.insertTop ? (a.innerHTML = b) : (c.innerHTML = b);
- this.top.appendChild(a);
- this.bottom.appendChild(c);
- this.insertTop = !this.insertTop;
-};
-netgis.TimeSlider.prototype.setActiveTimeStep = function (a) {
- var b = this.top.getElementsByTagName("td"),
- c = b[a],
- d = c.getAttribute("data-id");
- console.info("Set Active Step:", a, d);
- for (var e = 0; e < b.length; e++) {
- var f = b[e],
- g = f.getElementsByClassName("netgis-icon")[0];
- e === a
- ? (f.classList.add("netgis-active"),
- g.classList.remove("fa-calendar"),
- g.classList.add("fa-calendar-check"))
- : (f.classList.remove("netgis-active"),
- g.classList.add("fa-calendar"),
- g.classList.remove("fa-calendar-check"));
- }
- c.scrollIntoView();
- netgis.util.invoke(c, netgis.Events.TIMESLIDER_SELECT, { layer: this.layerID, time: d });
-};
-netgis.TimeSlider.prototype.requestServiceWMST = function (a, b) {
- a = a.trim();
- 1 > a.length ||
- (-1 === a.indexOf("GetCapabilities") && (a += "&REQUEST=GetCapabilities"),
- netgis.util.request(a, this.onServiceResponseWMST.bind(this), { id: b }));
-};
-netgis.TimeSlider.prototype.onServiceResponseWMST = function (a, b) {
- for (
- var c = new DOMParser().parseFromString(a, "text/xml").documentElement.getElementsByTagName("Layer"), d, e = 0;
- e < c.length;
- e++
- ) {
- a = c[e];
- var f = a.getElementsByTagName("Name")[0].textContent;
- if (f === b.id) {
- d = {
- name: f,
- title: a.getElementsByTagName("Title")[0].textContent,
- abstract: a.getElementsByTagName("Abstract")[0].textContent,
- queryable: "1" === a.getAttribute("queryable"),
- opaque: "1" === a.getAttribute("opaque"),
- };
- e = a.getElementsByTagName("SRS");
- 0 < e.length && (d.projection = e[0].textContent);
- e = a.getElementsByTagName("CRS");
- 0 < e.length && (d.projection = e[0].textContent);
- e = a.getElementsByTagName("BoundingBox")[0];
- d.bbox = [
- Number.parseFloat(e.getAttribute("minx")),
- Number.parseFloat(e.getAttribute("miny")),
- Number.parseFloat(e.getAttribute("maxx")),
- Number.parseFloat(e.getAttribute("maxy")),
- ];
- b = a.getElementsByTagName("Dimension");
- for (e = 0; e < b.length; e++)
- if (((c = b[e]), "time" === c.getAttribute("name"))) {
- var g = { defaultTime: c.getAttribute("default"), extent: c.textContent.split("/") };
- break;
- }
- a = a.getElementsByTagName("Extent");
- for (e = 0; e < a.length; e++)
- if (((b = a[e]), "time" === b.getAttribute("name"))) {
- g.defaultTime = b.getAttribute("default");
- g.extent = b.textContent.split("/");
- break;
- }
- d.time = g;
- break;
- }
- }
- console.info("WMST Layer:", d);
- this.setTitle(d.title);
- if (d.time.extent) {
- g = new Date(d.time.extent[0]);
- a = new Date(d.time.extent[1]);
- b = d.time.extent[2];
- d = [];
- switch (b) {
- case "P1D":
- for (; g <= a; ) d.push(new Date(g)), g.setDate(g.getDate() + 1);
- break;
- default:
- console.error("unsupported WMST date range", b, g, a);
- }
- for (e = 0; e < d.length; e++)
- (b = d[e]),
- (a = g = b.toISOString()),
- (a = a.replace("T", ", ")),
- (a = a.replace("Z", "")),
- this.addTimeStep(g, a);
- this.setActiveTimeStep(d.length - 1);
- }
-};
-netgis.TimeSlider.prototype.onTimeSliderShow = function (a) {
- a = a.detail;
- console.info("TimeSlider Show:", a);
- this.layerID = a.layer;
- this.setTitle(a.title);
- this.clearTimeSteps();
- this.requestServiceWMST(a.url, a.name);
- this.setVisible(!0);
-};
-netgis.TimeSlider.prototype.onTimeSliderHide = function (a) {
- this.setVisible(!1);
-};
-netgis.TimeSlider.prototype.onHeaderClick = function (a) {
- this.setVisible(!1);
-};
-netgis.TimeSlider.prototype.onPointerDown = function (a) {
- a = a.pageX - this.wrapper.offsetLeft;
- this.down = !0;
- this.downX = a;
- this.downScroll = this.wrapper.scrollLeft;
- this.container.classList.add("netgis-active");
-};
-netgis.TimeSlider.prototype.onPointerMove = function (a) {
- this.down &&
- (a.preventDefault(),
- (this.wrapper.scrollLeft = this.downScroll - (a.pageX - this.wrapper.offsetLeft - this.downX)));
-};
-netgis.TimeSlider.prototype.onPointerUp = function (a) {
- this.down && a.preventDefault();
- this.down = !1;
- this.container.classList.remove("netgis-active");
-};
-netgis.TimeSlider.prototype.onTimeStepClick = function (a) {
- a = a.currentTarget.parentNode;
- a.getAttribute("data-id");
- if (!(5 < Math.abs(this.wrapper.scrollLeft - this.downScroll))) {
- for (var b = this.top.getElementsByTagName("td"), c = -1, d = 0; d < b.length; d++)
- if (b[d] === a) {
- c = d;
- break;
- }
- this.setActiveTimeStep(c);
- }
-};
-netgis = netgis || {};
-netgis.Toolbox = function (a) {
- this.config = a;
- this.bottomPanels = {};
- this.initElements(a);
- this.initOptions(a);
- this.initEvents();
- this.setActiveButton(netgis.Commands.VIEW);
-};
-netgis.Toolbox.Config = {
- open: !1,
- items: [],
- options: {
- buffer_features: {
- title: "Buffer",
- items: [
- { id: "buffer_radius", type: "integer", title: "Radius (Meter)" },
- { id: "buffer_segments", type: "integer", title: "Segments" },
- {
- id: "buffer_submit",
- type: "button",
- title: "Akzeptieren",
- },
- ],
- },
- },
-};
-netgis.Toolbox.prototype.initElements = function (a) {
- this.panel = new netgis.Panel("Toolbox");
- this.panel.content.classList.add("netgis-toolbox");
- this.top = document.createElement("section");
- this.panel.content.appendChild(this.top);
- for (var b = a.toolbox.items, c = 0; c < b.length; c++) {
- var d = b[c];
- if (this.config.tools && !1 === this.config.tools.editable)
- switch (d.id) {
- case "draw_points":
- continue;
- case "draw_lines":
- continue;
- case "draw_polygons":
- continue;
- case "modify_features":
- continue;
- case "delete_features":
- continue;
- case "buffer_features":
- continue;
- case "cut_features":
- continue;
- }
- this.addButton(this.top, d.id, d.title);
- }
- this.bottom = document.createElement("section");
- this.bottom.className = "netgis-color-e netgis-hide";
- this.panel.content.appendChild(this.bottom);
- b = document.createElement("button");
- b.className = "netgis-button netgis-clip-text netgis-color-c netgis-gradient-a";
- b.innerHTML = "Einstellungen";
- b.setAttribute("type", "button");
- b.addEventListener("click", this.onBottomHeaderClick.bind(this));
- this.bottom.appendChild(b);
- this.bottomTitle = b.getElementsByTagName("span")[0];
- a.toolbox && !0 === a.toolbox.open && this.panel.show();
-};
-netgis.Toolbox.prototype.initOptions = function (a) {
- var b = a.toolbox.options;
- if (b) for (var c in b);
- a = a.tools;
- b = [];
- a &&
- (a.buffer || (a.buffer = {}),
- (this.bottomPanels.drawPoints = document.createElement("div")),
- b.push(this.addCheckbox(this.bottomPanels.drawPoints, "Einrasten", this.onDrawSnapToggle.bind(this))),
- this.addCheckbox(this.bottomPanels.drawPoints, "Puffern", this.onDrawBufferToggle.bind(this)),
- this.addInputNumber(
- this.bottomPanels.drawPoints,
- "Radius (Meter):",
- a.buffer.default_radius,
- this.onDrawBufferChange.bind(this)
- ),
- this.addInputNumber(
- this.bottomPanels.drawPoints,
- "Segmente:",
- a.buffer.default_segments,
- this.onDrawBufferChange.bind(this)
- ),
- this.bottom.appendChild(this.bottomPanels.drawPoints),
- (this.bottomPanels.drawLines = document.createElement("div")),
- b.push(this.addCheckbox(this.bottomPanels.drawLines, "Einrasten", this.onDrawSnapToggle.bind(this))),
- this.addCheckbox(this.bottomPanels.drawLines, "Puffern", this.onDrawBufferToggle.bind(this)),
- this.addInputNumber(
- this.bottomPanels.drawLines,
- "Radius (Meter):",
- a.buffer.default_radius,
- this.onDrawBufferChange.bind(this)
- ),
- this.addInputNumber(
- this.bottomPanels.drawLines,
- "Segmente:",
- a.buffer.default_segments,
- this.onDrawBufferChange.bind(this)
- ),
- this.bottom.appendChild(this.bottomPanels.drawLines),
- this.showDrawBufferOptions(!1),
- (this.bottomPanels.drawPolygons = document.createElement("div")),
- b.push(this.addCheckbox(this.bottomPanels.drawPolygons, "Einrasten", this.onDrawSnapToggle.bind(this))),
- this.bottom.appendChild(this.bottomPanels.drawPolygons),
- (this.bottomPanels.bufferFeatures = document.createElement("div")),
- this.addInputNumber(
- this.bottomPanels.bufferFeatures,
- "Radius (Meter):",
- a.buffer.default_radius,
- this.onBufferFeaturesChange.bind(this)
- ),
- this.addInputNumber(
- this.bottomPanels.bufferFeatures,
- "Segmente:",
- a.buffer.default_segments,
- this.onBufferFeaturesChange.bind(this)
- ),
- this.addCheckbox(this.bottomPanels.bufferFeatures, "Mehrfach-Auswahl", this.onSelectMultipleChange.bind(this)),
- this.addButton(
- this.bottomPanels.bufferFeatures,
- null,
- "Akzeptieren",
- this.onBufferFeaturesAccept.bind(this)
- ),
- this.bottom.appendChild(this.bottomPanels.bufferFeatures),
- (this.bottomPanels.cutFeatures = document.createElement("div")),
- this.addCheckbox(this.bottomPanels.cutFeatures, "Mehrfach-Auswahl", this.onSelectMultipleChange.bind(this)),
- this.bottom.appendChild(this.bottomPanels.cutFeatures),
- (this.bottomPanels.modifyFeatures = document.createElement("div")),
- b.push(this.addCheckbox(this.bottomPanels.modifyFeatures, "Einrasten", this.onDrawSnapToggle.bind(this))),
- this.bottom.appendChild(this.bottomPanels.modifyFeatures));
- if (a && a.snapping) {
- if (!1 === a.snapping.show) for (c = 0; c < b.length; c++) b[c].parentNode.classList.add("netgis-hide");
- if (!0 === a.snapping.active) {
- for (c = 0; c < b.length; c++) b[c].checked = !0;
- var d = this;
- window.setTimeout(function () {
- netgis.util.invoke(d.panel.container, netgis.Events.MAP_SNAP_TOGGLE, { on: !0 });
- }, 100);
- }
- }
-};
-netgis.Toolbox.prototype.initEvents = function () {
- this.resizeObserver = new ResizeObserver(this.onTopResize.bind(this)).observe(this.top);
-};
-netgis.Toolbox.prototype.attachTo = function (a) {
- this.panel.attachTo(a);
- a.addEventListener(netgis.Events.CLIENT_SET_MODE, this.onClientSetMode.bind(this));
- a.addEventListener(netgis.Events.TOOLBOX_TOGGLE, this.onToolboxToggle.bind(this));
- a.addEventListener(netgis.Events.SELECT_MULTI_TOGGLE, this.onSelectMultiToggle.bind(this));
-};
-netgis.Toolbox.prototype.addButton = function (a, b, c, d) {
- var e = document.createElement("button");
- e.className = "netgis-button netgis-clip-text netgis-color-e netgis-hover-d";
- e.innerHTML = c;
- e.setAttribute("type", "button");
- e.setAttribute("data-id", b);
- d ? (e.onclick = d) : e.addEventListener("click", this.onButtonClick.bind(this));
- a && a.appendChild(e);
- return e;
-};
-netgis.Toolbox.prototype.addCheckbox = function (a, b, c) {
- var d = document.createElement("label");
- d.className = "netgis-noselect netgis-color-e netgis-hover-d";
- var e = document.createElement("input");
- e.setAttribute("type", "checkbox");
- d.appendChild(e);
- var f = document.createElement("span");
- f.innerHTML = b;
- d.appendChild(f);
- c && (e.onchange = c);
- a && a.appendChild(d);
- return e;
-};
-netgis.Toolbox.prototype.addInputNumber = function (a, b, c, d) {
- var e = document.createElement("label");
- e.className = "netgis-noselect netgis-color-e netgis-hover-d";
- var f = document.createElement("span");
- f.innerHTML = b;
- e.appendChild(f);
- b = document.createElement("input");
- b.setAttribute("type", "number");
- b.setAttribute("min", 0);
- b.value = c;
- e.appendChild(b);
- d && ((b.onchange = d), (b.onkeyup = d));
- a && a.appendChild(e);
- return b;
-};
-netgis.Toolbox.prototype.showBottom = function (a, b) {
- this.top.classList.add("netgis-resize-bottom");
- this.top.style.height = "50%";
- this.top.style.bottom = "auto";
- this.bottom.classList.remove("netgis-hide");
- this.bottomTitle.innerHTML = b;
- if (a)
- for (var c in this.bottomPanels)
- (b = this.bottomPanels[c]), b === a ? b.classList.remove("netgis-hide") : b.classList.add("netgis-hide");
-};
-netgis.Toolbox.prototype.hideBottom = function () {
- this.top.classList.remove("netgis-resize-bottom");
- this.top.style.height = "auto";
- this.top.style.bottom = "0mm";
- this.bottom.classList.add("netgis-hide");
-};
-netgis.Toolbox.prototype.showDrawBufferOptions = function (a) {
- var b = this.bottomPanels.drawPoints.getElementsByTagName("label"),
- c = this.bottomPanels.drawLines.getElementsByTagName("label");
- b[1].getElementsByTagName("input")[0].checked = a;
- (c[1].getElementsByTagName("input")[0].checked = a)
- ? (b[2].classList.remove("netgis-hide"),
- b[3].classList.remove("netgis-hide"),
- c[2].classList.remove("netgis-hide"),
- c[3].classList.remove("netgis-hide"))
- : (b[2].classList.add("netgis-hide"),
- b[3].classList.add("netgis-hide"),
- c[2].classList.add("netgis-hide"),
- c[3].classList.add("netgis-hide"));
-};
-netgis.Toolbox.prototype.setActiveButton = function (a) {
- for (var b = this.top.getElementsByTagName("button"), c = null, d = 0; d < b.length; d++) {
- var e = b[d];
- a && e.getAttribute("data-id") === a.toLowerCase()
- ? ((c = e), e.classList.remove("netgis-color-e"), e.classList.add("netgis-active", "netgis-color-d"))
- : (e.classList.remove("netgis-active", "netgis-color-d"), e.classList.add("netgis-color-e"));
- }
- if (c) {
- var f = this;
- window.setTimeout(function () {
- f.top.scrollTo({ top: c.offsetTop, behavior: "smooth" });
- }, 10);
- }
-};
-netgis.Toolbox.prototype.onToolboxToggle = function (a) {
- this.panel.toggle();
-};
-netgis.Toolbox.prototype.onClientSetMode = function (a) {
- a = a.detail;
- this.hideBottom();
- switch (a.mode) {
- default:
- this.setActiveButton(null);
- break;
- case netgis.Modes.VIEW:
- this.setActiveButton(netgis.Commands.VIEW);
- break;
- case netgis.Modes.ZOOM_BOX:
- this.setActiveButton(netgis.Commands.ZOOM_BOX);
- break;
- case netgis.Modes.MEASURE_LINE:
- this.setActiveButton(netgis.Commands.MEASURE_LINE);
- break;
- case netgis.Modes.MEASURE_AREA:
- this.setActiveButton(netgis.Commands.MEASURE_AREA);
- break;
- case netgis.Modes.DRAW_POINTS:
- this.setActiveButton(netgis.Commands.DRAW_POINTS);
- this.showBottom(this.bottomPanels.drawPoints, "Punkte zeichnen");
- break;
- case netgis.Modes.DRAW_LINES:
- this.setActiveButton(netgis.Commands.DRAW_LINES);
- this.showBottom(this.bottomPanels.drawLines, "Linien zeichnen");
- break;
- case netgis.Modes.DRAW_POLYGONS:
- this.setActiveButton(netgis.Commands.DRAW_POLYGONS);
- this.showBottom(this.bottomPanels.drawPolygons, "Polygone zeichnen");
- break;
- case netgis.Modes.MODIFY_FEATURES:
- this.setActiveButton(netgis.Commands.MODIFY_FEATURES);
- this.showBottom(this.bottomPanels.modifyFeatures, "Verschieben");
- break;
- case netgis.Modes.DELETE_FEATURES:
- this.setActiveButton(netgis.Commands.DELETE_FEATURES);
- break;
- case netgis.Modes.BUFFER_FEATURES:
- this.setActiveButton(netgis.Commands.BUFFER_FEATURES);
- this.showBottom(this.bottomPanels.bufferFeatures, "Puffern");
- this.onBufferFeaturesChange();
- break;
- case netgis.Modes.BUFFER_FEATURES_EDIT:
- this.setActiveButton(netgis.Commands.BUFFER_FEATURES);
- this.showBottom(this.bottomPanels.bufferFeatures, "Puffern");
- this.onBufferFeaturesChange();
- break;
- case netgis.Modes.BUFFER_FEATURES_DYNAMIC:
- this.setActiveButton(netgis.Commands.BUFFER_FEATURES);
- this.showBottom(this.bottomPanels.bufferFeatures, "Puffern");
- this.onBufferFeaturesChange();
- break;
- case netgis.Modes.CUT_FEATURES:
- netgis.util.invoke(this.panel.container, netgis.Events.SELECT_MULTI_TOGGLE, { on: !1 });
- this.setActiveButton(netgis.Commands.CUT_FEATURES);
- break;
- case netgis.Modes.CUT_FEATURES_DRAW:
- this.setActiveButton(netgis.Commands.CUT_FEATURES);
- }
-};
-netgis.Toolbox.prototype.onTopResize = function (a) {
- if (!this.bottom.classList.contains("netgis-hide")) {
- a = this.top.getBoundingClientRect();
- var b = this.top.parentNode.getBoundingClientRect();
- this.bottom.style.top = a.bottom - b.top + "px";
- }
-};
-netgis.Toolbox.prototype.onBottomHeaderClick = function (a) {
- netgis.util.invoke(this.panel.container, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.VIEW });
-};
-netgis.Toolbox.prototype.onButtonClick = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id");
- netgis.util.invoke(a, netgis.Events.TOOLBOX_BUTTON_CLICK, { id: b });
- netgis.Client.handleCommand(a, b);
-};
-netgis.Toolbox.prototype.onDrawSnapToggle = function (a) {
- var b = a.currentTarget,
- c = b.parentNode.parentNode;
- a = b.checked;
- netgis.util.invoke(b, netgis.Events.MAP_SNAP_TOGGLE, { on: a });
- b = [];
- c === this.bottomPanels.drawPoints &&
- (b.push(this.bottomPanels.drawLines),
- b.push(this.bottomPanels.drawPolygons),
- b.push(this.bottomPanels.modifyFeatures));
- c === this.bottomPanels.drawLines &&
- (b.push(this.bottomPanels.drawPoints),
- b.push(this.bottomPanels.drawPolygons),
- b.push(this.bottomPanels.modifyFeatures));
- c === this.bottomPanels.drawPolygons &&
- (b.push(this.bottomPanels.drawPoints),
- b.push(this.bottomPanels.drawLines),
- b.push(this.bottomPanels.modifyFeatures));
- c === this.bottomPanels.modifyFeatures &&
- (b.push(this.bottomPanels.drawPoints),
- b.push(this.bottomPanels.drawLines),
- b.push(this.bottomPanels.drawPolygons));
- for (c = 0; c < b.length; c++) b[c].getElementsByTagName("input")[0].checked = a;
-};
-netgis.Toolbox.prototype.onDrawBufferToggle = function (a) {
- a = a.currentTarget;
- var b = a.checked;
- this.showDrawBufferOptions(b);
- var c = this.bottomPanels.drawPoints.getElementsByTagName("input"),
- d = Number.parseFloat(c[2].value);
- c = Number.parseInt(c[3].value);
- netgis.util.invoke(a, netgis.Events.DRAW_BUFFER_TOGGLE, { on: b, radius: d, segments: c });
-};
-netgis.Toolbox.prototype.onDrawBufferChange = function (a) {
- a = a.currentTarget.parentNode.parentNode;
- var b = a.getElementsByTagName("input"),
- c = b[1].checked,
- d = Number.parseFloat(b[2].value),
- e = Number.parseInt(b[3].value);
- netgis.util.invoke(this.bottomPanels.drawPoints, netgis.Events.DRAW_BUFFER_CHANGE, {
- on: c,
- radius: d,
- segments: e,
- });
- if (a === this.bottomPanels.drawPoints) var f = this.bottomPanels.drawLines;
- a === this.bottomPanels.drawLines && (f = this.bottomPanels.drawPoints);
- f && ((b = f.getElementsByTagName("input")), (b[1].checked = c), (b[2].value = d), (b[3].value = e));
-};
-netgis.Toolbox.prototype.onBufferFeaturesChange = function (a) {
- var b = this.bottomPanels.bufferFeatures.getElementsByTagName("input");
- a = Number.parseFloat(b[0].value);
- b = Number.parseInt(b[1].value);
- netgis.util.invoke(this.bottomPanels.bufferFeatures, netgis.Events.BUFFER_CHANGE, { radius: a, segments: b });
-};
-netgis.Toolbox.prototype.onSelectMultipleChange = function (a) {
- netgis.util.invoke(this.bottomPanels.bufferFeatures, netgis.Events.SELECT_MULTI_TOGGLE, {
- on: a.currentTarget.checked,
- });
-};
-netgis.Toolbox.prototype.onSelectMultiToggle = function (a) {
- a = a.detail;
- this.bottomPanels.bufferFeatures.getElementsByTagName("input")[2].checked = a.on;
-};
-netgis.Toolbox.prototype.onBufferFeaturesAccept = function (a) {
- var b = this.bottomPanels.bufferFeatures.getElementsByTagName("input");
- a = Number.parseFloat(b[0].value);
- b = Number.parseInt(b[1].value);
- netgis.util.invoke(this.bottomPanels.bufferFeatures, netgis.Events.BUFFER_ACCEPT, { radius: a, segments: b });
- netgis.util.invoke(this.bottomPanels.bufferFeatures, netgis.Events.CLIENT_SET_MODE, { mode: netgis.Modes.VIEW });
-};
-netgis = netgis || {};
-netgis.Tree = function (a) {
- this.draggable = a ? a : !1;
- this.dragElement = null;
- this.initElements();
-};
-netgis.Tree.prototype.initElements = function () {
- var a = document.createElement("ul");
- a.className = "netgis-tree";
- this.container = a;
-};
-netgis.Tree.prototype.attachTo = function (a) {
- a.appendChild(this.container);
-};
-netgis.Tree.prototype.clear = function () {
- this.container.innerHTML = "";
-};
-netgis.Tree.prototype.addFolder = function (a, b, c, d, e, f) {
- var g = document.createElement("li");
- g.className = "netgis-folder";
- g.setAttribute("data-id", b);
- b = document.createElement("details");
- g.appendChild(b);
- var h = document.createElement("summary");
- h.className = "netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d";
- h.innerHTML =
- "" +
- c +
- "";
- b.appendChild(h);
- !0 === this.draggable && ((netgis.util.isDefined(f) && !0 !== f) || this.setItemDraggable(h));
- c = document.createElement("label");
- h.appendChild(c);
- f = document.createElement("input");
- f.setAttribute("type", "checkbox");
- f.onchange = this.onFolderChange.bind(this);
- c.appendChild(f);
- !0 === e && g.classList.add("netgis-nocheck");
- e = document.createElement("ul");
- b.appendChild(e);
- a = a ? a.getElementsByTagName("ul")[0] : this.container;
- d ? a.insertBefore(g, a.firstChild) : a.appendChild(g);
- return g;
-};
-netgis.Tree.prototype.addCheckbox = function (a, b, c, d, e, f) {
- var g = document.createElement("li");
- g.className = "netgis-item";
- !0 === this.draggable && this.setItemDraggable(g);
- var h = document.createElement("label");
- h.className = "netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d";
- h.innerHTML = "" + c + "";
- g.appendChild(h);
- c = document.createElement("span");
- c.className = "netgis-wrapper";
- h.insertBefore(c, h.firstChild);
- h = document.createElement("input");
- h.setAttribute("type", "checkbox");
- h.setAttribute("data-id", b);
- d && (h.checked = d);
- h.onchange = this.onItemChange.bind(this);
- c.appendChild(h);
- f && this.addItemDetails(g, b, f);
- a = a ? a.getElementsByTagName("ul")[0] : this.container;
- e ? a.insertBefore(g, a.firstChild) : a.appendChild(g);
- return g;
-};
-netgis.Tree.prototype.addRadioButton = function (a, b, c, d, e) {
- var f = document.createElement("li");
- f.className = "netgis-item";
- var g = document.createElement("label");
- g.className = "netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d";
- g.innerHTML = "" + c + "";
- f.appendChild(g);
- c = document.createElement("span");
- c.className = "netgis-wrapper";
- g.insertBefore(c, g.firstChild);
- g = a ? "radio-" + a.getAttribute("data-id") : "radio-noname";
- var h = document.createElement("input");
- h.setAttribute("type", "radio");
- h.setAttribute("name", g);
- h.setAttribute("value", "radio-" + b);
- h.setAttribute("data-id", b);
- d && (h.checked = d);
- h.onchange = this.onItemChange.bind(this);
- c.appendChild(h);
- e && this.addItemDetails(f, b, e);
- a ? a.getElementsByTagName("ul")[0].appendChild(f) : this.container.appendChild(f);
- return f;
-};
-netgis.Tree.prototype.addButton = function (a, b, c, d) {
- var e = document.createElement("li"),
- f = document.createElement("button");
- f.innerHTML = c;
- f.className = "netgis-button netgis-color-e netgis-hover-d netgis-clip-text";
- f.setAttribute("type", "button");
- e.appendChild(f);
- b && f.setAttribute("data-id", b);
- d && (f.onclick = d);
- f.addEventListener("click", this.onButtonClick.bind(this));
- a ? a.getElementsByTagName("ul")[0].appendChild(e) : this.container.appendChild(e);
- return e;
-};
-netgis.Tree.prototype.addSpace = function (a) {
- var b = document.createElement("li");
- b.className = "netgis-space";
- a ? a.getElementsByTagName("ul")[0].appendChild(b) : this.container.appendChild(b);
- return b;
-};
-netgis.Tree.prototype.addItemDetails = function (a, b, c) {
- var d = document.createElement("details");
- d.className = "netgis-noselect";
- var e = document.createElement("summary");
- e.className = "netgis-clickable netgis-hover-d";
- e.innerHTML = "";
- d.appendChild(e);
- e = document.createElement("div");
- d.appendChild(e);
- for (var f = 0; f < c.length; f++) {
- var g = c[f],
- h = document.createElement("label");
- h.className = "netgis-hover-d";
- switch (g.type) {
- case "button":
- var k = document.createElement("button");
- k.setAttribute("type", "button");
- k.addEventListener("click", g.callback);
- k.className = "netgis-button netgis-color-e netgis-hover-d";
- k.innerHTML = g.title;
- h.appendChild(k);
- break;
- case "slider":
- k = document.createElement("span");
- k.className = "netgis-clip-text";
- k.innerHTML = g.title;
- h.appendChild(k);
- k = document.createElement("span");
- h.appendChild(k);
- var l = document.createElement("input");
- l.setAttribute("type", "range");
- l.setAttribute("min", 0);
- l.setAttribute("max", 100);
- l.setAttribute("step", 1);
- l.setAttribute("value", g.val);
- l.setAttribute("data-id", b);
- l.addEventListener("change", this.onItemSliderChange.bind(this));
- l.addEventListener("input", this.onItemSliderChange.bind(this));
- this.draggable &&
- (l.setAttribute("draggable", "true"),
- l.addEventListener("dragstart", function (a) {
- a.preventDefault();
- a.stopImmediatePropagation();
- }));
- k.appendChild(l);
- }
- e.appendChild(h);
- }
- a.appendChild(d);
-};
-netgis.Tree.prototype.setItemDraggable = function (a) {
- a.setAttribute("draggable", "true");
- a.addEventListener("dragstart", this.onDragStart.bind(this));
- a.addEventListener("dragenter", this.onDragEnter.bind(this));
- a.addEventListener("dragover", this.onDragOver.bind(this));
- a.addEventListener("dragleave", this.onDragLeave.bind(this));
- a.addEventListener("drop", this.onDragDrop.bind(this));
- a.addEventListener("dragend", this.onDragEnd.bind(this));
-};
-netgis.Tree.prototype.getFolder = function (a) {
- for (var b = this.container.getElementsByClassName("netgis-folder"), c = 0; c < b.length; c++) {
- var d = b[c];
- if (d.getAttribute("data-id") === a) return d;
- }
- return null;
-};
-netgis.Tree.prototype.getItem = function (a) {
- for (var b = this.container.getElementsByTagName("input"), c = 0; c < b.length; c++) {
- var d = b[c];
- if (d.getAttribute("data-id") === a) return d;
- }
- return null;
-};
-netgis.Tree.prototype.removeItem = function (a) {
- if ((a = this.getItem(a)))
- (a = a.parentNode.parentNode.parentNode),
- a.parentNode.removeChild(a),
- this.removeEmptyFolders(),
- this.updateFolderChecks();
-};
-netgis.Tree.prototype.removeEmptyFolders = function () {
- for (var a = this.container.getElementsByClassName("netgis-folder"), b = 0; b < a.length; b++)
- a[b].getElementsByTagName("ul")[0].getElementsByTagName("li");
-};
-netgis.Tree.prototype.setFolderOpen = function (a, b) {
- var c = this.container.getElementsByClassName("netgis-folder");
- a = a.toString();
- for (var d = 0; d < c.length; d++) {
- var e = c[d],
- f = e.getElementsByTagName("details")[0];
- e.getAttribute("data-id") === a && (!0 === b ? f.setAttribute("open", "") : f.removeAttribute("open"));
- }
-};
-netgis.Tree.prototype.setItemChecked = function (a, b, c) {
- var d = this.container.getElementsByClassName("netgis-item");
- a = a.toString();
- for (var e = 0; e < d.length; e++) {
- var f = d[e],
- g = f.getElementsByTagName("input")[0];
- if (g.getAttribute("data-id") === a) {
- if ("radio" === g.getAttribute("type")) {
- f = f.parentNode.getElementsByTagName("input");
- for (var h = 0; h < f.length; h++) {
- var k = f[h];
- k !== g &&
- "radio" === k.getAttribute("type") &&
- !1 !== k.checked &&
- ((k.checked = !1),
- netgis.util.invoke(g, netgis.Events.TREE_ITEM_CHANGE, {
- id: k.getAttribute("data-id"),
- checked: !1,
- }));
- }
- }
- c ? (g.checked = b) : g.checked !== b && g.click();
- }
- }
-};
-netgis.Tree.prototype.setFolderParent = function (a, b) {
- var c = a.parentNode;
- c && c.removeChild(a);
- null !== b ? b.getElementsByTagName("ul")[0].appendChild(a) : this.container.appendChild(a);
-};
-netgis.Tree.prototype.updateFolderChecks = function () {
- for (var a = this.container.getElementsByClassName("netgis-folder"), b = 0; b < a.length; b++)
- this.updateFolderCheck(a[b]);
-};
-netgis.Tree.prototype.updateFolderCheck = function (a) {
- a || (a = this.container);
- for (var b = a.getElementsByClassName("netgis-item"), c = 0, d = 0; d < b.length; d++) {
- var e = b[d].getElementsByTagName("input")[0];
- e.checked && c++;
- }
- e = a.getElementsByTagName("input")[0];
- d = 0;
- 0 < c && (d = 1);
- 0 < c && c === b.length && (d = 2);
- switch (d) {
- case 0:
- e.checked = !1;
- e.classList.remove("netgis-partial");
- break;
- case 1:
- e.checked = !0;
- e.classList.add("netgis-partial");
- break;
- case 2:
- (e.checked = !0), e.classList.remove("netgis-partial");
- }
- (a = a.parentElement) &&
- a !== this.container &&
- (a = a.parentElement.parentElement) &&
- -1 !== a.className.search("netgis-folder") &&
- this.updateFolderCheck(a);
-};
-netgis.Tree.prototype.onFolderChange = function (a) {
- var b = a.currentTarget;
- a = b.checked;
- b = b.parentElement.parentElement.parentElement.parentElement;
- for (var c = b.getElementsByTagName("input"), d = 1; d < c.length; d++) {
- var e = c[d];
- e.checked !== a && e.click();
- }
- this.updateFolderCheck(b);
- a = b.parentElement.parentElement.parentElement;
- -1 !== a.className.search("netgis-folder") && this.updateFolderCheck(a);
-};
-netgis.Tree.prototype.onItemChange = function (a) {
- a = a.currentTarget;
- var b = a.checked,
- c = a.getAttribute("data-id"),
- d = a.parentElement.parentElement.parentElement.parentElement.parentElement;
- if ("radio" === a.getAttribute("type"))
- for (
- var e = a.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("input"), f = 0;
- f < e.length;
- f++
- ) {
- var g = e[f].getAttribute("data-id");
- g && g !== c && netgis.util.invoke(a, netgis.Events.TREE_ITEM_CHANGE, { id: g, checked: !1 });
- }
- netgis.util.invoke(a, netgis.Events.TREE_ITEM_CHANGE, { id: c, checked: b });
- -1 !== d.className.search("netgis-folder") && this.updateFolderCheck(d);
-};
-netgis.Tree.prototype.onRadioChange = function (a) {
- a = a.currentTarget;
- var b = a.checked,
- c = a.getAttribute("data-id"),
- d = Number.parseInt(c);
- Number.isNaN(d) || (c = d);
- d = a.parentElement.parentElement.parentElement.parentElement.parentElement;
- netgis.util.invoke(a, netgis.Events.TREE_ITEM_CHANGE, { id: c, checked: b });
- -1 !== d.className.search("netgis-folder") && this.updateFolderCheck(d);
-};
-netgis.Tree.prototype.onButtonClick = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id");
- netgis.util.invoke(a, netgis.Events.TREE_BUTTON_CLICK, { id: b });
-};
-netgis.Tree.prototype.onItemSliderChange = function (a) {
- a = a.currentTarget;
- var b = a.getAttribute("data-id");
- netgis.util.invoke(a, netgis.Events.TREE_ITEM_SLIDER_CHANGE, { id: b, val: Number.parseFloat(a.value) });
-};
-netgis.Tree.prototype.onDragStart = function (a) {
- a.stopPropagation();
- var b = a.currentTarget,
- c = b.getElementsByTagName("input")[0].getAttribute("data-id");
- b.classList.add("netgis-dragging");
- a.dataTransfer.setData("text/plain", c);
- a.dataTransfer.dropEffect = "move";
- this.dragElement = b;
-};
-netgis.Tree.prototype.onDragEnter = function (a) {
- a = a.currentTarget;
- a !== this.dragElement && a.classList.add("netgis-dragover");
-};
-netgis.Tree.prototype.onDragOver = function (a) {
- a.preventDefault();
- a = a.currentTarget;
- a !== this.dragElement && a.classList.add("netgis-dragover");
-};
-netgis.Tree.prototype.onDragLeave = function (a) {
- a.currentTarget.classList.remove("netgis-dragover");
-};
-netgis.Tree.prototype.onDragDrop = function (a) {
- a.preventDefault();
- a.stopPropagation();
- var b = a.currentTarget;
- a.dataTransfer.getData("text/plain");
- if (b !== this.dragElement) {
- b.classList.remove("netgis-dragover");
- "summary" === b.nodeName.toLowerCase()
- ? ((a = b.parentNode.getElementsByTagName("ul")[0]), (b = 0 < a.childNodes.length ? a.childNodes[0] : null))
- : (a = b.parentNode);
- var c =
- "summary" === this.dragElement.nodeName.toLowerCase()
- ? this.dragElement.parentNode.parentNode
- : this.dragElement;
- c.parentNode !== a || 1 < a.childNodes.length || (b = null);
- c.contains(a) ||
- (c.parentNode.removeChild(c),
- b ? a.insertBefore(c, b) : a.appendChild(c),
- netgis.util.invoke(this.container, netgis.Events.TREE_ITEM_ORDER_CHANGE, {
- items: this.container.getElementsByClassName("netgis-item"),
- }));
- }
-};
-netgis.Tree.prototype.onDragEnd = function (a) {
- a.currentTarget.classList.remove("netgis-dragging");
- this.dragElement = null;
-};
-netgis = netgis || {};
-netgis.util = (function () {
- var a = function (a, b) {
- for (var c in a) a.hasOwnProperty(c) && b(c, a[c]);
- },
- b = function () {
- return navigator.language || "de-DE";
- };
- return {
- isDefined: function (a) {
- return "undefined" !== typeof a;
- },
- isObject: function (a) {
- return "object" !== typeof a || Array.isArray(a) || null === a ? !1 : !0;
- },
- isString: function (a) {
- return "string" === typeof a || a instanceof String;
- },
- isJSON: function (a, b) {
- if (!0 === b) {
- a = "string" !== typeof a ? JSON.stringify(a) : a;
- try {
- a = JSON.parse(a);
- } catch (e) {
- return !1;
- }
- return "object" === typeof a && null !== a;
- }
- b = a.trim();
- a = b.charAt(0);
- b = b.charAt(b.length - 1);
- return ("{" === a && "}" === b) || ("[" === a && "]" === b) ? !0 : !1;
- },
- isMobile: function (a) {
- return a ? 600 > a.getBoundingClientRect().width : 600 > document.body.getBoundingClientRect().width;
- },
- clone: function (a) {
- return JSON.parse(JSON.stringify(a));
- },
- stringToID: function (a, b) {
- b || (b = "-");
- a = a.trim();
- a = a.toLowerCase();
- a = this.replace(a, " ", b);
- a = this.replace(a, "\n", b);
- a = this.replace(a, "\t", b);
- a = this.replace(a, "\\.", b);
- a = this.replace(a, "\\,", b);
- a = this.replace(a, "\\!", b);
- a = this.replace(a, "\\?", b);
- a = this.replace(a, ":", b);
- a = this.replace(a, ";", b);
- a = this.replace(a, '"', b);
- a = this.replace(a, "'", b);
- a = this.replace(a, "\\\u00a7", b);
- a = this.replace(a, "\\$", b);
- a = this.replace(a, "\\%", b);
- a = this.replace(a, "\\&", b);
- a = this.replace(a, "\\/", b);
- a = this.replace(a, "\\\\", b);
- a = this.replace(a, "\\(", b);
- a = this.replace(a, "\\)", b);
- a = this.replace(a, "\\{", b);
- a = this.replace(a, "\\}", b);
- a = this.replace(a, "\\[", b);
- a = this.replace(a, "\\]", b);
- a = this.replace(a, "=", b);
- a = this.replace(a, "\\+", b);
- a = this.replace(a, "\\*", b);
- a = this.replace(a, "\\~", b);
- a = this.replace(a, "\\^", b);
- a = this.replace(a, "\\\u00b0", b);
- a = this.replace(a, "\u00b2", b);
- a = this.replace(a, "\u00b3", b);
- a = this.replace(a, "\\#", b);
- a = this.replace(a, "\\<", b);
- a = this.replace(a, "\\>", b);
- a = this.replace(a, "\\|", b);
- a = this.replace(a, "\\@", b);
- a = this.replace(a, "\u20ac", b);
- a = this.replace(a, "\u00b5", b);
- a = this.trim(a, b);
- a = this.replace(a, "\u00e4", "ae");
- a = this.replace(a, "\u00f6", "oe");
- a = this.replace(a, "\u00fc", "ue");
- a = this.replace(a, "\u00df", "ss");
- a = this.replace(a, "\u00e1", "a");
- a = this.replace(a, "\u00e0", "a");
- a = this.replace(a, "\u00e2", "a");
- a = this.replace(a, "\u00e9", "e");
- a = this.replace(a, "\u00e8", "e");
- a = this.replace(a, "\u00ea", "e");
- a = this.replace(a, "\u00ed", "i");
- a = this.replace(a, "\u00ec", "i");
- a = this.replace(a, "\u00ee", "i");
- a = this.replace(a, "\u00f3", "o");
- a = this.replace(a, "\u00f2", "o");
- a = this.replace(a, "\u00f4", "o");
- a = this.replace(a, "\u00fa", "u");
- a = this.replace(a, "\u00f9", "u");
- return (a = this.replace(a, "\u00fb", "u"));
- },
- replace: function (a, b, e) {
- return a.replace(new RegExp(b, "g"), e);
- },
- trim: function (a, b) {
- a = a.replace(new RegExp("^" + b + "+"), "");
- return (a = a.replace(new RegExp(b + "+$"), ""));
- },
- foreach: a,
- template: function (b, d) {
- a(d, function (a, c) {
- b = b.replace(new RegExp("{" + a + "}", "g"), c);
- });
- return b;
- },
- newlines: function (a) {
- return a.replace(/\n/g, "
");
- },
- create: function (a) {
- var b = document.createElement("tbody");
- b.innerHTML = a;
- return b.children[0];
- },
- insideElement: function (a, b, e) {
- a = a.getBoundingClientRect();
- return b < a.left || e < a.top || b > a.right || e > a.bottom ? !1 : !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, b, e, f) {
- f = new XMLHttpRequest();
- e && (f._requestData = e);
- f.onload = function () {
- b(this.responseText, this._requestData, this);
- };
- f.withCredentials = !1;
- f.open("GET", a, !0);
- f.send();
- return f;
- },
- downloadJSON: function (a, b) {
- a = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(a));
- var c = document.createElement("a");
- c.setAttribute("href", a);
- c.setAttribute("download", b);
- document.body.appendChild(c);
- c.click();
- c.remove();
- },
- padstr: function (a, b) {
- for (a = a.toString(); a.length < b; ) a = "0" + a;
- return a;
- },
- merge: function (a, b) {
- return Object.assign(a, b);
- },
- getTimeStamp: function (a) {
- var b = new Date();
- if (!0 === a) {
- a = b.getFullYear();
- var c = b.getMonth() + 1,
- f = b.getDate(),
- g = b.getHours(),
- h = b.getMinutes();
- b = b.getSeconds();
- 10 > c && (c = "0" + c);
- 10 > f && (f = "0" + f);
- 10 > g && (g = "0" + g);
- 10 > h && (h = "0" + h);
- 10 > b && (b = "0" + b);
- a = [a, c, f, "_", g, h, b].join("");
- } else
- (a = b.getDate() + "." + (b.getMonth() + 1) + "." + b.getFullYear()),
- (a += " " + b.getHours() + ":" + b.getMinutes());
- return a;
- },
- getUserLanguage: b,
- getFileExtension: function (a) {
- a = a.split(".");
- return 1 >= a.length ? "" : a[a.length - 1];
- },
- parseURL: function (a) {
- var b = a.indexOf("?"),
- c = -1 < b ? a.substr(0, b) : a,
- f = [];
- if (-1 < b)
- for (a = a.substr(b + 1), a = a.split("&"), b = 0; b < a.length; b++) {
- var g = a[b];
- g = g.toLowerCase();
- -1 < g.search("request") || f.push(g);
- }
- return { base: c, parameters: f };
- },
- formatDistance: function (a) {
- return 100 < a ? Math.round((a / 1e3) * 100) / 100 + " km" : Math.round(100 * a) / 100 + " m";
- },
- formatLength: function (a, b) {
- var c = 1e3 < a;
- a = c
- ? b
- ? Math.round((a / 1e3) * 1e3) / 1e3
- : Math.round(a / 1e3)
- : b
- ? Math.round(100 * a) / 100
- : Math.round(a);
- 0 === a && (c = !1);
- return a + (c ? " km" : " m");
- },
- formatArea: function (a, d, e, f) {
- a = (e = a > (e || 1e5))
- ? d
- ? Math.round((a / 1e6) * 1e3) / 1e3
- : Math.round(a / 1e6)
- : d
- ? Math.round(100 * a) / 100
- : Math.round(a);
- 0 === a && (e = !1);
- a = a.toLocaleString(b());
- return a + (e ? " km\u00b2" : " m\u00b2");
- },
- hexToRGB: function (a) {
- "#" === a.charAt(0) && (a = a.substr(1));
- a = Number.parseInt(a, 16);
- return [(a >> 16) & 255, (a >> 8) & 255, a & 255];
- },
- invoke: function (a, b, e) {
- a.dispatchEvent(new CustomEvent(b, { bubbles: !0, detail: e }));
- },
- handler: function (a, b) {
- return function (c) {
- b || (b = c);
- netgis.util.invoke(this, a, b);
- };
- },
- };
-})();
-netgis = netgis || {};
-netgis.Window = function (a) {
- this.resizing = this.dragging = !1;
- this.py = this.px = 0;
- this.initElements(a);
- this.initEvents();
- var b = this;
- window.setTimeout(function () {
- var a = b.container.getBoundingClientRect();
- b.container.style.right = "auto";
- b.container.style.bottom = "auto";
- b.container.style.left = a.left + "px";
- b.container.style.top = a.top + "px";
- }, 100);
-};
-netgis.Window.prototype.initElements = function (a) {
- this.container = document.createElement("section");
- this.container.className = "netgis-window netgis-shadow";
- this.header = document.createElement("button");
- this.header.setAttribute("type", "button");
- this.header.className =
- "netgis-mover netgis-button netgis-clip-text netgis-color-c netgis-gradient-a netgis-shadow";
- this.header.innerHTML = a;
- this.container.appendChild(this.header);
- this.closer = document.createElement("button");
- this.closer.className = "netgis-closer netgis-button netgis-text-e";
- this.closer.innerHTML = '';
- this.closer.setAttribute("type", "button");
- this.container.appendChild(this.closer);
- this.content = document.createElement("div");
- this.content.className = "netgis-content";
- this.container.appendChild(this.content);
-};
-netgis.Window.prototype.initEvents = function () {
- this.closer.addEventListener("click", this.onCloserClick.bind(this));
- this.header.addEventListener("pointerdown", this.onPointerDown.bind(this));
- document.addEventListener("pointermove", this.onDocPointerMove.bind(this));
- document.addEventListener("pointerup", this.onDocPointerUp.bind(this));
- this.observer = new ResizeObserver(this.onResizeObserve.bind(this));
- this.observer.observe(this.container, { attributes: !0 });
-};
-netgis.Window.prototype.attachTo = function (a) {
- a.appendChild(this.container);
-};
-netgis.Window.prototype.show = function () {
- this.container.classList.remove("netgis-hide");
-};
-netgis.Window.prototype.hide = function () {
- this.container.classList.add("netgis-hide");
-};
-netgis.Window.prototype.toggle = function () {
- this.container.classList.toggle("netgis-hide");
-};
-netgis.Window.prototype.isVisible = function () {
- return !this.container.classList.contains("netgis-hide");
-};
-netgis.Window.prototype.onCloserClick = function (a) {
- this.hide();
-};
-netgis.Window.prototype.onPointerDown = function (a) {
- var b = this.container.getBoundingClientRect();
- this.dragging = !0;
- this.px = a.clientX - b.left;
- this.py = a.clientY - b.top;
- this.container.classList.add("netgis-dragging");
-};
-netgis.Window.prototype.onDocPointerMove = function (a) {
- var b = a.clientX,
- c = a.clientY,
- d = this.container.getBoundingClientRect();
- if (!this.resizing && this.dragging) {
- b -= this.px;
- c -= this.py;
- var e = this.container.parentNode.getBoundingClientRect();
- 0 > b && ((b = 0), (this.px = a.clientX - d.left));
- 40 > c && ((c = 40), (this.py = a.clientY - d.top));
- b + d.width > e.right && ((b = e.width - d.width), (this.px = a.clientX - d.left));
- c + d.height > e.bottom && ((c = e.height - d.height), (this.py = a.clientY - d.top));
- this.container.style.left = b + "px";
- this.container.style.top = c + "px";
- this.container.style.right = "auto";
- this.container.style.bottom = "auto";
- }
-};
-netgis.Window.prototype.onDocPointerUp = function (a) {
- this.resizing = this.dragging = !1;
- this.container.classList.remove("netgis-dragging");
-};
-netgis.Window.prototype.onResizeObserve = function (a) {
- this.dragging && ((this.dragging = !1), (this.resizing = !0));
- a = this.container.getBoundingClientRect();
- netgis.util.invoke(this.container, netgis.Events.WINDOW_RESIZE, { x: a.x, y: a.y, w: a.width, h: a.height });
-};
-netgis = netgis || {};
-netgis.WMC = function (a) {
- this.config = a;
-};
-netgis.WMC.Config = { url: "", layers_url: "" };
-netgis.WMC.prototype.requestContext = function (a, b) {
- this.callback = b;
- netgis.util.request(a, this.onContextResponse.bind(this));
-};
-netgis.WMC.prototype.onContextResponse = function (a) {
- var b = JSON.parse(a);
- this.data = b;
- a = [];
- b = b.layerList;
- for (var c = 0; c < b.length; c++) a.push(b[c].layerId);
- this.requestLayers(a);
-};
-netgis.WMC.prototype.requestLayers = function (a) {
- var b = this.config.wmc;
- b
- ? ((b = b.layers_url),
- (b = netgis.util.replace(b, "{ids}", a.join(","))),
- netgis.util.request(b, this.onLayersResponse.bind(this)))
- : console.error("no config[ 'wmc' ] found, skipping WMC layer loading");
-};
-netgis.WMC.prototype.onLayersResponse = function (a) {
- this.layers = a = JSON.parse(a);
- console.info("WMC Layers Response:", a);
- this.callback && this.callback({ config: this.toConfig() });
-};
-netgis.WMC.prototype.toConfig = function () {
- var a = this.data.wmc,
- b = this.data.layerList,
- c = this.layers.wms.srv,
- d = {},
- e = a.bbox;
- e = e.split(",");
- for (var f = 0; f < e.length; f++) e[f] = Number.parseFloat(e[f]);
- d.map = { projection: a.crs, bbox: e };
- d.attribution || (d.attribution = {});
- d.attribution.prefix = d.attribution.prefix ? a.title + ", " + d.attribution.prefix : a.title;
- a = d.folders = [];
- e = d.layers = [];
- this.parseServiceLayers(c, b, a, e);
- b = 1e3;
- for (c = 0; c < a.length; c++) {
- f = a[c];
- for (var g = e.length - 1; 0 <= g; g--) {
- var h = e[g];
- h.folder === f.id && ((h.order = b), (b += 1));
- }
- }
- return d;
-};
-netgis.WMC.prototype.parseServiceLayers = function (a, b, c, d) {
- c || (c = []);
- d || (d = []);
- for (var e = 0; e < a.length; e++)
- for (var f = a[e], g = 0; g < f.layer.length; g++) {
- var h = f.layer[g];
- h.isRoot && c.push({ id: h.id, title: h.title, open: "1" === f.isopen });
- var k = h.layer;
- if (k) {
- b &&
- k.sort(function (a, c) {
- a = a.id;
- var d = c.id,
- e = null;
- c = null;
- for (var f = 0; f < b.length; f++) {
- var g = b[f];
- g.layerId.toString() === a && (e = g);
- g.layerId.toString() === d && (c = g);
- }
- a = e.layerPos;
- c = c.layerPos;
- return a < c ? -1 : a > c ? 1 : 0;
- });
- for (var l = k.length - 1; 0 <= l; l--) {
- var m = k[l],
- n = m.id,
- p = null;
- if (b)
- for (var q = 0; q < b.length; q++)
- if (b[q].layerId.toString() === n) {
- p = b[q];
- break;
- }
- m = this.parseServiceLayer(n, f, h.id, m, p);
- d.push(m);
- }
- }
- }
- return { folders: c, layers: d };
-};
-netgis.WMC.prototype.parseServiceLayer = function (a, b, c, d, e) {
- return {
- id: a,
- folder: c,
- title: d.title,
- active: e ? e.active : !0,
- query: 1 === d.queryable,
- transparency: e ? 1 - 0.01 * e.opacity : 0,
- order: 1e3,
- type: netgis.LayerTypes.WMS,
- url: b.getMapUrl,
- name: d.name,
- format: e ? e.currentFormat : "image/png",
- };
-};
-netgis.WMC.prototype.toConfig_02 = function () {
- var a = this.data.wmc,
- b = this.layers.wms.srv,
- c = this.data.layerList,
- d = {},
- e = a.bbox;
- e = e.split(",");
- for (var f = 0; f < e.length; f++) e[f] = Number.parseFloat(e[f]);
- d.map = { projection: a.crs, bbox: e };
- d.attribution || (d.attribution = {});
- d.attribution.prefix = d.attribution.prefix ? a.title + ", " + d.attribution.prefix : a.title;
- a = d.folders = [];
- e = d.layers = [];
- var g = [];
- for (f = 0; f < c.length; f++) {
- var h = c[f],
- k = {
- id: Number.parseInt(h.layerId),
- type: "layer",
- order: h.layerPos,
- active: h.active,
- opacity: h.opacity,
- };
- g.push(k);
- }
- for (f = 0; f < b.length; f++) {
- c = b[f];
- k = { id: Number.parseInt(c.id), type: "service", title: c.title, url: c.getMapUrl, open: "1" === c.isopen };
- g.push(k);
- for (var l = 0; l < c.layer.length; l++) {
- h = c.layer[l];
- var m = this.parseLayer(h, k.id, g);
- if (h.layer)
- for (var n = 0; n < h.layer.length; n++) {
- var p = h.layer[n],
- q = this.parseLayer(p, m.id, g);
- if (p.layer)
- for (var r = 0; r < p.layer.length; r++) {
- var t = p.layer[r],
- u = this.parseLayer(t, q.id, g);
- if (t.layer) for (var v = 0; v < t.layer.length; v++) this.parseLayer(t.layer[v], u.id, g);
- }
- }
- }
- }
- console.info("WMC ITEMS:", g);
- for (f = 0; f < g.length; f++)
- switch (((k = g[f]), k.type)) {
- case "service":
- a.push({ id: k.id, title: k.title, open: k.open });
- break;
- case "layer":
- (h = {}), e.push(h);
- }
- return d;
-};
-netgis.WMC.prototype.parseLayer = function (a, b, c) {
- for (var d = null, e = 0; e < c.length; e++)
- if (c[e].id === Number.parseInt(a.id)) {
- d = c[e];
- break;
- }
- d || ((d = { id: Number.parseInt(a.id), type: "layer" }), c.push(d));
- d.title = a.title;
- d.name = a.name;
- d.parent = b;
- a.getLegendGraphicUrl &&
- a.getLegendGraphicUrlFormat &&
- ((d.legendURL = a.getLegendGraphicUrl), (d.legendFormat = a.getLegendGraphicUrlFormat));
- a.legendUrl &&
- ((d.legendURL = window.decodeURIComponent(a.legendUrl)), (d.legendFormat = a.getLegendGraphicUrlFormat));
- d.queryable = 1 === a.layerQueryable || 1 === a.queryable ? !0 : !1;
- if (a.bbox) {
- a = a.bbox.split(",");
- for (b = 0; b < a.length; b++) a[b] = parseFloat(a[b]);
- d.bbox = [a[0], a[1], a[2], a[3]];
- }
- return d;
-};
-netgis.WMC.prototype.toConfig_01 = function () {
- var a = this.data.wmc,
- b = this.layers.wms.srv,
- c = this.data.layerList,
- d = {},
- e = a.bbox;
- e = e.split(",");
- for (var f = 0; f < e.length; f++) e[f] = Number.parseFloat(e[f]);
- d.map = { attribution: a.title + ", GeoPortal RLP", projection: a.crs, bbox: e };
- e = [];
- var g = {};
- for (f = 0; f < b.length; f++) {
- var h = b[f],
- k = { id: h.id, title: h.title, open: "1" === h.isopen };
- e.push(k);
- for (k = 0; k < h.layer.length; k++) {
- var l = h.layer[k];
- l.getMapUrl || (l.getMapUrl = h.getMapUrl);
- g[l.id.toString()] = l;
- if (l.layer)
- for (var m = 0; m < l.layer.length; m++) {
- var n = l.layer[m];
- n.getMapUrl || (n.getMapUrl = l.getMapUrl);
- g[n.id.toString()] = n;
- }
- }
- }
- console.info("WMC FOLDERS:", b, "---\x3e", e);
- b = [];
- h = 9999;
- (this.kmloverlay = a.kmloverlay) &&
- "" !== this.kmloverlay &&
- ((k = { id: "kmloverlay", title: "Meine Geodaten", parent: null }),
- e.push(k),
- (l = {
- id: "kmloverlay",
- folder: "kmloverlay",
- title: "KML Overlay",
- active: !0,
- order: h,
- type: netgis.LayerTypes.KML,
- url: this.kmloverlay,
- query: !0,
- }),
- b.push(l),
- --h);
- for (f = c.length - 1; 0 <= f; f--)
- (a = c[f]),
- (m = a.layerId.toString()),
- (l = g[m]) &&
- !l.isRoot &&
- ((k = null !== a.layerParent ? e[a.layerParent].id : null),
- (l = {
- id: m,
- folder: k,
- title: l.title,
- active: a.active,
- query: 1 === a.layerQueryable,
- transparency: 1 - 0.01 * a.opacity,
- order: h,
- type: netgis.LayerTypes.WMS,
- url: l.getMapUrl,
- name: l.name,
- format: a.currentFormat,
- }),
- "image/tiff" === l.format && (l.format = "image/png"),
- b.push(l),
- --h);
- d.folders = e;
- d.layers = b;
- return d;
-};
-netgis.build = "20251010";
+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){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,b,c,d){if(b){c=$jscomp.global;a=a.split(".");for(d=0;dZeichnungsfl\u00e4che: "+netgis.util.formatArea(a,!0)+"":null;this.update()};netgis=netgis||{};netgis.Client=function(a,b){b||(b={});a=this.initLegacyConfig(b,a);this.container=this.initContainer(a);this.debug=!1;netgis.util.isString(b)?netgis.util.isJSON(b,!1)?(b=JSON.parse(b),this.init(this.container,b)):(this.showLoader(!0),netgis.util.request(b,this.onConfigResponse.bind(this))):this.init(this.container,b)};netgis.Client.Config={loading_text:"Geoportal Client wird geladen..."};netgis.Client.Output={id:"netgis-storage"};
+netgis.Client.prototype.init=function(a,b){this.config=b;this.initParams(b);this.initConfig(b);this.initElements(a);this.initEvents();this.initModules(b);this.initOutput(b)};
+netgis.Client.prototype.initLegacyConfig=function(a,b){var c=netgis.config;if(!c)return b;c.MAP_CONTAINER_ID&&(b=c.MAP_CONTAINER_ID);a.modules||(a.modules={menu:!0,map:!0,controls:!0,attribution:!0,legend:!0,layertree:!0,info:!0,searchplace:!0,geolocation:!0});a.map||(a.map={});!c.INITIAL_CENTER_X&&0!==c.INITIAL_CENTER_X||!c.INITIAL_CENTER_Y&&0!==c.INITIAL_CENTER_Y||(a.map.center=[c.INITIAL_CENTER_X,c.INITIAL_CENTER_Y]);a.map.scalebar=!0;c.INITIAL_SCALE&&(a.map.scale=c.INITIAL_SCALE);c.MAP_SCALES&&
+(a.map.scales=c.MAP_SCALES);c.MAP_EXTENT&&(a.map.extent=c.MAP_EXTENT);c.MAX_HISTORY&&(a.map.max_view_history=c.MAX_HISTORY);a.attribution={prefix:"GeoPortal"};c.MAP_PROJECTIONS&&(a.projections=c.MAP_PROJECTIONS);c.MAP_PROJECTION&&(a.map.projection=c.MAP_PROJECTION);a.controls={buttons:[{id:"zoom_in",icon:"",title:"Zoom +"},{id:"zoom_out",icon:"",title:"Zoom -"},{id:"geolocation",icon:"",title:"Ger\u00e4testandort"},
+{id:"zoom_home",icon:"",title:"Anfangsausdehung"},{id:"legend",icon:"",title:"Legende"}]};a.folders||(a.folders=[{id:"bg",title:"Hintergrund",parent:null,radio:!0}]);a.layers||(a.layers=[]);if(c.URL_BACKGROUND_HYBRID){var d=c.URL_BACKGROUND_HYBRID;-1!==d.indexOf("{x}")||-1!==d.indexOf("{y}")&&-1!==d.indexOf("{-y}")||-1!==d.indexOf("{z}")||(d+="/{z}/{x}/{-y}.jpeg");d={id:"bg_hybrid",active:!0,folder:"bg",order:1,title:"Hybrid",type:"TMS",url:d,
+projection:"EPSG:25832",extent:"map",scales:"map",transparency:0};a.layers.push(d)}c.URL_BACKGROUND_AERIAL&&(d=c.URL_BACKGROUND_AERIAL,d={id:"bg_aerial",folder:"bg",order:1,title:"Luftbild",type:"WMS",url:d,query:!1,transparency:0},a.layers.push(d));c.URL_HEIGHT_REQUEST&&(d=c.URL_HEIGHT_REQUEST,-1===d.indexOf("{x}")&&-1===d.indexOf("{y}")&&(d+="&coord={x},{y}"),d={id:"dem_hidden",title:"Digitales H\u00f6henmodell",hidden:!0,active:!0,query:!0,type:"HIDDEN",query_url:d},a.layers.push(d));a.layertree||
+(a.layertree={});a.layertree.title="Ebenen";a.info||(a.info={});a.info.default_format="text/html";c.URL_FEATURE_INFO_PROXY&&0Tools",items:[{id:"view",title:"Betrachten"},{id:"zoom_box",title:"Zoom-Rechteck"},{id:"measure_line",
+title:"Strecke messen"},{id:"measure_area",title:"Fl\u00e4che messen"},{id:"measure_clear",title:"Messung l\u00f6schen"}]},{id:"layertree",title:"Ebenen"}]},c.MAP_SCALES&&0Ansicht",items:[{id:"view_prev",
+title:"Vorherige"},{id:"view_next",title:"N\u00e4chste"},{id:"scales",title:"Ma\u00dfstab",items:[]}]}),c.URL_USAGE_TERMS&&0Info",items:[{url:c.URL_USAGE_TERMS,title:"Nutzungsbedingungen"}]}));
+c.URL_SEARCH_REQUEST&&(d=c.URL_SEARCH_REQUEST,-1===d.indexOf("{query}")&&(d+="?outputFormat=json&resultTarget=web&searchEPSG=4326&maxResults=5&maxRows=5&featureClass=P&style=full&searchText={query}&name_startsWith={query}"),c.URL_SEARCH_PROXY&&0Suche"}),a.searchplace={title:"Suche...",url:d});a.wmc||(a.wmc={});if(c.URL_WMC_REQUEST){d=c.URL_WMC_REQUEST;if(-1===
+d.indexOf("{id}")){var e="mobilemap2";c.CONF_FILE_NAME&&0",this.config&&this.config.client&&this.config.client.loading_text&&(this.loader.innerHTML+=""+this.config.client.loading_text+"
"),this.container.appendChild(this.loader));!1===a?(this.loader.classList.add("netgis-fade"),this.loaderTimeout=window.setTimeout(function(){this.loader.classList.add("netgis-hide");
+this.loaderTimeout=null}.bind(this),600)):(this.loader.classList.remove("netgis-hide"),this.loader.classList.remove("netgis-fade"),this.loaderTimeout&&(window.clearTimeout(this.loaderTimeout),this.loaderTimeout=null))};netgis.Client.prototype.handleEvent=function(a){var b=a.type;a=a.detail;!0===this.debug&&console.info("EVENT:",b,a)};netgis.Client.prototype.addModule=function(a,b){b=new b(this.config);b.attachTo&&b.attachTo(this.container);return this.modules[a]=b};
+netgis.Client.prototype.isMobile=function(){return netgis.util.isMobile(this.container)};netgis.Client.prototype.onConfigResponse=function(a){a=JSON.parse(a);this.init(this.container,a);this.showLoader(!1)};netgis.Client.prototype.requestContextWMC=function(a,b){if(-1c.width&&(a-=d.width);b+d.height>c.height&&(b-=d.height);this.container.style.left=a+"px";this.container.style.top=b+"px"};
+netgis.ContextMenu.prototype.onContextMenuShow=function(a){a=a.detail;this.clear();for(var b=0;bExportieren",this.onExportClickPDF.bind(this));
+this.sections.jpeg=this.tabs.getContentSection(a);a+=1;this.addInputNumber(this.sections.jpeg,"Breite (Pixel):",1600,0);this.addInputNumber(this.sections.jpeg,"H\u00f6he (Pixel):",900,0);this.addCheckbox(this.sections.jpeg,"Querformat",!0);this.addButton(this.sections.jpeg,"Exportieren",this.onExportClickJPEG.bind(this));this.sections.png=this.tabs.getContentSection(a);a+=1;this.addInputNumber(this.sections.png,"Breite (Pixel):",1600,0);this.addInputNumber(this.sections.png,
+"H\u00f6he (Pixel):",900,0);this.addCheckbox(this.sections.png,"Querformat",!0);this.addButton(this.sections.png,"Exportieren",this.onExportClickPNG.bind(this));this.sections.gif=this.tabs.getContentSection(a);a+=1;this.addInputNumber(this.sections.gif,"Breite (Pixel):",1600,0);this.addInputNumber(this.sections.gif,"H\u00f6he (Pixel):",900,0);this.addCheckbox(this.sections.gif,"Querformat",!0);this.addButton(this.sections.gif,"Exportieren",
+this.onExportClickGIF.bind(this));this.sections.geojson=this.tabs.getContentSection(a);this.addCheckbox(this.sections.geojson,"Nicht-Editierbare Geometrien einbeziehen",!1);this.addButton(this.sections.geojson,"Exportieren",this.onExportClickGeoJSON.bind(this))};
+netgis.Export.prototype.attachTo=function(a){a.appendChild(this.modal.container);a.addEventListener(netgis.Events.EXPORT_SHOW,this.onExportShow.bind(this));a.addEventListener(netgis.Events.EXPORT_END,this.onExportEnd.bind(this))};netgis.Export.prototype.addText=function(a,b){var c=document.createElement("div");c.innerHTML=b;a.appendChild(c);return c};
+netgis.Export.prototype.addButton=function(a,b,c){var d=document.createElement("button");d.className="netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow";d.setAttribute("type","button");d.innerHTML=b;c&&(d.onclick=c);a.appendChild(d);return d};
+netgis.Export.prototype.addInputText=function(a,b,c){var d=document.createElement("label");d.innerHTML=b;var e=document.createElement("input");e.setAttribute("type","text");d.appendChild(e);if(c){b="list-"+netgis.util.stringToID(b);var f=document.createElement("datalist");f.setAttribute("id",b);for(var g=0;g",this.sections.geoportal.appendChild(this.geoportalLoader),this.geoportalResults=new netgis.Tree,this.geoportalResults.container.addEventListener(netgis.Events.TREE_ITEM_CHANGE,this.onGeoportalTreeItemChange.bind(this)),this.geoportalResults.attachTo(this.sections.geoportal),this.geoportalSubmit=this.addButton(this.sections.geoportal,
+"Hinzuf\u00fcgen",this.onGeoportalSubmit.bind(this)));this.sections.wms=this.tabs.getContentSection(b);b+=1;this.addInputText(this.sections.wms,"WMS-URL:",this.config["import"].wms_options);this.addButton(this.sections.wms,"Dienst laden",this.onWMSLoadClick.bind(this));this.addInputText(this.sections.wms,"Bezeichnung:");this.addInputSelect(this.sections.wms,
+"Ebene:");this.addInputSelect(this.sections.wms,"Format:");this.addButton(this.sections.wms,"Hinzuf\u00fcgen",this.onWMSAcceptClick.bind(this));this.showDetailsWMS(!1);this.sections.wfs=this.tabs.getContentSection(b);b+=1;this.addInputText(this.sections.wfs,"WFS-URL:",this.config["import"].wfs_options);this.addButton(this.sections.wfs,"Dienst laden",this.onWFSLoadClick.bind(this));
+this.addInputText(this.sections.wfs,"Bezeichnung:");this.addInputSelect(this.sections.wfs,"Ebene:");this.addInputSelect(this.sections.wfs,"Format:");this.addButton(this.sections.wfs,"Hinzuf\u00fcgen",this.onWFSAcceptClick.bind(this));this.showDetailsWFS(!1);this.sections.geojson=this.tabs.getContentSection(b);b+=1;this.addInputFile(this.sections.geojson,"GeoJSON-Datei:",".geojson,.json");this.addText(this.sections.geojson,"Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
");
+this.addButton(this.sections.geojson,"Datei laden",this.onGeoJSONAcceptClick.bind(this));this.sections.gml=this.tabs.getContentSection(b);b+=1;this.addInputFile(this.sections.gml,"GML-Datei:",".gml,.xml");this.addText(this.sections.gml,"Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
");this.addButton(this.sections.gml,"Datei laden",
+this.onGMLAcceptClick.bind(this));this.sections.geopackage=this.tabs.getContentSection(b);b+=1;this.addInputFile(this.sections.geopackage,"GeoPackage-Datei:",".gpkg");this.addText(this.sections.geopackage,"Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
");this.addButton(this.sections.geopackage,"Datei laden",this.onGeoPackageAcceptClick.bind(this));
+this.sections.spatialite=this.tabs.getContentSection(b);b+=1;this.addInputFile(this.sections.spatialite,"Spatialite-Datei:",".sqlite");this.addText(this.sections.spatialite,"Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
");this.addButton(this.sections.spatialite,"Datei laden",this.onSpatialiteAcceptClick.bind(this));this.sections.shapefile=
+this.tabs.getContentSection(b);this.addInputFile(this.sections.shapefile,"Shapefile-Zip-Datei:",".zip");this.addText(this.sections.shapefile,"Unterst\u00fctzte Koordinatensysteme:
- Web Mercator (EPSG:3857)
- WGS84 / Lon-Lat (EPSG:4326)
- ETRS89 / UTM Zone 32N (EPSG:25832)
");this.addButton(this.sections.shapefile,"Datei laden",this.onShapefileAcceptClick.bind(this))};
+netgis.Import.prototype.initPreview=function(){this.preview=new netgis.Modal("Vorschau");this.preview.attachTo(this.modal.content);this.previewMapContainer=document.createElement("div");this.previewMapContainer.className="netgis-preview-map";this.preview.content.appendChild(this.previewMapContainer);if(ol){var a=this.config.map;a={projection:a.projection,center:a.centerLonLat?ol.proj.fromLonLat(a.centerLonLat):a.center,zoom:a.zoom};this.previewMap=new ol.Map({target:this.previewMapContainer,view:new ol.View(a),
+pixelRatio:1,moveTolerance:3,controls:[]});this.previewMap.getView().padding=[10,10,10,10];this.previewMap.addLayer(new ol.layer.Tile({source:new ol.source.OSM}))}this.previewTree=new netgis.Tree;this.previewTree.container.classList.add("netgis-preview-tree");this.previewTree.attachTo(this.preview.content);this.previewTree.container.addEventListener(netgis.Events.TREE_ITEM_CHANGE,this.onPreviewTreeItemChange.bind(this));this.previewSubmit=document.createElement("button");this.previewSubmit.setAttribute("type",
+"button");this.previewSubmit.className="netgis-import-submit netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow";this.previewSubmit.innerHTML="Hinzuf\u00fcgen";this.previewSubmit.addEventListener("click",this.onPreviewSubmitClick.bind(this));this.preview.content.appendChild(this.previewSubmit)};
+netgis.Import.prototype.attachTo=function(a){a.appendChild(this.modal.container);a.addEventListener(netgis.Events.IMPORT_LAYER_SHOW,this.onImportShow.bind(this));a.addEventListener(netgis.Events.IMPORT_LAYER_PREVIEW_FEATURES,this.onImportPreviewFeatures.bind(this))};netgis.Import.prototype.addText=function(a,b){var c=document.createElement("div");c.innerHTML=b;a.appendChild(c);return c};
+netgis.Import.prototype.addButton=function(a,b,c){var d=document.createElement("button");d.className="netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow";d.setAttribute("type","button");d.innerHTML=b;c&&(d.onclick=c);a.appendChild(d);return d};
+netgis.Import.prototype.addInputText=function(a,b,c){var d=document.createElement("label");d.innerHTML=b;var e=document.createElement("input");e.setAttribute("type","text");d.appendChild(e);if(c){b="list-"+netgis.util.stringToID(b);var f=document.createElement("datalist");f.setAttribute("id",b);for(var g=0;ga.length)){var b=netgis.util.parseURL(a);a=b.base;b=b.parameters;b.push("request=GetCapabilities");b=b.join("&");-1===b.search("service=")&&(b+="&service=WMS");netgis.util.request(a+"?"+b,this.onWMSCapsResponse.bind(this))}};
+netgis.Import.prototype.onWMSCapsResponse=function(a){var b=(new DOMParser).parseFromString(a,"text/xml"),c=b.documentElement;b=b.getElementsByTagName("parsererror");for(var d=0;db.length)){var c=b.indexOf("?");a=-1":"","",a,"
",b,"
"].join(""))};netgis.Info.prototype.onClientContextResponse=function(a){this.initConfig(a.detail.context.config)};netgis.Info.prototype.onClientSetMode=function(a){this.popup.hide()};
+netgis.Info.prototype.onMapLayerToggle=function(a){var b=a.detail;a=b.id;if(b.on){b=this.config.layers;for(var c=null,d=0;d");for(c=0;c");b.push(""+g+" | ");b.push(""+f+" | ");b.push("")}b.push("")}else b.push("Keine Eigenschaften vorhanden...");b=b.join("");this.addSection(a,b,!1);!this.popup.isVisible()&&this.popup.show()}};
+netgis.Info.prototype.onLayerResponseWMS=function(a,b,c){b=b.title;if(c=c.getResponseHeader("Content-Type"))switch(c.split(";")[0]){case "text/plain":a=""+a+"
"}this.popup.hideLoader();this.addSection(b,a,!1)};netgis=netgis||{};netgis.LayerID={EDITABLE:"editable-layer",NON_EDITABLE:"non-editable-layer"};netgis=netgis||{};netgis.LayerTree=function(a){this.config=a;this.importFolder=null;this.initElements(a);this.initFolders();this.initConfig(a)};netgis.LayerTree.Config={open:!1,title:"Layers",draggable:!1,buttons:[]};netgis.LayerTree.Folders=[];
+netgis.LayerTree.prototype.initElements=function(a){a=a.layertree;this.panel=new netgis.Panel("Layers");this.tree=new netgis.Tree(a.draggable);this.tree.attachTo(this.panel.content);this.tree.container.addEventListener(netgis.Events.TREE_ITEM_CHANGE,this.onTreeItemChange.bind(this));this.tree.container.addEventListener(netgis.Events.TREE_ITEM_SLIDER_CHANGE,this.onTreeItemSliderChange.bind(this));this.tree.container.addEventListener(netgis.Events.TREE_ITEM_ORDER_CHANGE,this.onTreeItemOrderChange.bind(this));
+!0===a.draggable&&(this.panel.content.addEventListener("dragover",this.onDragOver.bind(this)),this.panel.content.addEventListener("drop",this.onDragDrop.bind(this)))};
+netgis.LayerTree.prototype.initFolders=function(){this.editFolder=this.tree.addFolder(null,"edit-folder","Zeichnung",!0,!0);this.tree.addCheckbox(this.editFolder,netgis.LayerID.EDITABLE,"Editierbar");this.tree.setItemChecked(netgis.LayerID.EDITABLE,!0);this.tree.addCheckbox(this.editFolder,netgis.LayerID.NON_EDITABLE,"Nicht-Editierbar");this.tree.setItemChecked(netgis.LayerID.NON_EDITABLE,!0);this.editFolder.classList.add("netgis-hide")};
+netgis.LayerTree.prototype.initConfig=function(a,b){var c=a.layertree;c&&c.title&&this.panel.setTitle(c.title);var d=a.folders,e={};if(d){for(var f=0;f';a.layertree&&a.layertree.query_icon&&(n=a.layertree.query_icon);(!0===k.query||k.query_url&&""!==k.query_url)&&n&&""!==n&&(m+=''+n+"");n=k.removable;h=!0===l?this.tree.addRadioButton(g,h,m,k.active,this.createDefaultDetails(k,!0,n)):this.tree.addCheckbox(g,h,m,k.active,!1,this.createDefaultDetails(k,
+!0,n));h.addEventListener("contextmenu",this.onTreeItemMenu.bind(this));!0===k.hidden&&h.classList.add("netgis-hide")}this.tree.updateFolderChecks();if(c&&c.buttons)for(a=a.layertree.buttons,f=0;f Transparenz:",type:"slider",val:a.transparency?Math.round(100*a.transparency):0});!0===c&&d.push({title:" Entfernen",type:"button",callback:this.onTreeItemDeleteClick.bind(this)});return d};
+netgis.LayerTree.prototype.onTreeItemChange=function(a){var b=a.detail;netgis.util.invoke(a.target,netgis.Events.MAP_LAYER_TOGGLE,{id:b.id,on:b.checked})};netgis.LayerTree.prototype.onClientContextResponse=function(a){this.initConfig(a.detail.context.config,!0)};netgis.LayerTree.prototype.onLayerTreeToggle=function(a){this.panel.toggle()};netgis.LayerTree.prototype.onTreeButtonClick=function(a){a=a.currentTarget;var b=a.getAttribute("data-id");netgis.Client.handleCommand(a,b)};
+netgis.LayerTree.prototype.onMapLayerCreate=function(a){this.addLayerItem(a.detail,null)};netgis.LayerTree.prototype.onMapLayerToggle=function(a){a=a.detail;this.tree.setItemChecked(a.id,a.on,!0);this.tree.updateFolderChecks()};netgis.LayerTree.prototype.onImportLayerAccept=function(a){a=a.detail;!0!==a.editable&&(this.importFolder||(this.importFolder=this.tree.addFolder(null,"_import","Import",!0,!1)),this.addLayerItem(a,this.importFolder),this.tree.updateFolderChecks())};
+netgis.LayerTree.prototype.addLayerItem=function(a,b){var c=a.title,d='';config.layertree&&config.layertree.query_icon&&(d=config.layertree.query_icon);(!0===a.query||a.query_url&&""!==a.query_url)&&d&&""!==d&&(c+=''+d+"");this.tree.addCheckbox(b,a.id,c,!0,!0,this.createDefaultDetails(a,!0,!0)).addEventListener("contextmenu",this.onTreeItemMenu.bind(this))};
+netgis.LayerTree.prototype.onImportGeoportalSubmit=function(a){a=a.detail;var b=a.folder.id,c=this.tree.getFolder(b);c||(c=this.tree.addFolder(null,b,a.folder.title,!0,!1));var d=a.layer.id;b={id:d,folder:b,title:a.layer.title,active:!0,type:netgis.LayerTypes.WMS,url:a.layer.url,name:a.layer.name,order:1E4,transparency:0};this.config.layers.push(b);this.tree.addCheckbox(c,d,a.layer.title,!1,!1,this.createDefaultDetails(b,!0,!0));this.tree.setItemChecked(d,!0,!1)};
+netgis.LayerTree.prototype.onTreeItemMenu=function(a){a.preventDefault();return!1};netgis.LayerTree.prototype.onContextMenuSliderChange=function(a){var b=a.detail;a=.01*b.val;var c=null;0===b.id.indexOf("layer_trans_")&&(c=b.id.split("layer_trans_")[1]);b=this.config.layers;for(var d=0;dLegende");this.panel.content.classList.add("netgis-legend")};netgis.Legend.prototype.initConfig=function(a){var b=a.legend;b&&!0===b.open&&this.show();a=a.layers;for(b=0;b":"","",b,"
",c,"
"].join("")+this.panel.content.innerHTML};
+netgis.Legend.prototype.addLayerLegend=function(a){for(var b=null,c=this.config.layers,d=0;d",!0)}};
+netgis.Legend.prototype.removeLayerLegend=function(a){for(var b=this.panel.content.getElementsByTagName("details"),c=0;c=e)return c;!0===b.viewport_labels&&(b=this.view.calculateExtent(this.map.getSize()),f=ol.geom.Polygon.fromExtent(b),b=new jsts.io.OL3Parser,d=b.read(d),f=b.read(f),d=d.intersection(f),d=b.write(d),c.setGeometry(d));e=netgis.util.formatArea(e,!0);(a=a.getProperties().title)&&(e=a+"\n"+e);c.setText(new ol.style.Text({text:e,
+font:"4mm Arial, sans-serif",fill:new ol.style.Fill({color:g}),backgroundFill:new ol.style.Fill({color:"rgba( 255, 255, 255, 0.5 )"}),padding:[2,4,2,4]}))}return c};
+netgis.Map.prototype.styleNonEdit=function(a){var b,c;this.config&&this.config.styles&&(this.config.styles.non_edit&&(b=this.config.styles.non_edit),this.config.styles.select&&(c=this.config.styles.select));b||(b=netgis.Map.Styles.non_edit);c||(c=netgis.Map.Styles.select);var d=a.getGeometry(),e=this.hoverFeature===a;-1=e)return c;!0===b.viewport_labels&&(b=this.map.getView().calculateExtent(this.map.getSize()),f=ol.geom.Polygon.fromExtent(b),b=new jsts.io.OL3Parser,d=b.read(d),f=b.read(f),d=d.intersection(f),d=b.write(d),c.setGeometry(d));e=netgis.util.formatArea(e,!0);(a=a.getProperties().title)&&(e=a+"\n"+e);c.setText(new ol.style.Text({text:e,font:"4mm Arial, sans-serif",
+fill:new ol.style.Fill({color:g}),backgroundFill:new ol.style.Fill({color:"rgba( 255, 255, 255, 0.5 )"}),padding:[2,4,2,4]}))}return c};
+netgis.Map.prototype.styleSketch=function(a){var b,c;this.config&&this.config.styles&&(this.config.styles.sketch&&(b=this.config.styles.sketch),this.config.styles.error&&(c=this.config.styles.error));b||(b=netgis.Map.Styles.sketch);c||(c=netgis.Map.Styles.error);this.drawError&&c&&(b=c);var d=a.getGeometry();c=new ol.style.Style({image:new ol.style.Circle({radius:b.radius,fill:new ol.style.Fill({color:b.fill})}),fill:new ol.style.Fill({color:b.fill}),stroke:new ol.style.Stroke({color:b.stroke,width:b.width})});
+d instanceof ol.geom.Polygon&&(d=d.getArea(),c.setText(new ol.style.Text({text:[netgis.util.formatArea(d,!0),"4mm sans-serif"],font:"Arial",fill:new ol.style.Fill({color:b.stroke}),backgroundFill:new ol.style.Fill({color:"rgba( 255, 255, 255, 0.5 )"}),padding:[2,4,2,4]})));a=new ol.style.Style({image:new ol.style.Circle({radius:b.radius,fill:new ol.style.Fill({color:b.stroke})}),geometry:this.getGeometryPoints(a)});return[c,a]};
+netgis.Map.prototype.styleModify=function(a){var b;this.config&&this.config.styles&&this.config.styles.modify&&(b=this.config.styles.modify);b||(b=netgis.Map.Styles.modify);var c=new ol.style.Style({image:new ol.style.Circle({radius:b.radius,fill:new ol.style.Fill({color:b.stroke})}),fill:new ol.style.Fill({color:b.fill}),stroke:new ol.style.Stroke({color:b.stroke,width:b.width})}),d=new ol.style.Style({image:new ol.style.Circle({radius:b.radius,fill:new ol.style.Fill({color:b.stroke})}),geometry:this.getGeometryPoints(a)});
+a=a.getGeometry();a instanceof ol.geom.Polygon&&(a=a.getArea(),c.setText(new ol.style.Text({text:[netgis.util.formatArea(a,!0),"4mm sans-serif"],font:"Arial",fill:new ol.style.Fill({color:b.stroke}),backgroundFill:new ol.style.Fill({color:"rgba( 255, 255, 255, 0.5 )"}),padding:[2,4,2,4]})));return[c,d]};
+netgis.Map.prototype.styleHover=function(a){var b;this.config&&this.config.styles&&this.config.styles.select&&(b=this.config.styles.select);b||(b=netgis.Map.Styles.select);return new ol.style.Style({image:new ol.style.Circle({radius:b.radius,fill:new ol.style.Fill({color:b.stroke})}),fill:new ol.style.Fill({color:b.fill}),stroke:new ol.style.Stroke({color:b.stroke,width:b.width}),zIndex:1})};
+netgis.Map.prototype.getGeometryPoints=function(a){var b=a.getGeometry();if(b instanceof ol.geom.LineString)return new ol.geom.MultiPoint(b.getCoordinates());if(b instanceof ol.geom.Polygon){a=[];b=b.getCoordinates();for(var c=0;cg;++g)e[g]=d/Math.pow(2,g),f[g]=g;source=new ol.source.WMTS({url:a,params:{LAYER:b,FORMAT:"image/png",TRANSPARENT:"true",VERSION:"1.1.1"},layer:b,format:"image/jpeg",matrixSet:"UTM32",tileGrid:new ol.tilegrid.WMTS({origin:ol.extent.getTopLeft(c),resolutions:e,matrixIds:f})})};
+netgis.Map.prototype.createLayerGeoJSON=function(a){if(netgis.util.isObject(a)){var b=new ol.format.GeoJSON,c=b.readProjection(a);a=b.readFeatures(a,{featureProjection:this.view.getProjection()});c=c.getCode();switch(c){case "EPSG:3857":case "EPSG:4326":case this.view.getProjection().getCode():break;default:console.warn("unsupported import projection '"+c+"'")}var d=new ol.layer.Vector({source:new ol.source.Vector({features:a})});return d}if(netgis.util.isString(a)){d=new ol.layer.Vector({source:new ol.source.Vector({features:[]})});
+var e=this;netgis.util.request(a,function(a){a=JSON.parse(a);a=e.createLayerGeoJSON(a);d.getSource().addFeatures(a.getSource().getFeatures())});return d}};
+netgis.Map.prototype.createLayerGML=function(a){console.warn("GML support is experimental!");var b=[];a=(new DOMParser).parseFromString(a,"text/xml").getElementsByTagName("gml:featureMember");for(var c=0;ca.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.Map.prototype.isPointInsideLayer=function(a,b){a=a.getSource().getFeatures();for(var c=0;cc.length)return!1}else if(b instanceof ol.geom.Polygon&&(c=c[0],4>c.length||0>=b.getArea()))return!1;c=new jsts.io.OL3Parser;b=c.read(b);a=a.getSource().getFeatures();for(var d=0;da.length)){for(var b=a[0].getGeometry().getExtent(),c=1;cthis.viewHistoryMax&&this.viewHistory.shift();this.viewIndex=this.viewHistory.length-1};
+netgis.Map.prototype.gotoViewHistory=function(a){if(!(1>this.viewHistory.length)){var b=this.viewHistory.length-1;0>a&&(a=b);a>b&&(a=0);a!==this.viewIndex&&(b=this.viewHistory[a],this.viewIndex=a,this.viewFromHistory=!0,this.view.setCenter(b.center),this.view.setZoom(b.zoom))}};netgis.Map.prototype.setPadding=function(a,b,c,d){var e=this.paddingBuffer;this.view.padding=[a+e,b+e,c+e,d+e]};
+netgis.Map.prototype.exportImage=function(a,b,c,d,e){var f=this,g=this.container,h=this.map,k=this.config["export"],l=new Image;l.onload=function(){var m=document.createElement("div");m.style.position="fixed";m.style.top="0px";m.style.left="0px";m.style.width=b+"px";m.style.height=c+"px";m.style.background="white";m.style.zIndex=-1;m.style.opacity=0;m.style.pointerEvents="none";g.appendChild(m);h.setTarget(m);h.once("rendercomplete",function(){var n=document.createElement("canvas");n.width=b;n.height=
+c;var q=n.getContext("2d");q.webkitImageSmoothingEnabled=!1;q.mozImageSmoothingEnabled=!1;q.imageSmoothingEnabled=!1;Array.prototype.forEach.call(document.querySelectorAll(".ol-layer canvas"),function(a){if(0n.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.default_filename+".pdf"});window.open(n,"_blank");break;case "jpeg":window.navigator.msSaveBlob?window.navigator.msSaveBlob(n.msToBlob(),k.default_filename+".jpg"):(p.setAttribute("download",k.default_filename+".jpg"),p.setAttribute("href",n.toDataURL("image/jpeg",1)),p.click());break;case "png":window.navigator.msSaveBlob?window.navigator.msSaveBlob(n.msToBlob(),
+k.default_filename+".png"):(p.setAttribute("download",k.default_filename+".png"),p.setAttribute("href",n.toDataURL("image/png",1)),p.click());break;case "gif":p.setAttribute("download",k.default_filename+".gif"),v=new GIF({workerScript:k.gif_worker,quality:1}),v.addFrame(n),v.on("finished",function(a){p.setAttribute("href",window.URL.createObjectURL(a));p.click()}),v.render()}h.setTarget(g);g.removeChild(m);netgis.util.invoke(f.container,netgis.Events.EXPORT_END,null)});h.renderSync()};l.src=k.logo};
+netgis.Map.prototype.exportFeatures=function(a){var b=this.editLayer.getSource().getFeatures();!0===a&&(a=this.nonEditLayer.getSource().getFeatures(),b=b.concat(a));b=(new ol.format.GeoJSON).writeFeaturesObject(b,{featureProjection:this.view.getProjection(),dataProjection:"EPSG:4326"});a=this.config["export"].default_filename+".geojson";b.name=a;netgis.util.downloadJSON(b,a);netgis.util.invoke(this.container,netgis.Events.EXPORT_END,null)};netgis.Map.prototype.onClientContextResponse=function(a){this.initConfig(a.detail.context.config)};
+netgis.Map.prototype.onEditLayerLoaded=function(a){a=a.detail.geojson;var b=new ol.format.GeoJSON;b.readProjection(a);a=b.readFeatures(a,{featureProjection:this.view.getProjection().getCode()});var c=this,d=a.slice();window.setTimeout(function(){c.zoomFeatures(d)},10);b=[];for(var e=0;ea[0].length)for(var d=0;dNetGIS Client",items:[],compact:!0};
+netgis.Menu.prototype.initElements=function(){this.container=document.createElement("nav");this.container.className="netgis-menu netgis-noselect netgis-color-a netgis-gradient-a netgis-shadow-large";this.toggle=document.createElement("button");this.toggle.setAttribute("type","button");this.toggle.addEventListener("click",this.onToggleClick.bind(this));this.toggle.className="netgis-menu-toggle netgis-hover-c";this.toggle.innerHTML="";this.container.appendChild(this.toggle)};
+netgis.Menu.prototype.initConfig=function(a){var b=a.menu;if(b&&(b.header&&this.addHeader(b.header),!0===b.compact&&this.container.classList.add("netgis-compact"),b.items)){b=b.items;for(var c=0;c"+b+"";d.setAttribute("type","button");c&&(d.onclick=c);a&&a.appendChild(d);return d};netgis.Modal.prototype.onHeaderClick=function(a){this.hide()};netgis.Modal.prototype.onContainerClick=function(a){a.target===this.container&&this.hide()};netgis=netgis||{};
+netgis.Modes=Object.freeze({VIEW:"view",ZOOM_BOX:"zoom-box",MEASURE_LINE:"measure-line",MEASURE_AREA:"measure-area",DRAW_POINTS:"draw-points",DRAW_LINES:"draw-lines",DRAW_POLYGONS:"draw-polygons",MODIFY_FEATURES:"modify-features",DELETE_FEATURES:"delete-features",BUFFER_FEATURES:"buffer-features",BUFFER_FEATURES_EDIT:"buffer-features-edit",BUFFER_FEATURES_DYNAMIC:"buffer-features-dynamic",CUT_FEATURES:"cut-features",CUT_FEATURES_DRAW:"cut-features-draw",CUT_FEATURES_DYNAMIC:"cut-features-dynamic",SEARCH_PARCEL:"search-parcel"});netgis=netgis||{};netgis.Modules={menu:!0,layertree:!0,map:!0,controls:!0,attribution:!0,legend:!0,geolocation:!0,info:!0,searchplace:!0,searchparcel:!0,toolbox:!0,"import":!0,"export":!0,timeslider:!0};netgis=netgis||{};
+netgis.OWS=function(){return{read:function(a,b){console.info("OWS READ:",a);console.info("OWS PROPS:",a.properties);a=a.features;for(b=0;b"+b+"";d.setAttribute("type","button");c&&(d.onclick=c);a&&a.appendChild(d);return d};
+netgis.Panel.prototype.show=function(){this.container.classList.contains("netgis-show")||(this.container.classList.add("netgis-show"),netgis.util.invoke(this.container,netgis.Events.PANEL_TOGGLE,{container:this.container,visible:!0,width:this.container.getBoundingClientRect().width}))};
+netgis.Panel.prototype.hide=function(){this.container.classList.contains("netgis-show")&&(this.container.classList.remove("netgis-show"),netgis.util.invoke(this.container,netgis.Events.PANEL_TOGGLE,{container:this.container,visible:!1}))};
+netgis.Panel.prototype.toggle=function(){this.container.classList.toggle("netgis-show");var a=this.container.classList.contains("netgis-show");netgis.util.invoke(this.container,netgis.Events.PANEL_TOGGLE,{container:this.container,visible:a,width:a?this.container.getBoundingClientRect().width:void 0})};netgis.Panel.prototype.visible=function(){return this.container.classList.contains("netgis-show")};netgis.Panel.prototype.width=function(){return this.container.getBoundingClientRect().width};
+netgis.Panel.prototype.setTitle=function(a){this.header.getElementsByTagName("span")[0].innerHTML=a};netgis.Panel.prototype.onHeaderClick=function(a){this.hide()};netgis.Panel.prototype.onResize=function(a){this.container.classList.contains("netgis-show")&&(a=this.container.getBoundingClientRect(),netgis.util.invoke(this.container,netgis.Events.PANEL_RESIZE,{width:a.width}))};netgis.Panel.prototype.onPanelToggle=function(a){a=a.detail;a.visible&&a.container!==this.container&&this.hide()};netgis=netgis||{};netgis.Plugins=function(a){this.config=a;this.plugins={};this.initConfig(a)};netgis.Plugins.Config={};
+netgis.Plugins.prototype.initConfig=function(a){if(a=a.plugins)for(var b=0;b";
+this.closer.onclick=this.onCloserClick.bind(this);this.content.appendChild(this.closer);this.loader=document.createElement("div");this.loader.className="netgis-loader netgis-color-e netgis-text-a";this.loader.innerHTML="";this.wrapper=document.createElement("div");this.wrapper.className="netgis-wrapper";this.content.appendChild(this.wrapper)};netgis.Popup.prototype.attachTo=function(a){a.appendChild(this.container)};
+netgis.Popup.prototype.show=function(){this.container.classList.add("netgis-show");netgis.util.isMobile()&&(this.container.style.width=document.body.getBoundingClientRect().width-10+"px")};netgis.Popup.prototype.hide=function(){this.container.classList.remove("netgis-show")};netgis.Popup.prototype.isVisible=function(){return this.container.classList.contains("netgis-show")};netgis.Popup.prototype.showLoader=function(){this.content.appendChild(this.loader)};
+netgis.Popup.prototype.hideLoader=function(){this.loader.parentNode===this.content&&this.content.removeChild(this.loader)};
+netgis.Popup.prototype.setPosition=function(a,b){var c=this.container.parentNode.getBoundingClientRect(),d=this.arrow.getBoundingClientRect();a>c.width-d.width&&(a=c.width-d.width);aa.x?this.content.style.left=
+-a.x+"px":a.x+a.width>c.width&&(this.content.style.left=-(a.x+a.width-c.width)+"px")};netgis.Popup.prototype.setHeader=function(a){this.closer.getElementsByTagName("span")[0].innerHTML=a};netgis.Popup.prototype.setContent=function(a){this.wrapper.innerHTML=a};netgis.Popup.prototype.clearContent=function(){this.wrapper.innerHTML=""};netgis.Popup.prototype.addContent=function(a){this.wrapper.innerHTML+=a};netgis.Popup.prototype.onDocumentPointerDown=function(a){};
+netgis.Popup.prototype.onPointerDown=function(a){a.stopPropagation()};netgis.Popup.prototype.onCloserClick=function(a){this.hide()};netgis=netgis||{};netgis.Search=function(a){this.debounce=400;this.autocomplete=!0;this.initElements(a);this.initEvents()};
+netgis.Search.prototype.initElements=function(a){var b=document.createElement("div");b.className="netgis-search";this.container=b;var c=document.createElement("label");b.appendChild(c);this.label=c;var d=document.createElement("input");d.className="netgis-round netgis-shadow";d.setAttribute("type","text");d.setAttribute("placeholder",a);c.appendChild(d);this.input=d;a=document.createElement("button");a.setAttribute("type","button");a.innerHTML="";a.className="netgis-no-background";
+c.appendChild(a);this.button=a;a=document.createElement("button");a.setAttribute("type","button");a.className="netgis-hide netgis-no-background";a.innerHTML="";c.appendChild(a);this.closer=a;c=document.createElement("ul");b.appendChild(c);this.results=c};
+netgis.Search.prototype.initEvents=function(){this.input.addEventListener("change",this.onInputChange.bind(this));this.input.addEventListener("keydown",this.onInputKeyDown.bind(this));this.input.addEventListener("keyup",this.onInputKeyUp.bind(this));this.button.addEventListener("click",this.onButtonClick.bind(this));this.closer.addEventListener("click",this.onCloserClick.bind(this))};netgis.Search.prototype.attachTo=function(a){a.appendChild(this.container)};netgis.Search.prototype.show=function(){this.container.classList.remove("netgis-hide")};
+netgis.Search.prototype.hide=function(){this.container.classList.add("netgis-hide")};netgis.Search.prototype.toggle=function(){this.container.classList.toggle("netgis-hide")};netgis.Search.prototype.isVisible=function(){return!this.container.classList.contains("netgis-hide")};netgis.Search.prototype.minimize=function(){this.container.classList.remove("netgis-color-e","netgis-shadow");this.input.classList.add("netgis-shadow")};
+netgis.Search.prototype.maximize=function(){this.container.classList.add("netgis-color-e","netgis-shadow");this.input.classList.remove("netgis-shadow")};netgis.Search.prototype.focus=function(){this.input.focus()};netgis.Search.prototype.setTitle=function(a){this.input.setAttribute("placeholder",a)};
+netgis.Search.prototype.addResult=function(a,b){var c=document.createElement("li"),d=document.createElement("button");d.className="netgis-button netgis-clip-text netgis-color-e netgis-hover-a";d.innerHTML=a;d.setAttribute("type","button");d.setAttribute("title",d.innerText);d.setAttribute("data-result",b);d.addEventListener("click",this.onResultClick.bind(this));c.appendChild(d);0===this.results.childNodes.length&&this.showClearButton(!0);this.results.appendChild(c);this.maximize();return c};
+netgis.Search.prototype.clearResults=function(){this.results.innerHTML="";this.minimize();netgis.util.invoke(this.container,netgis.Events.SEARCH_CLEAR,null)};netgis.Search.prototype.clearAll=function(){this.clearResults();this.lastQuery=null;this.input.value="";this.showClearButton(!1)};netgis.Search.prototype.requestSearch=function(a){this.lastQuery&&this.lastQuery===a||(this.lastQuery=a,netgis.util.invoke(this.container,netgis.Events.SEARCH_CHANGE,{query:a}))};
+netgis.Search.prototype.showClearButton=function(a){!1===a?(this.button.classList.remove("netgis-hide"),this.closer.classList.add("netgis-hide")):(this.button.classList.add("netgis-hide"),this.closer.classList.remove("netgis-hide"))};netgis.Search.prototype.onInputKeyDown=function(a){if(13===a.keyCode)return a.preventDefault(),!1};
+netgis.Search.prototype.onInputKeyUp=function(a){switch(a.keyCode){case 13:if(this.autocomplete)a=this.results.getElementsByTagName("button"),0";b.appendChild(this.nameLoader);
+this.nameList=document.createElement("ul");a.appendChild(this.nameList);b=this.createInput("Gemarkungsnummer:");this.districtInput=b.children[0];a.appendChild(b);b=this.createInput("Flurnummer:");this.fieldInput=b.children[0];this.fieldInput.addEventListener("keyup",this.onInputFieldKey.bind(this));a.appendChild(b);b=this.createInput("Flurst\u00fccksnummer (Z\u00e4hler/Nenner):");this.parcelInputA=b.children[1];this.parcelInputA.style.width="48%";this.parcelInputB=this.parcelInputA.cloneNode(!0);
+this.parcelInputB.style.marginLeft="4%";b.appendChild(this.parcelInputB);a.appendChild(b);b=document.createElement("button");b.setAttribute("type","button");b.addEventListener("click",this.onParcelSearchClick.bind(this));b.className="netgis-color-a netgis-hover-c";b.innerHTML="Flurst\u00fccke suchen";b.style.marginTop="4mm";a.appendChild(b);b=document.createElement("section");b.className="netgis-hide";this.bottom=b;this.container.appendChild(b);var c=document.createElement("button");c.className="netgis-button netgis-clip-text netgis-color-c netgis-gradient-a";
+c.innerHTML="Flurst\u00fccke ";c.setAttribute("type","button");c.addEventListener("click",this.onBottomHeaderClick.bind(this));b.appendChild(c);this.parcelCount=c.getElementsByTagName("span")[1];this.parcelInfo=document.createElement("p");this.parcelTable=this.createTable(["Flur","Z\u00e4hler","Nenner","FKZ","Fl\u00e4che (qm)"]);this.parcelTable.classList.add("netgis-hide");this.parcelTable.style.position="absolute";this.parcelTable.style.width=
+"100%";this.parcelTable.style.top="12mm";this.parcelTable.style.bottom="0mm";this.parcelTable.style.margin="0mm";this.parcelTable.style.overflow="auto";b.appendChild(this.parcelTable);this.parcelList=this.parcelTable.getElementsByTagName("tbody")[0];this.parcelReset=document.createElement("button");this.parcelReset.setAttribute("type","button");this.parcelReset.addEventListener("click",this.onResetClick.bind(this));this.parcelReset.className="netgis-color-a netgis-hover-c";this.parcelReset.innerHTML=
+"Zur\u00fccksetzen";this.parcelReset.style.marginTop="4mm";a.appendChild(this.parcelReset)};netgis.SearchParcel.prototype.initEvents=function(){this.resizeObserver=(new ResizeObserver(this.onTopResize.bind(this))).observe(this.top)};
+netgis.SearchParcel.prototype.initConfig=function(a){this.districtsLayer=a.searchparcel.districts_service;this.districtsLayer.id=this.districtsLayerID;this.districtsLayer.style=a.styles.parcel;this.districtsLayer.order=99999;a.layers.push(this.districtsLayer);this.fieldsLayer={id:this.fieldsLayerID,type:netgis.LayerTypes.GEOJSON,style:a.styles.parcel,order:99999,data:null};a.layers.push(this.fieldsLayer);this.parcelsLayer={id:this.parcelsLayerID,type:netgis.LayerTypes.WKT,style:a.styles.parcel,order:99999,
+data:null};a.layers.push(this.parcelsLayer);if(!0===a.searchparcel.open){var b=this;window.setTimeout(function(){b.panel.show()},100)}};
+netgis.SearchParcel.prototype.attachTo=function(a){this.panel.attachTo(a);this.popup.attachTo(a);a.addEventListener(netgis.Events.CLIENT_SET_MODE,this.onClientSetMode.bind(this));a.addEventListener(netgis.Events.SEARCHPARCEL_TOGGLE,this.onSearchParcelToggle.bind(this));a.addEventListener(netgis.Events.MAP_FEATURE_ENTER,this.onMapFeatureEnter.bind(this));a.addEventListener(netgis.Events.MAP_FEATURE_CLICK,this.onMapFeatureClick.bind(this));a.addEventListener(netgis.Events.MAP_FEATURE_LEAVE,this.onMapFeatureLeave.bind(this));
+a.addEventListener(netgis.Events.MAP_COPY_FEATURE_TO_EDIT,this.onMapCopyFeatureToEdit.bind(this))};netgis.SearchParcel.prototype.createInput=function(a){var b=document.createElement("label");b.className="netgis-hover-text-primary";b.innerHTML=a;a=document.createElement("input");a.setAttribute("type","text");b.appendChild(a);return b};
+netgis.SearchParcel.prototype.createNameItem=function(a){var b=document.createElement("li"),c=document.createElement("button");c.setAttribute("type","button");c.addEventListener("click",this.onNameItemClick.bind(this));c.className="netgis-color-e netgis-hover-a netgis-text-a netgis-hover-text-e";c.innerHTML=a;b.appendChild(c);return b};
+netgis.SearchParcel.prototype.createTable=function(a){var b=document.createElement("div");b.className="netgis-table-wrapper";var c=document.createElement("table");b.appendChild(c);var d=document.createElement("thead");c.appendChild(d);var e=document.createElement("tr");e.className="netgis-color-d netgis-shadow";d.appendChild(e);d=document.createElement("th");e.appendChild(d);var f=document.createElement("input");f.setAttribute("type","checkbox");f.addEventListener("change",this.onTableFilterChange.bind(this));
+f.setAttribute("title","Nur markierte Parzellen anzeigen");d.appendChild(f);this.tableFilter=f;for(f=0;f";f.appendChild(g);f=document.createElement("td");f.innerHTML=a;h.appendChild(f);a=document.createElement("td");a.innerHTML=b;h.appendChild(a);b=document.createElement("td");
+b.innerHTML=c;h.appendChild(b);c=document.createElement("td");c.innerHTML=netgis.util.trim(d,"_");h.appendChild(c);d=document.createElement("td");d.innerHTML=e;h.appendChild(d);return h};
+netgis.SearchParcel.prototype.reset=function(){this.hideBottom();this.nameLoader.classList.add("netgis-hide");this.nameInput.value="";this.districtInput.value="";this.fieldInput.value="";this.parcelInputA.value="";this.parcelInputB.value="";this.nameList.innerHTML="";this.parcelInfo.innerHTML="";this.parcelList.innerHTML="";this.parcelTable.classList.add("netgis-hide");this.tableFilter.checked=!1;this.parcelList.classList.remove("netgis-filter-active");this.selected={};this.parcelReset.classList.add("netgis-hide");
+this.parcelCount.innerHTML="";var a=this;window.setTimeout(function(){a.top.scrollTop=0;a.parcelTable.scrollTop=0},10);netgis.util.invoke(this.container,netgis.Events.SEARCHPARCEL_RESET,null);this.panel.visible()&&this.showDistricts(!0);this.showFields(!1);this.showParcels(!1)};
+netgis.SearchParcel.prototype.showDistricts=function(a){a?(netgis.util.invoke(this.container,netgis.Events.MAP_LAYER_TOGGLE,{id:this.districtsLayerID,on:!0}),netgis.util.invoke(this.container,netgis.Events.MAP_ZOOM_LEVEL,{z:this.config.searchparcel.districts_service.min_zoom})):netgis.util.invoke(this.container,netgis.Events.MAP_LAYER_TOGGLE,{id:this.districtsLayerID,on:!1})};
+netgis.SearchParcel.prototype.showFields=function(a,b){a?(b.crs={type:"name",properties:{name:"urn:ogc:def:crs:EPSG::25832"}},this.fieldsLayer.data=b,netgis.util.invoke(this.container,netgis.Events.MAP_LAYER_TOGGLE,{id:this.fieldsLayerID,on:!0}),netgis.util.invoke(this.container,netgis.Events.MAP_ZOOM_LAYER,{id:this.fieldsLayerID})):(netgis.util.invoke(this.container,netgis.Events.MAP_LAYER_TOGGLE,{id:this.fieldsLayerID,on:!1}),this.fieldsLayer.data=null)};
+netgis.SearchParcel.prototype.showParcels=function(a,b){if(a){a=[];for(var c=0;c"+(b.filter_property+"");netgis.util.request(c+(""+a+""),this.onFieldsResponse.bind(this))};
+netgis.SearchParcel.prototype.onFieldsResponse=function(a){a=JSON.parse(a);this.showDistricts(!1);this.showFields(!0,a);this.showParcels(!1)};netgis.SearchParcel.prototype.selectFirstName=function(){var a=this.nameList.getElementsByTagName("button");0");c+="| Z\u00e4hler: | "+b.properties.fsn_zae+" | ";c+="
|---|
| Nenner: | "+b.properties.fsn_nen+" | ";c+="
|---|
| Fl\u00e4che: | "+b.properties.flaeche+" qm | ";this.popup.setContent(c+"");b=this.popup.content.getElementsByTagName("button")[1];b.setAttribute("data-id",a);b.addEventListener("click",
+this.onParcelPopupButtonClick.bind(this));this.popup.show()}}};netgis.SearchParcel.prototype.onParcelPopupButtonClick=function(a){a=a.currentTarget.getAttribute("data-id");netgis.util.invoke(this.container,netgis.Events.MAP_COPY_FEATURE_TO_EDIT,{source:this.parcelsLayerID,id:a});this.popup.hide()};
+netgis.SearchParcel.prototype.onMapFeatureLeave=function(a){var b=a.target;switch(a.detail.layer){case this.districtsLayerID:case this.fieldsLayerID:b.setAttribute("title","");break;case this.parcelsLayerID:b.setAttribute("title","")}};netgis.SearchParcel.prototype.onMapCopyFeatureToEdit=function(a){a=a.detail;var b=a.id;a.source===this.parcelsLayerID&&(this.selected[b]||(this.selected[b]=!0),this.updateTableRows())};
+netgis.SearchParcel.prototype.onTableFilterChange=function(a){this.parcelList.classList.toggle("netgis-filter-active",a.currentTarget.checked)};netgis=netgis||{};netgis.SearchPlace=function(a){this.config=a;this.initElements();this.initEvents();this.initConfig(a)};netgis.SearchPlace.Config={title:"Search...",url:"",zoom:17,marker_color:"darkgray",marker_title:"Search-Result"};
+netgis.SearchPlace.prototype.initElements=function(){this.search=new netgis.Search("");this.container=this.search.container;this.container.classList.add("netgis-search-place","netgis-responsive");this.search.container.addEventListener(netgis.Events.SEARCH_CHANGE,this.onSearchChange.bind(this));this.search.container.addEventListener(netgis.Events.SEARCH_SELECT,this.onSearchSelect.bind(this));this.search.container.addEventListener(netgis.Events.SEARCH_CLEAR,this.onSearchClear.bind(this))};
+netgis.SearchPlace.prototype.initEvents=function(){};netgis.SearchPlace.prototype.initConfig=function(a){(a=a.searchplace)&&a.title&&this.search.setTitle(a.title)};netgis.SearchPlace.prototype.attachTo=function(a){this.search.attachTo(a);a.addEventListener(netgis.Events.SEARCHPLACE_TOGGLE,this.onSearchPlaceToggle.bind(this))};
+netgis.SearchPlace.prototype.onSearchPlaceToggle=function(a){(a=a.detail)&&a.on?this.search.show():this.search.toggle();if(this.search.isVisible()){var b=this.search;window.setTimeout(function(){b.focus()},200)}};netgis.SearchPlace.prototype.onSearchChange=function(a){var b=this.config.searchplace;b&&b.url&&(b=b.url,b=netgis.util.replace(b,"{query}",window.encodeURIComponent(a.detail.query)),b=netgis.util.replace(b,"{epsg}",4326),netgis.util.request(b,this.onSearchResponse.bind(this)))};
+netgis.SearchPlace.prototype.onSearchResponse=function(a){a=JSON.parse(a);this.search.clearResults();if(a.geonames){a=a.geonames;for(var b=0;bb?this.container.classList.add("netgis-scroll"):this.container.classList.remove("netgis-scroll")};
+netgis.Tabs.prototype.onHeaderButtonClick=function(a){a=a.currentTarget;for(var b=this.header.getElementsByClassName("netgis-button"),c=0,d=0;dTimeSlider";this.header.setAttribute("type","button");this.header.addEventListener("click",this.onHeaderClick.bind(this));this.container.appendChild(this.header);this.wrapper=document.createElement("div");this.wrapper.className="netgis-wrapper";this.wrapper.addEventListener("pointerdown",this.onPointerDown.bind(this));this.container.appendChild(this.wrapper);this.table=document.createElement("table");this.wrapper.appendChild(this.table);
+this.top=document.createElement("tr");this.table.appendChild(this.top);this.bottom=document.createElement("tr")};netgis.TimeSlider.prototype.attachTo=function(a){a.appendChild(this.container);a.addEventListener(netgis.Events.TIMESLIDER_SHOW,this.onTimeSliderShow.bind(this));a.addEventListener(netgis.Events.TIMESLIDER_HIDE,this.onTimeSliderHide.bind(this))};
+netgis.TimeSlider.prototype.setVisible=function(a){a?(this.container.classList.remove("netgis-hide"),this.container.parentNode.classList.add("netgis-footer")):(this.container.classList.add("netgis-hide"),this.container.parentNode.classList.remove("netgis-footer"))};netgis.TimeSlider.prototype.setTitle=function(a){this.header.getElementsByTagName("span")[0].innerHTML=a};netgis.TimeSlider.prototype.clearTimeSteps=function(){this.top.innerHTML=""};
+netgis.TimeSlider.prototype.addTimeStep=function(a,b){var c=document.createElement("td");c.setAttribute("data-id",a);a=document.createElement("button");a.className="netgis-button netgis-color-e netgis-hover-d";a.innerHTML=""+b+"";a.setAttribute("type","button");a.addEventListener("click",this.onTimeStepClick.bind(this));c.appendChild(a);this.top.appendChild(c)};
+netgis.TimeSlider.prototype.addTimeStep_01=function(a,b){a=document.createElement("td");var c=document.createElement("td");this.insertTop?a.innerHTML=b:c.innerHTML=b;this.top.appendChild(a);this.bottom.appendChild(c);this.insertTop=!this.insertTop};
+netgis.TimeSlider.prototype.setActiveTimeStep=function(a){for(var b=this.top.getElementsByTagName("td"),c=b[a],d=c.getAttribute("data-id"),e=0;ea.length||(-1===a.indexOf("GetCapabilities")&&(a+="&REQUEST=GetCapabilities"),netgis.util.request(a,this.onServiceResponseWMST.bind(this),{id:b}))};
+netgis.TimeSlider.prototype.onServiceResponseWMST=function(a,b){for(var c=(new DOMParser).parseFromString(a,"text/xml").documentElement.getElementsByTagName("Layer"),d,e=0;eAkzeptieren"}]}}};
+netgis.Toolbox.prototype.initElements=function(a){this.panel=new netgis.Panel("Toolbox");this.panel.content.classList.add("netgis-toolbox");this.top=document.createElement("section");this.panel.content.appendChild(this.top);for(var b=a.toolbox.items,c=0;cEinstellungen";b.setAttribute("type","button");b.addEventListener("click",this.onBottomHeaderClick.bind(this));this.bottom.appendChild(b);
+this.bottomTitle=b.getElementsByTagName("span")[0];a.toolbox&&!0===a.toolbox.open&&this.panel.show()};
+netgis.Toolbox.prototype.initOptions=function(a){var b=a.toolbox.options;if(b)for(var c in b);a=a.tools;b=[];a&&(a.buffer||(a.buffer={}),this.bottomPanels.drawPoints=document.createElement("div"),b.push(this.addCheckbox(this.bottomPanels.drawPoints,"Einrasten",this.onDrawSnapToggle.bind(this))),this.addCheckbox(this.bottomPanels.drawPoints,"Puffern",this.onDrawBufferToggle.bind(this)),this.addInputNumber(this.bottomPanels.drawPoints,"Radius (Meter):",a.buffer.default_radius,this.onDrawBufferChange.bind(this)),
+this.addInputNumber(this.bottomPanels.drawPoints,"Segmente:",a.buffer.default_segments,this.onDrawBufferChange.bind(this)),this.bottom.appendChild(this.bottomPanels.drawPoints),this.bottomPanels.drawLines=document.createElement("div"),b.push(this.addCheckbox(this.bottomPanels.drawLines,"Einrasten",this.onDrawSnapToggle.bind(this))),this.addCheckbox(this.bottomPanels.drawLines,"Puffern",this.onDrawBufferToggle.bind(this)),this.addInputNumber(this.bottomPanels.drawLines,"Radius (Meter):",a.buffer.default_radius,
+this.onDrawBufferChange.bind(this)),this.addInputNumber(this.bottomPanels.drawLines,"Segmente:",a.buffer.default_segments,this.onDrawBufferChange.bind(this)),this.bottom.appendChild(this.bottomPanels.drawLines),this.showDrawBufferOptions(!1),this.bottomPanels.drawPolygons=document.createElement("div"),b.push(this.addCheckbox(this.bottomPanels.drawPolygons,"Einrasten",this.onDrawSnapToggle.bind(this))),this.bottom.appendChild(this.bottomPanels.drawPolygons),this.bottomPanels.bufferFeatures=document.createElement("div"),
+this.addInputNumber(this.bottomPanels.bufferFeatures,"Radius (Meter):",a.buffer.default_radius,this.onBufferFeaturesChange.bind(this)),this.addInputNumber(this.bottomPanels.bufferFeatures,"Segmente:",a.buffer.default_segments,this.onBufferFeaturesChange.bind(this)),this.addCheckbox(this.bottomPanels.bufferFeatures,"Mehrfach-Auswahl",this.onSelectMultipleChange.bind(this)),this.addButton(this.bottomPanels.bufferFeatures,null,"Akzeptieren",
+this.onBufferFeaturesAccept.bind(this)),this.bottom.appendChild(this.bottomPanels.bufferFeatures),this.bottomPanels.cutFeatures=document.createElement("div"),this.addCheckbox(this.bottomPanels.cutFeatures,"Mehrfach-Auswahl",this.onSelectMultipleChange.bind(this)),this.bottom.appendChild(this.bottomPanels.cutFeatures),this.bottomPanels.modifyFeatures=document.createElement("div"),b.push(this.addCheckbox(this.bottomPanels.modifyFeatures,"Einrasten",this.onDrawSnapToggle.bind(this))),this.bottom.appendChild(this.bottomPanels.modifyFeatures));
+if(a&&a.snapping){if(!1===a.snapping.show)for(c=0;c"+c+"";b.appendChild(h);!0===
+this.draggable&&(netgis.util.isDefined(f)&&!0!==f||this.setItemDraggable(h));c=document.createElement("label");h.appendChild(c);f=document.createElement("input");f.setAttribute("type","checkbox");f.onchange=this.onFolderChange.bind(this);c.appendChild(f);!0===e&&g.classList.add("netgis-nocheck");e=document.createElement("ul");b.appendChild(e);a=a?a.getElementsByTagName("ul")[0]:this.container;d?a.insertBefore(g,a.firstChild):a.appendChild(g);return g};
+netgis.Tree.prototype.addCheckbox=function(a,b,c,d,e,f){var g=document.createElement("li");g.className="netgis-item";!0===this.draggable&&this.setItemDraggable(g);var h=document.createElement("label");h.className="netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d";h.innerHTML=""+c+"";g.appendChild(h);c=document.createElement("span");c.className="netgis-wrapper";h.insertBefore(c,h.firstChild);h=document.createElement("input");h.setAttribute("type","checkbox");
+h.setAttribute("data-id",b);d&&(h.checked=d);h.onchange=this.onItemChange.bind(this);c.appendChild(h);f&&this.addItemDetails(g,b,f);a=a?a.getElementsByTagName("ul")[0]:this.container;e?a.insertBefore(g,a.firstChild):a.appendChild(g);return g};
+netgis.Tree.prototype.addRadioButton=function(a,b,c,d,e){var f=document.createElement("li");f.className="netgis-item";var g=document.createElement("label");g.className="netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d";g.innerHTML=""+c+"";f.appendChild(g);c=document.createElement("span");c.className="netgis-wrapper";g.insertBefore(c,g.firstChild);g=a?"radio-"+a.getAttribute("data-id"):"radio-noname";var h=document.createElement("input");h.setAttribute("type",
+"radio");h.setAttribute("name",g);h.setAttribute("value","radio-"+b);h.setAttribute("data-id",b);d&&(h.checked=d);h.onchange=this.onItemChange.bind(this);c.appendChild(h);e&&this.addItemDetails(f,b,e);a?a.getElementsByTagName("ul")[0].appendChild(f):this.container.appendChild(f);return f};
+netgis.Tree.prototype.addButton=function(a,b,c,d){var e=document.createElement("li"),f=document.createElement("button");f.innerHTML=c;f.className="netgis-button netgis-color-e netgis-hover-d netgis-clip-text";f.setAttribute("type","button");e.appendChild(f);b&&f.setAttribute("data-id",b);d&&(f.onclick=d);f.addEventListener("click",this.onButtonClick.bind(this));a?a.getElementsByTagName("ul")[0].appendChild(e):this.container.appendChild(e);return e};
+netgis.Tree.prototype.addSpace=function(a){var b=document.createElement("li");b.className="netgis-space";a?a.getElementsByTagName("ul")[0].appendChild(b):this.container.appendChild(b);return b};
+netgis.Tree.prototype.addItemDetails=function(a,b,c){var d=document.createElement("details");d.className="netgis-noselect";var e=document.createElement("summary");e.className="netgis-clickable netgis-hover-d";e.innerHTML="";d.appendChild(e);e=document.createElement("div");d.appendChild(e);for(var f=0;fa.getBoundingClientRect().width:600>document.body.getBoundingClientRect().width},clone:function(a){return JSON.parse(JSON.stringify(a))},stringToID:function(a,b){b||(b="-");a=a.trim();a=a.toLowerCase();a=this.replace(a," ",b);a=this.replace(a,"\n",b);a=this.replace(a,"\t",b);a=this.replace(a,"\\.",b);a=this.replace(a,"\\,",b);a=this.replace(a,"\\!",b);a=this.replace(a,"\\?",b);a=
+this.replace(a,":",b);a=this.replace(a,";",b);a=this.replace(a,'"',b);a=this.replace(a,"'",b);a=this.replace(a,"\\\u00a7",b);a=this.replace(a,"\\$",b);a=this.replace(a,"\\%",b);a=this.replace(a,"\\&",b);a=this.replace(a,"\\/",b);a=this.replace(a,"\\\\",b);a=this.replace(a,"\\(",b);a=this.replace(a,"\\)",b);a=this.replace(a,"\\{",b);a=this.replace(a,"\\}",b);a=this.replace(a,"\\[",b);a=this.replace(a,"\\]",b);a=this.replace(a,"=",b);a=this.replace(a,"\\+",b);a=this.replace(a,"\\*",b);a=this.replace(a,
+"\\~",b);a=this.replace(a,"\\^",b);a=this.replace(a,"\\\u00b0",b);a=this.replace(a,"\u00b2",b);a=this.replace(a,"\u00b3",b);a=this.replace(a,"\\#",b);a=this.replace(a,"\\<",b);a=this.replace(a,"\\>",b);a=this.replace(a,"\\|",b);a=this.replace(a,"\\@",b);a=this.replace(a,"\u20ac",b);a=this.replace(a,"\u00b5",b);a=this.trim(a,b);a=this.replace(a,"\u00e4","ae");a=this.replace(a,"\u00f6","oe");a=this.replace(a,"\u00fc","ue");a=this.replace(a,"\u00df","ss");a=this.replace(a,"\u00e1","a");a=this.replace(a,
+"\u00e0","a");a=this.replace(a,"\u00e2","a");a=this.replace(a,"\u00e9","e");a=this.replace(a,"\u00e8","e");a=this.replace(a,"\u00ea","e");a=this.replace(a,"\u00ed","i");a=this.replace(a,"\u00ec","i");a=this.replace(a,"\u00ee","i");a=this.replace(a,"\u00f3","o");a=this.replace(a,"\u00f2","o");a=this.replace(a,"\u00f4","o");a=this.replace(a,"\u00fa","u");a=this.replace(a,"\u00f9","u");return a=this.replace(a,"\u00fb","u")},replace:function(a,b,e){return a.replace(new RegExp(b,"g"),e)},trim:function(a,
+b){a=a.replace(new RegExp("^"+b+"+"),"");return a=a.replace(new RegExp(b+"+$"),"")},foreach:a,template:function(b,d){a(d,function(a,c){b=b.replace(new RegExp("{"+a+"}","g"),c)});return b},newlines:function(a){return a.replace(/\n/g,"
")},create:function(a){var b=document.createElement("tbody");b.innerHTML=a;return b.children[0]},insideElement:function(a,b,e){a=a.getBoundingClientRect();return ba.right||e>a.bottom?!1:!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,b,e,f){f=new XMLHttpRequest;e&&(f._requestData=e);f.onload=function(){b(this.responseText,this._requestData,this)};f.withCredentials=!1;f.open("GET",a,!0);f.send();return f},downloadJSON:function(a,b){a="data:text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(a));var c=document.createElement("a");c.setAttribute("href",a);c.setAttribute("download",b);document.body.appendChild(c);c.click();c.remove()},padstr:function(a,
+b){for(a=a.toString();a.lengthc&&(c="0"+c);10>f&&(f="0"+f);10>g&&(g="0"+g);10>h&&(h="0"+h);10>b&&(b="0"+b);a=[a,c,f,"_",g,h,b].join("")}else a=b.getDate()+"."+(b.getMonth()+1)+"."+b.getFullYear(),a+=" "+b.getHours()+":"+b.getMinutes();return a},getUserLanguage:b,getFileExtension:function(a){a=
+a.split(".");return 1>=a.length?"":a[a.length-1]},parseURL:function(a){var b=a.indexOf("?"),c=-1(e||1E5))?d?Math.round(a/1E6*1E3)/1E3:Math.round(a/1E6):d?Math.round(100*a)/100:Math.round(a);0===a&&(e=!1);a=a.toLocaleString(b());return a+(e?" km\u00b2":" m\u00b2")},hexToRGB:function(a){"#"===a.charAt(0)&&(a=a.substr(1));a=Number.parseInt(a,16);return[a>>16&255,a>>8&255,a&255]},invoke:function(a,b,e){a.dispatchEvent(new CustomEvent(b,{bubbles:!0,detail:e}))},handler:function(a,b){return function(c){b||(b=c);netgis.util.invoke(this,
+a,b)}}}}();netgis=netgis||{};netgis.Window=function(a){this.resizing=this.dragging=!1;this.py=this.px=0;this.initElements(a);this.initEvents();var b=this;window.setTimeout(function(){var a=b.container.getBoundingClientRect();b.container.style.right="auto";b.container.style.bottom="auto";b.container.style.left=a.left+"px";b.container.style.top=a.top+"px"},100)};
+netgis.Window.prototype.initElements=function(a){this.container=document.createElement("section");this.container.className="netgis-window netgis-shadow";this.header=document.createElement("button");this.header.setAttribute("type","button");this.header.className="netgis-mover netgis-button netgis-clip-text netgis-color-c netgis-gradient-a netgis-shadow";this.header.innerHTML=a;this.container.appendChild(this.header);this.closer=document.createElement("button");this.closer.className="netgis-closer netgis-button netgis-text-e";
+this.closer.innerHTML='';this.closer.setAttribute("type","button");this.container.appendChild(this.closer);this.content=document.createElement("div");this.content.className="netgis-content";this.container.appendChild(this.content)};
+netgis.Window.prototype.initEvents=function(){this.closer.addEventListener("click",this.onCloserClick.bind(this));this.header.addEventListener("pointerdown",this.onPointerDown.bind(this));document.addEventListener("pointermove",this.onDocPointerMove.bind(this));document.addEventListener("pointerup",this.onDocPointerUp.bind(this));this.observer=new ResizeObserver(this.onResizeObserve.bind(this));this.observer.observe(this.container,{attributes:!0})};netgis.Window.prototype.attachTo=function(a){a.appendChild(this.container)};
+netgis.Window.prototype.show=function(){this.container.classList.remove("netgis-hide")};netgis.Window.prototype.hide=function(){this.container.classList.add("netgis-hide")};netgis.Window.prototype.toggle=function(){this.container.classList.toggle("netgis-hide")};netgis.Window.prototype.isVisible=function(){return!this.container.classList.contains("netgis-hide")};netgis.Window.prototype.onCloserClick=function(a){this.hide()};
+netgis.Window.prototype.onPointerDown=function(a){var b=this.container.getBoundingClientRect();this.dragging=!0;this.px=a.clientX-b.left;this.py=a.clientY-b.top;this.container.classList.add("netgis-dragging")};
+netgis.Window.prototype.onDocPointerMove=function(a){var b=a.clientX,c=a.clientY,d=this.container.getBoundingClientRect();if(!this.resizing&&this.dragging){b-=this.px;c-=this.py;var e=this.container.parentNode.getBoundingClientRect();0>b&&(b=0,this.px=a.clientX-d.left);40>c&&(c=40,this.py=a.clientY-d.top);b+d.width>e.right&&(b=e.width-d.width,this.px=a.clientX-d.left);c+d.height>e.bottom&&(c=e.height-d.height,this.py=a.clientY-d.top);this.container.style.left=b+"px";this.container.style.top=c+"px";
+this.container.style.right="auto";this.container.style.bottom="auto"}};netgis.Window.prototype.onDocPointerUp=function(a){this.resizing=this.dragging=!1;this.container.classList.remove("netgis-dragging")};netgis.Window.prototype.onResizeObserve=function(a){this.dragging&&(this.dragging=!1,this.resizing=!0);a=this.container.getBoundingClientRect();netgis.util.invoke(this.container,netgis.Events.WINDOW_RESIZE,{x:a.x,y:a.y,w:a.width,h:a.height})};netgis=netgis||{};netgis.WMC=function(a){this.config=a};netgis.WMC.Config={url:"",layers_url:""};netgis.WMC.prototype.requestContext=function(a,b){this.callback=b;netgis.util.request(a,this.onContextResponse.bind(this))};netgis.WMC.prototype.onContextResponse=function(a){var b=JSON.parse(a);this.data=b;a=[];b=b.layerList;for(var c=0;cc?1:0});for(var l=k.length-1;0<=l;l--){var m=k[l],n=m.id,
+q=null;if(b)for(var p=0;p
|---|