qwc2 2025.8.14 → 2025.8.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/actions/localConfig.js +1 -1
  2. package/components/MessageBar.js +7 -0
  3. package/components/PluginsContainer.js +3 -2
  4. package/components/SideBar.js +3 -3
  5. package/components/StandardApp.js +2 -2
  6. package/components/TaskBar.js +2 -2
  7. package/components/map/OlMap.js +2 -2
  8. package/components/map3d/ImportObjects3D.js +1 -1
  9. package/components/map3d/Map3D.js +6 -6
  10. package/components/map3d/MapControls3D.js +2 -2
  11. package/components/map3d/SearchField3D.js +3 -3
  12. package/components/map3d/drawtool/NumericInput3D.js +3 -3
  13. package/components/map3d/layers/VectorLayer3D.js +1 -1
  14. package/components/map3d/style/MapControls3D.css +9 -16
  15. package/components/map3d/utils/MiscUtils3D.js +7 -2
  16. package/components/map3d/utils/OrbitControls3D.js +1 -4
  17. package/components/map3d/utils/Tiles3DStyle.js +4 -4
  18. package/components/style/AppMenu.css +2 -3
  19. package/components/style/IdentifyViewer.css +0 -6
  20. package/components/style/{TaskBar.css → MessageBar.css} +4 -4
  21. package/components/style/PluginsContainer.css +1 -1
  22. package/components/style/SearchBox.css +1 -2
  23. package/components/style/SideBar.css +11 -9
  24. package/components/style/WindowManager.css +0 -5
  25. package/icons/above_terr.svg +81 -0
  26. package/icons/above_zero.svg +80 -0
  27. package/package.json +1 -1
  28. package/plugins/API.js +1 -1
  29. package/plugins/AttributeTable.js +3 -3
  30. package/plugins/LayerTree.js +2 -2
  31. package/plugins/Map.js +4 -3
  32. package/plugins/MapCompare.js +1 -1
  33. package/plugins/MapCopyright.js +1 -1
  34. package/plugins/TourGuide.js +3 -1
  35. package/plugins/View3D.js +26 -20
  36. package/plugins/map/LocateSupport.js +3 -5
  37. package/plugins/map/style/LocateSupport.css +33 -0
  38. package/plugins/map3d/BackgroundSwitcher3D.js +1 -1
  39. package/plugins/map3d/BottomBar3D.js +3 -1
  40. package/plugins/map3d/Compare3D.js +4 -2
  41. package/plugins/map3d/Draw3D.js +4 -2
  42. package/plugins/map3d/ExportObjects3D.js +13 -12
  43. package/plugins/map3d/HideObjects3D.js +12 -8
  44. package/plugins/map3d/Identify3D.js +12 -7
  45. package/plugins/map3d/LayerTree3D.js +3 -1
  46. package/plugins/map3d/MapCopyright3D.js +11 -0
  47. package/plugins/map3d/MapExport3D.js +4 -2
  48. package/plugins/map3d/MapLight3D.js +11 -0
  49. package/plugins/map3d/Measure3D.js +4 -2
  50. package/plugins/map3d/OverviewMap3D.js +2 -2
  51. package/plugins/map3d/Settings3D.js +3 -1
  52. package/plugins/map3d/TopBar3D.js +9 -1
  53. package/plugins/style/Bookmark.css +1 -3
  54. package/plugins/style/Editing.css +1 -3
  55. package/plugins/style/FeatureSearch.css +1 -8
  56. package/plugins/style/LayerTree.css +3 -11
  57. package/plugins/style/MapCopyright.css +3 -3
  58. package/plugins/style/Portal.css +1 -1
  59. package/plugins/style/View3D.css +0 -4
  60. package/reducers/localConfig.js +1 -1
  61. package/scripts/gen-plugin-docs.js +2 -2
  62. package/selectors/searchproviders.js +3 -7
  63. package/static/translations/bg-BG.json +2 -0
  64. package/static/translations/ca-ES.json +2 -0
  65. package/static/translations/cs-CZ.json +2 -0
  66. package/static/translations/de-CH.json +3 -1
  67. package/static/translations/de-DE.json +3 -1
  68. package/static/translations/en-US.json +3 -1
  69. package/static/translations/es-ES.json +2 -0
  70. package/static/translations/fi-FI.json +2 -0
  71. package/static/translations/fr-FR.json +3 -1
  72. package/static/translations/hu-HU.json +2 -0
  73. package/static/translations/it-IT.json +3 -1
  74. package/static/translations/ja-JP.json +2 -0
  75. package/static/translations/nl-NL.json +2 -0
  76. package/static/translations/no-NO.json +2 -0
  77. package/static/translations/pl-PL.json +2 -0
  78. package/static/translations/pt-BR.json +2 -0
  79. package/static/translations/pt-PT.json +2 -0
  80. package/static/translations/ro-RO.json +2 -0
  81. package/static/translations/ru-RU.json +2 -0
  82. package/static/translations/sv-SE.json +2 -0
  83. package/static/translations/tr-TR.json +2 -0
  84. package/static/translations/tsconfig.json +2 -0
  85. package/static/translations/uk-UA.json +2 -0
  86. package/utils/SearchProviders.js +8 -3
  87. package/components/map/OlLocate.css +0 -56
  88. package/components/map/OlLocate.js +0 -17
  89. package/components/map3d/Map3DLight.js +0 -11
  90. package/plugins/style/AttributeTable.css +0 -6
  91. /package/{components/map3d/style/Map3DLight.css → plugins/map3d/style/MapLight3D.css} +0 -0
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "",
112
112
  "compare_objects": "",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": ""
114
116
  },
115
117
  "cookiepopup": {
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "",
112
112
  "compare_objects": "",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": ""
114
116
  },
115
117
  "cookiepopup": {
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "",
112
112
  "compare_objects": "",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": ""
114
116
  },
115
117
  "cookiepopup": {
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "",
112
112
  "compare_objects": "",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": ""
114
116
  },
115
117
  "cookiepopup": {
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "",
112
112
  "compare_objects": "",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": ""
114
116
  },
115
117
  "cookiepopup": {
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "",
112
112
  "compare_objects": "",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": ""
114
116
  },
115
117
  "cookiepopup": {
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "",
112
112
  "compare_objects": "",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": ""
114
116
  },
115
117
  "cookiepopup": {
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "Kırpma düzlemi",
112
112
  "compare_objects": "Objeleri karşılaştır",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": "Tümünü aç-kapat"
114
116
  },
115
117
  "cookiepopup": {
@@ -126,6 +126,8 @@
126
126
  "bottombar.viewertitle_label",
127
127
  "compare3d.clipplane",
128
128
  "compare3d.compare_objects",
129
+ "compare3d.info_message",
130
+ "compare3d.modify",
129
131
  "compare3d.toggleall",
130
132
  "cookiepopup.accept",
131
133
  "cookiepopup.message",
@@ -110,6 +110,8 @@
110
110
  "compare3d": {
111
111
  "clipplane": "",
112
112
  "compare_objects": "",
113
+ "info_message": "",
114
+ "modify": "",
113
115
  "toggleall": ""
114
116
  },
115
117
  "cookiepopup": {
@@ -1,10 +1,10 @@
1
- function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
1
+ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
2
2
  * Copyright 2016-2021 Sourcepole AG
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
- */import axios from"axios";import yaml from"js-yaml";import polygonIntersectTest from"polygon-intersect-test";import ConfigUtils from"./ConfigUtils";import CoordinatesUtils from"./CoordinatesUtils";import IdentifyUtils from"./IdentifyUtils";import LocaleUtils from"./LocaleUtils";export var SearchResultType={PLACE:0,THEMELAYER:1,THEME:2,EXTERNALLAYER:3};function coordinatesSearch(text,searchParams,callback){var displaycrs=searchParams.displaycrs||"EPSG:4326";var matches=text.replace(/[’']/g,"").match(/^\s*([+-]?\d+\.?\d*)[,\s]\s*([+-]?\d+\.?\d*)\s*$/);var items=[];if(matches&&matches.length>=3){var x=parseFloat(matches[1]);var y=parseFloat(matches[2]);if(displaycrs!=="EPSG:4326"){items.push({id:"coord0",text:x+", "+y+" ("+displaycrs+")",x:x,y:y,crs:displaycrs,bbox:[x,y,x,y]})}if(x>=-180&&x<=180&&y>=-90&&y<=90){var title=Math.abs(x)+(x>=0?"\xB0E":"\xB0W")+", "+Math.abs(y)+(y>=0?"\xB0N":"\xB0S");items.push({id:"coord"+items.length,text:title,x:x,y:y,crs:"EPSG:4326",bbox:[x,y,x,y]})}if(x>=-90&&x<=90&&y>=-180&&y<=180&&x!==y){var _title=Math.abs(y)+(y>=0?"\xB0E":"\xB0W")+", "+Math.abs(x)+(x>=0?"\xB0N":"\xB0S");items.push({id:"coord"+items.length,text:_title,x:y,y:x,crs:"EPSG:4326",bbox:[y,x,y,x]})}}var results=[];if(items.length>0){results.push({id:"coords",titlemsgid:LocaleUtils.trmsg("search.coordinates"),type:SearchResultType.PLACE,items:items})}callback({results:results})}/** ************************************************************************ **/var NominatimSearch=/*#__PURE__*/function(){function NominatimSearch(){_classCallCheck(this,NominatimSearch)}return _createClass(NominatimSearch,null,[{key:"search",value:function search(text,searchParams,callback){var viewboxParams={};if(searchParams.filterBBox){viewboxParams.viewbox=CoordinatesUtils.reprojectBbox(searchParams.filterBBox,searchParams.mapcrs,"EPSG:4326").join(",");viewboxParams.bounded=1}axios.get("https://nominatim.openstreetmap.org/search",{params:_objectSpread(_objectSpread({"q":text,"addressdetails":1,"polygon_geojson":1,"limit":20,"format":"json","accept-language":searchParams.lang},searchParams.cfgParams||{}),viewboxParams)}).then(function(response){var locale=searchParams.lang;if(NominatimSearch.TRANSLATIONS[locale]===undefined){NominatimSearch.TRANSLATIONS[locale]={promise:NominatimSearch.loadLocale(locale)};NominatimSearch.TRANSLATIONS[locale].promise.then(function(){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)})}else if(NominatimSearch.TRANSLATIONS[locale].promise){NominatimSearch.TRANSLATIONS[locale].promise.then(function(){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)})}else if(NominatimSearch.TRANSLATIONS[locale].strings){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)}})}},{key:"parseResults",value:function parseResults(obj,translations,callback){var results=[];var groups={};var groupcounter=0;(obj||[]).map(function(entry){if(!(entry["class"]in groups)){var title=entry.type;try{title=translations[entry["class"]][entry.type]||entry.type}catch(e){/* pass */}groups[entry["class"]]={id:"nominatimgroup"+groupcounter++,// capitalize class
7
+ */import axios from"axios";import yaml from"js-yaml";import polygonIntersectTest from"polygon-intersect-test";import{LayerRole}from"../actions/layers";import ConfigUtils from"./ConfigUtils";import CoordinatesUtils from"./CoordinatesUtils";import IdentifyUtils from"./IdentifyUtils";import LayerUtils from"./LayerUtils";import LocaleUtils from"./LocaleUtils";import VectorLayerUtils from"./VectorLayerUtils";export var SearchResultType={PLACE:0,THEMELAYER:1,THEME:2,EXTERNALLAYER:3};function coordinatesSearch(text,searchParams,callback){var displaycrs=searchParams.displaycrs||"EPSG:4326";var matches=text.replace(/[’']/g,"").match(/^\s*([+-]?\d+\.?\d*)[,\s]\s*([+-]?\d+\.?\d*)\s*$/);var items=[];if(matches&&matches.length>=3){var x=parseFloat(matches[1]);var y=parseFloat(matches[2]);if(displaycrs!=="EPSG:4326"){items.push({id:"coord0",text:x+", "+y+" ("+displaycrs+")",x:x,y:y,crs:displaycrs,bbox:[x,y,x,y]})}if(x>=-180&&x<=180&&y>=-90&&y<=90){var title=Math.abs(x)+(x>=0?"\xB0E":"\xB0W")+", "+Math.abs(y)+(y>=0?"\xB0N":"\xB0S");items.push({id:"coord"+items.length,text:title,x:x,y:y,crs:"EPSG:4326",bbox:[x,y,x,y]})}if(x>=-90&&x<=90&&y>=-180&&y<=180&&x!==y){var _title=Math.abs(y)+(y>=0?"\xB0E":"\xB0W")+", "+Math.abs(x)+(x>=0?"\xB0N":"\xB0S");items.push({id:"coord"+items.length,text:_title,x:y,y:x,crs:"EPSG:4326",bbox:[y,x,y,x]})}}var results=[];if(items.length>0){results.push({id:"coords",titlemsgid:LocaleUtils.trmsg("search.coordinates"),type:SearchResultType.PLACE,items:items})}callback({results:results})}/** ************************************************************************ **/var NominatimSearch=/*#__PURE__*/function(){function NominatimSearch(){_classCallCheck(this,NominatimSearch)}return _createClass(NominatimSearch,null,[{key:"search",value:function search(text,searchParams,callback){var viewboxParams={};if(searchParams.filterBBox){viewboxParams.viewbox=CoordinatesUtils.reprojectBbox(searchParams.filterBBox,searchParams.mapcrs,"EPSG:4326").join(",");viewboxParams.bounded=1}axios.get("https://nominatim.openstreetmap.org/search",{params:_objectSpread(_objectSpread({"q":text,"addressdetails":1,"polygon_geojson":1,"limit":20,"format":"json","accept-language":searchParams.lang},searchParams.cfgParams||{}),viewboxParams)}).then(function(response){var locale=searchParams.lang;if(NominatimSearch.TRANSLATIONS[locale]===undefined){NominatimSearch.TRANSLATIONS[locale]={promise:NominatimSearch.loadLocale(locale)};NominatimSearch.TRANSLATIONS[locale].promise.then(function(){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)})}else if(NominatimSearch.TRANSLATIONS[locale].promise){NominatimSearch.TRANSLATIONS[locale].promise.then(function(){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)})}else if(NominatimSearch.TRANSLATIONS[locale].strings){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)}})}},{key:"parseResults",value:function parseResults(obj,translations,callback){var results=[];var groups={};var groupcounter=0;(obj||[]).map(function(entry){if(!(entry["class"]in groups)){var title=entry.type;try{title=translations[entry["class"]][entry.type]||entry.type}catch(e){/* pass */}groups[entry["class"]]={id:"nominatimgroup"+groupcounter++,// capitalize class
8
8
  title:title,type:SearchResultType.PLACE,items:[]};results.push(groups[entry["class"]])}// shorten display_name
9
9
  var text=entry.display_name.split(", ").slice(0,3).join(", ");// map label
10
10
  var label=text;// collect address fields
@@ -16,4 +16,9 @@ var _formatLayerEntry=function formatLayerEntry(dataproduct){return{type:SearchR
16
16
  results.push({id:"fulltext.places",titlemsgid:LocaleUtils.trmsg("search.places"),resultCount:placeResultCount,type:SearchResultType.PLACE,items:data.results.filter(function(entry){return entry.feature}).map(function(entry){return{id:entry.feature.feature_id,text:entry.feature.display,x:0.5*(entry.feature.bbox[0]+entry.feature.bbox[2]),y:0.5*(entry.feature.bbox[1]+entry.feature.bbox[3]),crs:entry.feature.srid?"EPSG:"+String(entry.feature.srid).replace(/^EPSG:/,""):null,bbox:entry.feature.bbox,thumbnail:iconPath+entry.feature.dataproduct_id+".svg",// fulltext specific info
17
17
  dataproduct_id:entry.feature.dataproduct_id,id_field_name:entry.feature.id_field_name}})});callback({results:results,result_counts:data.result_counts})})["catch"](function(e){// eslint-disable-next-line
18
18
  console.warn("Fulltext search failed: "+e);callback({results:[]})})}},{key:"filterFulltextResults",value:function filterFulltextResults(data,filterPoly,mapCrs){if(!filterPoly){return data}data.results=data.results.filter(function(result){if(!result.feature||!result.feature.bbox){return true}var _CoordinatesUtils$rep=CoordinatesUtils.reprojectBbox(result.feature.bbox,"EPSG:"+result.feature.srid,mapCrs),_CoordinatesUtils$rep2=_slicedToArray(_CoordinatesUtils$rep,4),xmin=_CoordinatesUtils$rep2[0],ymin=_CoordinatesUtils$rep2[1],xmax=_CoordinatesUtils$rep2[2],ymax=_CoordinatesUtils$rep2[3];var intersects=polygonIntersectTest([[xmin,ymin],[xmax,ymin],[xmax,ymax],[xmin,ymax],[xmin,ymin]],filterPoly);if(!intersects){data.result_counts.find(function(entry){return entry.dataproduct_id===result.feature.dataproduct_id}).count-=1}return intersects});return data}},{key:"getResultGeometry",value:function getResultGeometry(resultItem,callback){var dataServiceUrl=ConfigUtils.getConfigProp("searchDataServiceUrl")||ConfigUtils.getConfigProp("dataServiceUrl");if(!dataServiceUrl){callback(null)}// URL example: /api/data/v1/ch.so.afu.fliessgewaesser.netz/?filter=[["gewissnr","=",1179]]
19
- var quot=typeof resultItem.id==="string"?"\"":"";var filter="[[\"".concat(resultItem.id_field_name,"\",\"=\", ").concat(quot).concat(resultItem.id).concat(quot,"]]");axios.get(dataServiceUrl.replace(/\/?$/,"/")+resultItem.dataproduct_id+"/?filter="+filter).then(function(response){var bbox=response.data.bbox;var center=bbox?[0.5*(bbox[0]+bbox[2]),0.5*(bbox[1]+bbox[3])]:null;callback({bbox:bbox,center:center,feature:response.data,crs:response.data.crs.properties.name})})["catch"](function(){callback(null)})}},{key:"getLayerDefinition",value:function getLayerDefinition(resultItem,callback){var dataProductServiceUrl=ConfigUtils.getConfigProp("dataproductServiceUrl");if(!dataProductServiceUrl){/* eslint-disable-next-line */console.warn("Fulltext search: failed to get layer definition, dataproductServiceUrl is not defined");callback(null)}var params={filter:resultItem.id};axios.get(dataProductServiceUrl.replace(/\/?$/,"/")+"weblayers",{params:params}).then(function(response){var _response$data$result;callback((_response$data$result=response.data[resultItem.id])===null||_response$data$result===void 0?void 0:_response$data$result[0])})["catch"](function(){callback(null)})}},{key:"handleHighlightParameters",value:function handleHighlightParameters(hp,hf,st,callback){var searchServiceUrl=ConfigUtils.getConfigProp("searchServiceUrl");var dataServiceUrl=ConfigUtils.getConfigProp("searchDataServiceUrl")||ConfigUtils.getConfigProp("dataServiceUrl");if(!searchServiceUrl||!dataServiceUrl){return}var queryFeature=function queryFeature(filter){axios.get(dataServiceUrl.replace(/\/?$/,"/")+hp+"/?filter="+filter).then(function(response){var bbox=response.data.bbox;var item={x:0.5*[bbox[0]+bbox[2]],y:0.5*[bbox[1]+bbox[3]],label:st,crs:response.data.crs.properties.name,bbox:bbox};callback(item,{feature:response.data,crs:response.data.crs.properties.name})})["catch"](function(){})};if(hp&&hf){queryFeature(hf)}else if(hp&&st){var params={searchtext:st,filter:hp,limit:1};axios.get(searchServiceUrl,{params:params}).then(function(response){if(response.data.results&&response.data.results.length===1){var result=response.data.results[0].feature;var quot=typeof result.feature_id==="string"?"\"":"";var filter="[[\"".concat(result.id_field_name,"\",\"=\", ").concat(quot).concat(result.feature_id).concat(quot,"]]");queryFeature(filter)}})["catch"](function(){})}}}])}();export default{coordinates:{labelmsgid:"search.coordinates",onSearch:coordinatesSearch,handlesGeomFilter:false},nominatim:{label:"OpenStreetMap",onSearch:NominatimSearch.search,handlesGeomFilter:false},qgis:{label:"QGIS",onSearch:QgisSearch.search,getResultGeometry:QgisSearch.getResultGeometry,handlesGeomFilter:false},fulltext:{label:"Fulltext",onSearch:FulltextSearch.search,getResultGeometry:FulltextSearch.getResultGeometry,getLayerDefinition:FulltextSearch.getLayerDefinition,handlesGeomFilter:true}};
19
+ var quot=typeof resultItem.id==="string"?"\"":"";var filter="[[\"".concat(resultItem.id_field_name,"\",\"=\", ").concat(quot).concat(resultItem.id).concat(quot,"]]");axios.get(dataServiceUrl.replace(/\/?$/,"/")+resultItem.dataproduct_id+"/?filter="+filter).then(function(response){var bbox=response.data.bbox;var center=bbox?[0.5*(bbox[0]+bbox[2]),0.5*(bbox[1]+bbox[3])]:null;callback({bbox:bbox,center:center,feature:response.data,crs:response.data.crs.properties.name})})["catch"](function(){callback(null)})}},{key:"getLayerDefinition",value:function getLayerDefinition(resultItem,callback){var dataProductServiceUrl=ConfigUtils.getConfigProp("dataproductServiceUrl");if(!dataProductServiceUrl){/* eslint-disable-next-line */console.warn("Fulltext search: failed to get layer definition, dataproductServiceUrl is not defined");callback(null)}var params={filter:resultItem.id};axios.get(dataProductServiceUrl.replace(/\/?$/,"/")+"weblayers",{params:params}).then(function(response){var _response$data$result;callback((_response$data$result=response.data[resultItem.id])===null||_response$data$result===void 0?void 0:_response$data$result[0])})["catch"](function(){callback(null)})}},{key:"handleHighlightParameters",value:function handleHighlightParameters(hp,hf,st,callback){var searchServiceUrl=ConfigUtils.getConfigProp("searchServiceUrl");var dataServiceUrl=ConfigUtils.getConfigProp("searchDataServiceUrl")||ConfigUtils.getConfigProp("dataServiceUrl");if(!searchServiceUrl||!dataServiceUrl){return}var queryFeature=function queryFeature(filter){axios.get(dataServiceUrl.replace(/\/?$/,"/")+hp+"/?filter="+filter).then(function(response){var bbox=response.data.bbox;var item={x:0.5*[bbox[0]+bbox[2]],y:0.5*[bbox[1]+bbox[3]],label:st,crs:response.data.crs.properties.name,bbox:bbox};callback(item,{feature:response.data,crs:response.data.crs.properties.name})})["catch"](function(){})};if(hp&&hf){queryFeature(hf)}else if(hp&&st){var params={searchtext:st,filter:hp,limit:1};axios.get(searchServiceUrl,{params:params}).then(function(response){if(response.data.results&&response.data.results.length===1){var result=response.data.results[0].feature;var quot=typeof result.feature_id==="string"?"\"":"";var filter="[[\"".concat(result.id_field_name,"\",\"=\", ").concat(quot).concat(result.feature_id).concat(quot,"]]");queryFeature(filter)}})["catch"](function(){})}}}])}();/** ************************************************************************ **/var SearchProviders={coordinates:{labelmsgid:"search.coordinates",onSearch:coordinatesSearch,handlesGeomFilter:false},nominatim:{label:"OpenStreetMap",onSearch:NominatimSearch.search,handlesGeomFilter:false},qgis:{label:"QGIS",onSearch:QgisSearch.search,getResultGeometry:QgisSearch.getResultGeometry,handlesGeomFilter:false},fulltext:{label:"Fulltext",onSearch:FulltextSearch.search,getResultGeometry:FulltextSearch.getResultGeometry,getLayerDefinition:FulltextSearch.getLayerDefinition,handlesGeomFilter:true}};export default SearchProviders;/** ************************************************************************ **/// Uniformize the response of getResultGeometry
20
+ function getResultGeometry(provider,item,callback){provider.getResultGeometry(item,function(response){var features=[];if(response!==null&&response!==void 0&&response.geometry){var highlightFeature=response.geometry.coordinates?{type:"Feature",geometry:response.geometry}:VectorLayerUtils.wktToGeoJSON(response.geometry,response.crs,response.crs);if(highlightFeature){features.push(highlightFeature)}}else if(response!==null&&response!==void 0&&response.feature){if(response.feature.features){features.push.apply(features,_toConsumableArray(response.feature.features))}else{features.push(response.feature)}}if(features.length===0){callback(null)}else{callback(_objectSpread(_objectSpread({feature:{type:"FeatureCollection",features:features},crs:response.crs,hidemarker:response.hidemarker},response.bbox&&{bbox:response.bbox}),response.center&&{center:response.center}))}})}export function collectSearchProviders(theme,layers){var mapScale=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;// Collect active layers/search terms
21
+ var searchTerms=[];var activeLayers=[];var _iterator=_createForOfIteratorHelper(LayerUtils.explodeLayers(layers)),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var entry=_step.value;if(entry.layer.role===LayerRole.THEME&&entry.sublayer.visibility===true&&mapScale!==null&&LayerUtils.layerScaleInRange(entry.sublayer,mapScale)){searchTerms=searchTerms.concat(entry.sublayer.searchterms||[]);activeLayers.push(entry.sublayer.name)}}}catch(err){_iterator.e(err)}finally{_iterator.f()}var searchProviders=_objectSpread(_objectSpread({},SearchProviders),window.QWC2SearchProviders||{});var availableProviders={};var themeLayerNames=layers.map(function(layer){return layer.role===LayerRole.THEME?layer.params.LAYERS:""}).join(",").split(",").filter(function(entry){return entry});var providerKeys=new Set;var _iterator2=_createForOfIteratorHelper((theme===null||theme===void 0?void 0:theme.searchProviders)||[]),_step2;try{var _loop=function _loop(){var _entry;var entry=_step2.value;if(typeof entry==="string"){entry={provider:entry}}// Omit qgis provider with field configuration, this is only supported through the FeatureSearch plugin
22
+ if(entry.provider==="qgis"&&(_entry=entry)!==null&&_entry!==void 0&&(_entry=_entry.params)!==null&&_entry!==void 0&&_entry.fields){return 0;// continue
23
+ }var provider=searchProviders[entry.provider];if(provider){var _entry$key,_entry$label,_entry$labelmsgid;if(provider.requiresLayer&&!themeLayerNames.includes(provider.requiresLayer)){return 0;// continue
24
+ }var key=(_entry$key=entry.key)!==null&&_entry$key!==void 0?_entry$key:entry.provider;if(providerKeys.has(key)){var i=0;for(i=0;providerKeys.has(key+"_"+i);++i);key=key+"_"+i}providerKeys.add(key);availableProviders[key]=_objectSpread(_objectSpread({},provider),{},{label:(_entry$label=entry.label)!==null&&_entry$label!==void 0?_entry$label:provider.label,labelmsgid:(_entry$labelmsgid=entry.labelmsgid)!==null&&_entry$labelmsgid!==void 0?_entry$labelmsgid:provider.labelmsgid,getResultGeometry:provider.getResultGeometry?function(item,callback){return getResultGeometry(provider,item,callback)}:null,cfgParams:entry.params||{},params:{searchTerms:searchTerms,activeLayers:activeLayers,theme:theme}})}},_ret;for(_iterator2.s();!(_step2=_iterator2.n()).done;){_ret=_loop();if(_ret===0)continue}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}return availableProviders}
@@ -1,56 +0,0 @@
1
- .ol-popup {
2
- position: absolute;
3
- text-align: center;
4
- font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
5
- -ms-transform: translate(-50%,-100%); /* IE 9 */
6
- -webkit-transform: translate(-50%,-100%); /* Safari */
7
- transform: translate(-50%,-100%);
8
- }
9
- a.ol-popup-close-btn {
10
- position: absolute;
11
- top: 0;
12
- right: 0;
13
- padding: 4px 4px 0 0;
14
- text-align: center;
15
- width: 18px;
16
- height: 14px;
17
- font: 16px/14px Tahoma, Verdana, sans-serif;
18
- color: #c3c3c3;
19
- text-decoration: none;
20
- font-weight: bold;
21
- background: transparent;
22
- }
23
- .ol-popup-cnt-wrapper {
24
- padding: 1px;
25
- text-align: left;
26
- border-radius: 12px;
27
- }
28
- .ol-popup-cnt-wrapper, .ol-popup-tip {
29
- background: white;
30
- box-shadow: 0 3px 14px rgba(0,0,0,0.4);
31
- }
32
- .ol-popup-cnt {
33
- margin: 13px 19px;
34
- line-height: 1.4;
35
- white-space: nowrap;
36
-
37
- }
38
- .ol-popup-tip-wrapper {
39
- margin: 0 auto;
40
- width: 40px;
41
- height: 20px;
42
- position: relative;
43
- overflow: hidden;
44
-
45
- }
46
- .ol-popup-tip {
47
- width: 17px;
48
- height: 17px;
49
- padding: 1px;
50
- margin: -10px auto 0;
51
- -webkit-transform: rotate(45deg);
52
- -moz-transform: rotate(45deg);
53
- -ms-transform: rotate(45deg);
54
- -o-transform: rotate(45deg);
55
- transform: rotate(45deg);
56
- }
@@ -1,17 +0,0 @@
1
- function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
2
- * Copyright 2015 GeoSolutions Sas
3
- * Copyright 2016-2024 Sourcepole AG
4
- * All rights reserved.
5
- *
6
- * This source code is licensed under the BSD-style license found in the
7
- * LICENSE file in the root directory of this source tree.
8
- */import ol from"openlayers";import CoordinatesUtils from"../../utils/CoordinatesUtils";import LocaleUtils from"../../utils/LocaleUtils";import"./OlLocate.css";var createPopup=function createPopup(){var pop=document.createElement("div");pop.setAttribute("class","ol-popup");var popDismis=document.createElement("a");popDismis.setAttribute("class","ol-popup-close-btn");popDismis.setAttribute("href","#close");popDismis.innerHTML="x";var popCntWrap=document.createElement("div");popCntWrap.setAttribute("class","ol-popup-cnt-wrapper");var popCnt=document.createElement("div");popCnt.setAttribute("class","ol-popup-cnt");popCntWrap.appendChild(popCnt);var popTipWrap=document.createElement("div");popTipWrap.setAttribute("class","ol-popup-tip-wrapper");var popTip=document.createElement("div");popTip.setAttribute("class","ol-popup-tip");popTipWrap.appendChild(popTip);pop.appendChild(popDismis);pop.appendChild(popCntWrap);pop.appendChild(popTipWrap);return pop};var OlLocate=/*#__PURE__*/function(_ol$Object){function OlLocate(map,optOptions){var _this;_classCallCheck(this,OlLocate);_this=_callSuper(this,OlLocate);_defineProperty(_this,"start",function(){_this.geolocate.on("error",_this.options.onLocationError,_this);_this.follow=_this.options.follow;_this.geolocate.setTracking(true);_this.layer.setMap(_this.map);_this.map.addOverlay(_this.overlay);if(_this.options.showPopup){_this.map.on("click",_this.mapClick,_this);_this.map.on("touch",_this.mapClick,_this)}if(_this.options.stopFollowingOnDrag){_this.map.on("pointerdrag",_this.stopFollow,_this)}if(!_this.p){_this.set("state","LOCATING");_this.set("position",null)}else{_this._updatePosFt()}});_defineProperty(_this,"stop",function(){_this.geolocate.un("error",_this.options.onLocationError,_this);_this.geolocate.setTracking(false);_this.popup.hide=true;_this.map.removeOverlay(_this.overlay);_this.layer.setMap(null);if(_this.options.showPopup){_this.map.un("click",_this.mapClick);_this.map.un("touch",_this.mapClick)}if(_this.options.stopFollowingOnDrag&&_this.follow){_this.map.un("pointerdrag",_this.stopFollow,_this)}_this.set("state","DISABLED");_this.set("position",null)});_defineProperty(_this,"startFollow",function(){_this.follow=true;if(_this.options.stopFollowingOnDrag){_this.map.on("pointerdrag",_this.stopFollow,_this)}if(_this.p){_this._updatePosFt()}});_defineProperty(_this,"stopFollow",function(){_this.follow=false;_this.map.un("pointerdrag",_this.stopFollow,_this);_this.set("state","ENABLED")});_defineProperty(_this,"updateView",function(point){if(_this.follow){_this.map.getView().setCenter(point.getCoordinates());if(!_this.options.keepCurrentZoomLevel){_this.map.getView().setZoom(_this.options.locateOptions.maxZoom)}}});_defineProperty(_this,"onLocationError",function(err){// eslint-disable-next-line
9
- alert(err.message)});_defineProperty(_this,"mapClick",function(evt){var feature=_this.map.forEachFeatureAtPixel(evt.pixel,function(ft){return ft});if(feature&&feature.get("id")==="_locate-pos"&&_this.popup.hidden){_this._updatePopUpCnt()}else if(!_this.popup.hidden){_this.popUp.hidden=true}});_defineProperty(_this,"setStrings",function(newStrings){_this.options.strings=_objectSpread(_objectSpread({},_this.options.strings),newStrings)});_defineProperty(_this,"setProjection",function(projection){_this.geolocate.setProjection(projection)});_defineProperty(_this,"_updatePosFt",function(){var state=_this.get("state");var nState=_this.follow?"FOLLOWING":"ENABLED";if(nState!==state){_this.set("state",nState)}var p=_this.geolocate.getPosition();var wgsPos=CoordinatesUtils.reproject(p,_this.map.getView().getProjection(),"EPSG:4326");_this.set("position",wgsPos);_this.p=p;var point=new ol.geom.Point(p);if(_this.options.drawCircle){var accuracy=new ol.geom.Circle(point.getCoordinates(),_this.geolocate.getAccuracy());_this.posFt.setGeometry(new ol.geom.GeometryCollection([point,accuracy]))}else{_this.posFt.setGeometry(new ol.geom.GeometryCollection([point]))}if(!_this.popup.hidden){_this._updatePopUpCnt()}if(_this.follow){_this.updateView(point)}// Update only once
10
- if(!_this.options.remainActive){_this.geolocate.setTracking(false)}});_defineProperty(_this,"_updatePopUpCnt",function(){var distance;var unit;if(_this.options.metric){distance=_this.geolocate.getAccuracy();unit=_this.options.strings.metersUnit}else{distance=Math.round(_this.geolocate.getAccuracy()*3.2808399);unit=_this.options.strings.feetUnit}var cnt=_this.options.strings.popup.replace("{distance}",distance);_this.popCnt.innerHTML=cnt.replace("{unit}",unit);_this.overlay.setPosition(_this.posFt.getGeometry().getGeometries()[0].getCoordinates());_this.popup.hidden=false});_defineProperty(_this,"_getDefaultStyles",function(){return new ol.style.Style({image:new ol.style.Circle({radius:6,fill:new ol.style.Fill({color:"rgba(42,147,238,0.7)"}),stroke:new ol.style.Stroke({color:"rgba(19,106,236,1)",width:2})}),fill:new ol.style.Fill({color:"rgba(19,106,236,0.15)"}),stroke:new ol.style.Stroke({color:"rgba(19,106,236,1)",width:2})})});_this.set("state","DISABLED");_this.map=map;var defOptions={drawCircle:true,// draw accuracy circle
11
- follow:true,// follow with zoom and pan the user's location
12
- stopFollowingOnDrag:false,// if follow is true, stop following when map is dragged (deprecated)
13
- // if true locate control remains active on click even if the user's location is in view.
14
- // clicking control will just pan to location not implemented
15
- remainActive:true,locateStyle:_this._getDefaultStyles(),metric:true,onLocationError:_this.onLocationError,// keep the current map zoom level when displaying the user's location. (if 'false', use maxZoom)
16
- keepCurrentZoomLevel:false,showPopup:false,// display a popup when the user click on the inner marker
17
- strings:{metersUnit:LocaleUtils.tr("locate.metersUnit"),feetUnit:LocaleUtils.tr("locate.feetUnit"),popup:LocaleUtils.tr("locate.popup")},locateOptions:{maximumAge:2000,enableHighAccuracy:false,timeout:10000,maxZoom:18}};_this.options=_objectSpread(_objectSpread({},defOptions),optOptions);_this.geolocate=new ol.Geolocation({projection:_this.map.getView().getProjection(),trackingOptions:_this.options.locateOptions});_this.geolocate.on("change:position",_this._updatePosFt,_this);_this.popup=createPopup();_this.popup.hidden=true;_this.popCnt=_this.popup.getElementsByClassName("ol-popup-cnt")[0];_this.overlay=new ol.Overlay({element:_this.popup,positioning:"top-center",stopEvent:false});_this.layer=new ol.layer.Vector({source:new ol.source.Vector({useSpatialIndex:false})});_this.posFt=new ol.Feature({geometry:_this.geolocate.getAccuracyGeometry(),name:"position",id:"_locate-pos"});_this.posFt.setStyle(_this.options.locateStyle);_this.layer.getSource().addFeature(_this.posFt);return _this}_inherits(OlLocate,_ol$Object);return _createClass(OlLocate)}(ol.Object);export{OlLocate as default};
@@ -1,11 +0,0 @@
1
- function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
2
- * Copyright 2024 Sourcepole AG
3
- * All rights reserved.
4
- *
5
- * This source code is licensed under the BSD-style license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */import React from"react";import Sun from"@giro3d/giro3d/core/geographic/Sun.js";import{MapLightingMode}from"@giro3d/giro3d/entities/MapLightingOptions";import PropTypes from"prop-types";import suncalc from"suncalc";import{AmbientLight,BasicShadowMap,CameraHelper,DirectionalLight,DirectionalLightHelper,PCFShadowMap,PCFSoftShadowMap,VSMShadowMap}from"three";import CoordinatesUtils from"../../utils/CoordinatesUtils";import LocaleUtils from"../../utils/LocaleUtils";import Icon from"../Icon";import SideBar from"../SideBar";import Input from"../widgets/Input";import NumberInput from"../widgets/NumberInput";import ToggleSwitch from"../widgets/ToggleSwitch";import"./style/Map3DLight.css";var Map3DLight=/*#__PURE__*/function(_React$Component){function Map3DLight(props){var _this;_classCallCheck(this,Map3DLight);_this=_callSuper(this,Map3DLight,[props]);_defineProperty(_this,"state",{showAdvanced:false,lightParams:{day:182,time:720,helpersVisible:false,moonLightIntensity:0.02,sunLightIntensity:3.5,zFactor:1,lightElevationLayersOnly:false,shadowsEnabled:true,shadowType:PCFShadowMap,shadowMapSize:4096,shadowBias:-0.0001,sunDistance:80000,normalBias:0,shadowIntensity:1,shadowVolumeNear:60000,shadowVolumeFar:100000},dayAnimation:false,dayAnimationSettings:false,dayStep:30,timeAnimation:false,timeAnimationSettings:false,timeStep:30});_defineProperty(_this,"onHide",function(){clearInterval(_this.animationInterval);_this.setState({dayAnimation:false,timeAnimation:false})});_defineProperty(_this,"renderBody",function(){var lightParams=_this.state.lightParams;var dateValue=new Date(new Date().getFullYear(),0,1+lightParams.day).toISOString().split("T")[0];var dateToDay=function dateToDay(date){var d=new Date(date);return 1+(d-new Date(Date.UTC(d.getUTCFullYear(),0,1)))/(1000*60*60*24)};var isLeapYear=function isLeapYear(year){return new Date(year,1,29).getDate()===29};var timeValue="".concat(String(Math.trunc(lightParams.time/60)).padStart(2,"0"),":").concat(String(Math.floor(lightParams.time%60)).padStart(2,"0"));var timeToMin=function timeToMin(time){var parts=time.split(":");return parseInt(parts[0],10)*60+parseInt(parts[1],10)};return/*#__PURE__*/React.createElement("div",{className:"maplight3d-body"},/*#__PURE__*/React.createElement("table",null,/*#__PURE__*/React.createElement("tbody",null,/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.date")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement("div",{className:"map3d-animation-slider"},/*#__PURE__*/React.createElement(Icon,{icon:_this.state.dayAnimation?"square":"triangle-right",onClick:_this.toggleDayAnimation}),/*#__PURE__*/React.createElement("div",{className:"maplight3d-slider"},/*#__PURE__*/React.createElement("input",{max:365+isLeapYear(),min:1,onChange:function onChange(ev){return _this.updateLightParams("day",parseInt(ev.target.value,10))},step:1,type:"range",value:lightParams.day}),/*#__PURE__*/React.createElement(Input,{allowEmpty:false,onChange:function onChange(value){return _this.updateLightParams("day",dateToDay(value))},type:"date",value:dateValue})),/*#__PURE__*/React.createElement(Icon,{className:_this.state.dayAnimationSettings?"map3d-animation-settings-active":"",icon:"cog",onClick:function onClick(){return _this.setState(function(state){return{dayAnimationSettings:!state.dayAnimationSettings}})}})))),_this.state.dayAnimationSettings?/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",{colSpan:"2"},/*#__PURE__*/React.createElement("div",{className:"maplight3d-animation-settings"},/*#__PURE__*/React.createElement("span",null,LocaleUtils.tr("maplight3d.animationstep"),":"),/*#__PURE__*/React.createElement(NumberInput,{max:60,min:1,onChange:function onChange(dayStep){return _this.setState({dayStep:dayStep})},suffix:" "+LocaleUtils.tr("maplight3d.dayspersec"),value:_this.state.dayStep})))):null,/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.time")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement("div",{className:"map3d-animation-slider"},/*#__PURE__*/React.createElement(Icon,{icon:_this.state.timeAnimation?"square":"triangle-right",onClick:_this.toggleTimeAnimation}),/*#__PURE__*/React.createElement("div",{className:"maplight3d-slider"},/*#__PURE__*/React.createElement("input",{max:1439,min:0,onChange:function onChange(ev){return _this.updateLightParams("time",parseInt(ev.target.value,10))},step:1,type:"range",value:lightParams.time}),/*#__PURE__*/React.createElement(Input,{allowEmpty:false,onChange:function onChange(value){return _this.updateLightParams("time",timeToMin(value))},type:"time",value:timeValue})),/*#__PURE__*/React.createElement(Icon,{className:_this.state.timeAnimationSettings?"map3d-animation-settings-active":"",icon:"cog",onClick:function onClick(){return _this.setState(function(state){return{timeAnimationSettings:!state.timeAnimationSettings}})}})))),_this.state.timeAnimationSettings?/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",{colSpan:"2"},/*#__PURE__*/React.createElement("div",{className:"maplight3d-animation-settings"},/*#__PURE__*/React.createElement("span",null,LocaleUtils.tr("maplight3d.animationstep"),":"),/*#__PURE__*/React.createElement(NumberInput,{max:60,min:1,onChange:function onChange(timeStep){return _this.setState({timeStep:timeStep})},suffix:" "+LocaleUtils.tr("maplight3d.minspersec"),value:_this.state.timeStep})))):null,/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.sunLightIntensity")),/*#__PURE__*/React.createElement("td",null,_this.renderSlider("sunLightIntensity",0,10,0.1))),/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.moonLightIntensity")),/*#__PURE__*/React.createElement("td",null,_this.renderSlider("moonLightIntensity",0,0.5,0.01))),/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.shadows")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(ToggleSwitch,{active:lightParams.shadowsEnabled,onChange:function onChange(value){return _this.updateLightParams("shadowsEnabled",value)}}))),/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.shadowintensity")),/*#__PURE__*/React.createElement("td",null,_this.renderSlider("shadowIntensity",0,2,0.1))),/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",{className:"maplight3d-advanced",colSpan:"2"},/*#__PURE__*/React.createElement("label",null,/*#__PURE__*/React.createElement("input",{checked:_this.state.showAdvanced,onChange:function onChange(ev){return _this.setState(function(state){return{showAdvanced:!state.showAdvanced}})},type:"checkbox"})," ",LocaleUtils.tr("maplight3d.showadvanced")))),_this.state.showAdvanced?[/*#__PURE__*/React.createElement("tr",{key:"helpersVisible"},/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.helpersVisible")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(ToggleSwitch,{active:lightParams.helpersVisible,onChange:function onChange(value){return _this.updateLightParams("helpersVisible",value)}}))),/*#__PURE__*/React.createElement("tr",{key:"zFactor"},/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.zFactor")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement("input",{max:10,min:0,onChange:function onChange(ev){return _this.updateLightParams("zFactor",ev.target.value)},step:0.1,type:"range",value:lightParams.zFactor}))),/*#__PURE__*/React.createElement("tr",{key:"shadowType"},/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.shadowType")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement("select",{onChange:function onChange(ev){return _this.updateLightParams("shadowType",parseInt(ev.target.value,10))},value:lightParams.shadowType},/*#__PURE__*/React.createElement("option",{value:BasicShadowMap},"BasicShadowMap"),/*#__PURE__*/React.createElement("option",{value:PCFShadowMap},"PCFShadowMap"),/*#__PURE__*/React.createElement("option",{value:PCFSoftShadowMap},"PCFSoftShadowMap"),/*#__PURE__*/React.createElement("option",{value:VSMShadowMap},"VSMShadowMap")))),/*#__PURE__*/React.createElement("tr",{key:"shadowMapSize"},/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.shadowMapSize")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(NumberInput,{decimals:0,max:8192,min:64,onChange:function onChange(value){return _this.updateLightParams("shadowMapSize",value)},value:lightParams.shadowMapSize}))),/*#__PURE__*/React.createElement("tr",{key:"shadowBias"},/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.shadowBias")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(NumberInput,{decimals:5,max:0.01,min:-0.01,onChange:function onChange(value){return _this.updateLightParams("shadowBias",value)},value:lightParams.shadowBias}))),/*#__PURE__*/React.createElement("tr",{key:"normalBias"},/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.normalBias")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(NumberInput,{decimals:1,max:10,min:-10,onChange:function onChange(value){return _this.updateLightParams("normalBias",value)},value:lightParams.normalBias}))),/*#__PURE__*/React.createElement("tr",{key:"shadowVolumeNear"},/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.shadowVolumeNear")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(NumberInput,{decimals:0,max:100000,min:100,onChange:function onChange(value){return _this.updateLightParams("shadowVolumeNear",value)},value:lightParams.shadowVolumeNear}))),/*#__PURE__*/React.createElement("tr",{key:"shadowVolumeFar"},/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("maplight3d.shadowVolumeFar")),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(NumberInput,{decimals:0,max:100000,min:100,onChange:function onChange(value){return _this.updateLightParams("shadowVolumeFar",value)},value:lightParams.shadowVolumeFar})))]:null)))});_defineProperty(_this,"toggleDayAnimation",function(){_this.setState(function(state){return{dayAnimation:!state.dayAnimation,timeAnimation:false}},function(){clearInterval(_this.animationInterval);if(_this.state.dayAnimation){_this.animationInterval=setInterval(function(){_this.updateLightParams("day",(_this.state.lightParams.day+_this.state.dayStep/10)%365)},100)}})});_defineProperty(_this,"toggleTimeAnimation",function(){_this.setState(function(state){return{timeAnimation:!state.timeAnimation,dayAnimation:false}},function(){clearInterval(_this.animationInterval);if(_this.state.timeAnimation){_this.animationInterval=setInterval(function(){_this.updateLightParams("time",(_this.state.lightParams.time+_this.state.timeStep/10)%1440)},100)}})});_defineProperty(_this,"renderSlider",function(key,min,max,step){var labelFormatter=arguments.length>4&&arguments[4]!==undefined?arguments[4]:undefined;var value=_this.state.lightParams[key];var parseValue=function parseValue(x){return Number.isInteger(step)?parseInt(x,10):parseFloat(x)};labelFormatter=labelFormatter!==null&&labelFormatter!==void 0?labelFormatter:function(x){return x.toFixed(-Math.log10(step))};return/*#__PURE__*/React.createElement("div",{className:"maplight3d-slider"},/*#__PURE__*/React.createElement("input",{max:max,min:min,onChange:function onChange(ev){return _this.updateLightParams(key,parseValue(ev.target.value))},step:step,type:"range",value:value}),/*#__PURE__*/React.createElement("div",{className:"maplight3d-slider-label"},/*#__PURE__*/React.createElement("span",{style:{left:(value-min)*100/(max-min)+"%"}},labelFormatter(value))))});_defineProperty(_this,"updateLightParams",function(key,value){_this.setState(function(state){return{lightParams:_objectSpread(_objectSpread({},state.lightParams),{},_defineProperty({},key,value))}})});_defineProperty(_this,"configureShadows",function(sunLight,lightParams,shadowIntensityK){if(!lightParams.shadowsEnabled){_this.props.sceneContext.scene.renderer.shadowMap.enabled=false;sunLight.castShadow=false;return}var cameraHeight=_this.props.sceneContext.scene.view.camera.position.z;var targetHeight=_this.props.sceneContext.scene.view.controls.target.z;var volumeSize=Math.min(20000,Math.max(1000,cameraHeight-targetHeight));sunLight.shadow.camera.top=volumeSize;sunLight.shadow.camera.bottom=-volumeSize;sunLight.shadow.camera.left=-volumeSize;sunLight.shadow.camera.right=volumeSize;sunLight.shadow.camera.near=lightParams.shadowVolumeNear;sunLight.shadow.camera.far=lightParams.shadowVolumeFar;sunLight.shadow.camera.updateProjectionMatrix();sunLight.shadow.mapSize.set(lightParams.shadowMapSize,lightParams.shadowMapSize);sunLight.shadow.bias=lightParams.shadowBias;sunLight.shadow.normalBias=lightParams.normalBias;sunLight.shadow.intensity=lightParams.shadowIntensity*shadowIntensityK;_this.props.sceneContext.scene.renderer.shadowMap.enabled=true;sunLight.castShadow=true});_defineProperty(_this,"setLighting",function(){var sceneContext=_this.props.sceneContext;var lightParams=_this.state.lightParams;var ambientLight=sceneContext.getSceneObject("__ambientLight");var sunLight=sceneContext.getSceneObject("__sunLight");var moonLight=sceneContext.getSceneObject("__moonLight");var lightTarget=sceneContext.scene.view.controls.target.clone();lightTarget.z=0;// Compute azimuth / zenith and sun position
8
- var date=new Date(new Date().getFullYear(),0,lightParams.day,Math.trunc(lightParams.time/60),lightParams.time%60);var latlon=CoordinatesUtils.reproject([lightTarget.x,lightTarget.y],sceneContext.mapCrs,"EPSG:4326");var sunPos=suncalc.getPosition(date,latlon[1],latlon[0]);var zenith=90-sunPos.altitude/Math.PI*180;var azimuth=180+sunPos.azimuth/Math.PI*180;var sunLocalPos=Sun.getLocalPosition({point:lightTarget,zenith:Math.min(90,zenith),azimuth:azimuth,distance:lightParams.sunDistance});// Compute dynamic params
9
- var noonColor={r:1,g:0.98,b:0.98};var horizonColor={r:1,g:0.5,b:0.3};var duskColor={r:0.15,g:0.22,b:0.35};var lerpColor=function lerpColor(a,b,t){return{r:(1-t)*a.r+t*b.r,g:(1-t)*a.g+t*b.g,b:(1-t)*a.b+t*b.b}};var sunColor=noonColor;var ambientIntensity=0;var shadowIntensityK=0;var sunLightIntensityK=Math.min(1,(98-Math.min(98,zenith))/16);var moonLightIntensityK=1-Math.min(1,(90-Math.min(90,zenith))/16);if(zenith<90){var k=Math.pow(zenith/90,3);sunColor=lerpColor(noonColor,horizonColor,k);ambientIntensity=(1-zenith/90)*1.5;shadowIntensityK=(1-k)*0.9+0.2*k}else if(zenith<102){var _k=(zenith-90)/12;sunColor=lerpColor(horizonColor,duskColor,_k);shadowIntensityK=0.2*(1-_k)}// Set lighting params
10
- sceneContext.map.lighting.enabled=true;sceneContext.map.lighting.mode=lightParams.shadowsEnabled?MapLightingMode.LightBased:MapLightingMode.Hillshade;sceneContext.map.lighting.elevationLayersOnly=lightParams.lightElevationLayersOnly;sceneContext.map.lighting.hillshadeAzimuth=azimuth;sceneContext.map.lighting.hillshadeZenith=Math.min(90,zenith);sceneContext.map.lighting.zFactor=lightParams.zFactor;sceneContext.scene.notifyChange(sceneContext.map);sceneContext.scene.renderer.shadowMap.type=lightParams.shadowType;ambientLight.intensity=ambientIntensity;sunLight.position.copy(sunLocalPos);sunLight.intensity=lightParams.sunLightIntensity*sunLightIntensityK;sunLight.color=sunColor;sunLight.target.position.copy(lightTarget);sunLight.updateMatrixWorld(true);sunLight.target.updateMatrixWorld(true);_this.configureShadows(sunLight,lightParams,shadowIntensityK);// NOTE: just a top-down light
11
- moonLight.position.set(lightTarget.x,lightTarget.y,8000);moonLight.intensity=lightParams.moonLightIntensity*moonLightIntensityK;moonLight.target.position.copy(lightTarget);moonLight.updateMatrixWorld(true);moonLight.target.updateMatrixWorld(true);if(lightParams.helpersVisible){var sunLightHelper=sceneContext.getSceneObject("__sunLightHelper");sunLightHelper.update();sunLightHelper.updateMatrixWorld(true);var shadowCameraHelper=sceneContext.getSceneObject("__shadowCameraHelper");shadowCameraHelper.update();shadowCameraHelper.updateMatrixWorld(true)}sceneContext.scene.notifyChange()});_this.state.lightParams.day=props.sceneContext.options.defaultDay;var _parts=props.sceneContext.options.defaultTime.split(":").slice(0,2).map(Number);_this.state.lightParams.time=_parts[0]*60+_parts[1];return _this}_inherits(Map3DLight,_React$Component);return _createClass(Map3DLight,[{key:"componentDidMount",value:function componentDidMount(){this.animationInterval=null;this.componentDidUpdate({})}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps,prevState){var _prevProps$sceneConte;if(this.props.sceneContext.scene!==((_prevProps$sceneConte=prevProps.sceneContext)===null||_prevProps$sceneConte===void 0?void 0:_prevProps$sceneConte.scene)){var ambientLight=new AmbientLight(16777215,1);this.props.sceneContext.addSceneObject("__ambientLight",ambientLight);var sunLight=new DirectionalLight(16777215,this.state.sunLightIntensity);this.props.sceneContext.addSceneObject("__sunLight",sunLight);var moonLight=new DirectionalLight(16777215,this.state.moonLightIntensity);this.props.sceneContext.addSceneObject("__moonLight",moonLight);if(this.state.lightParams.helpersVisible){var sunLightHelper=new DirectionalLightHelper(sunLight,200,"white");this.props.sceneContext.addSceneObject("__sunLightHelper",sunLightHelper);var shadowCameraHelper=new CameraHelper(sunLight.shadow.camera);this.props.sceneContext.addSceneObject("__shadowCameraHelper",shadowCameraHelper)}this.props.sceneContext.scene.view.controls.addEventListener("change",this.setLighting);this.setLighting()}else if(this.state.lightParams!==prevState.lightParams){if(this.state.lightParams.helpersVisible&&!prevState.lightParams.helpersVisible){var _sunLight=this.props.sceneContext.getSceneObject("__sunLight");var _sunLightHelper=new DirectionalLightHelper(_sunLight,200,"white");this.props.sceneContext.addSceneObject("__sunLightHelper",_sunLightHelper);var _shadowCameraHelper=new CameraHelper(_sunLight.shadow.camera);this.props.sceneContext.addSceneObject("__shadowCameraHelper",_shadowCameraHelper)}else if(prevState.lightParams.helpersVisible&&!this.state.lightParams.helpersVisible){this.props.sceneContext.removeSceneObject("__sunLightHelper");this.props.sceneContext.removeSceneObject("__shadowCameraHelper")}this.setLighting()}}},{key:"componentWillUnmount",value:function componentWillUnmount(){clearInterval(this.lightPositionInterval);this.props.sceneContext.removeSceneObject("__sunLight");this.props.sceneContext.removeSceneObject("__moonLight");this.props.sceneContext.removeSceneObject("__sunLightHelper");this.props.sceneContext.removeSceneObject("__shadowCameraHelper")}},{key:"render",value:function render(){var _this2=this;return/*#__PURE__*/React.createElement(SideBar,{icon:"light",id:"MapLight3D",onHide:this.onHide,title:LocaleUtils.tr("appmenu.items.MapLight3D"),width:"25em"},function(){return{body:_this2.renderBody()}})}}])}(React.Component);_defineProperty(Map3DLight,"propTypes",{sceneContext:PropTypes.object});export{Map3DLight as default};
@@ -1,6 +0,0 @@
1
-
2
- div.dock-window > div.resizeable-window-body > div.attribtable-body {
3
- /* titlebar: 2.5em, padding: 0.5em */
4
- max-height: calc(100vh - 2.5em - 0.5em - var(--topbar-height) - var(--bottombar-height)); /* viewport - titlebar - window_padding - topbar - bottombar*/
5
- max-height: calc(var(--vh, 1vh) * 100 - 2.5em - 0.5em - var(--topbar-height) - var(--bottombar-height)); /* viewport - titlebar - window_padding - topbar - bottombar*/
6
- }