@vcmap/ui 5.0.0-rc.10

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 (556) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +182 -0
  3. package/build/.eslintrc +6 -0
  4. package/build/build.js +162 -0
  5. package/build/buildCesium.js +19 -0
  6. package/build/buildHelpers.js +212 -0
  7. package/build/buildPreview.js +23 -0
  8. package/build/commonViteConfig.js +39 -0
  9. package/build/determineHost.js +46 -0
  10. package/build/generateOLLib.js +196 -0
  11. package/build/getPluginProxies.js +29 -0
  12. package/build/info/api-plugin.js +11 -0
  13. package/build/info/conf.json +21 -0
  14. package/build/info/define-plugin.js +31 -0
  15. package/build/info/package.json +3 -0
  16. package/build/info/publish.js +190 -0
  17. package/build/info/virtual-plugin.js +15 -0
  18. package/build/staging/Dockerfile +2 -0
  19. package/config/aerowest.config.json +388 -0
  20. package/config/base.config.json +991 -0
  21. package/config/berlin.config.json +510 -0
  22. package/config/dev.config.json +44 -0
  23. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  24. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  25. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  26. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  27. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  28. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  29. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  30. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  31. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  32. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  33. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  34. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  35. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  36. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  37. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  38. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  39. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  40. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  41. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  42. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  43. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  44. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  45. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  46. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  47. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  48. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  49. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  50. package/dist/assets/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  51. package/dist/assets/cesium/Assets/Images/bing_maps_credit.png +0 -0
  52. package/dist/assets/cesium/Assets/Images/cesium_credit.png +0 -0
  53. package/dist/assets/cesium/Assets/Images/google_earth_credit.png +0 -0
  54. package/dist/assets/cesium/Assets/Images/ion-credit.png +0 -0
  55. package/dist/assets/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  56. package/dist/assets/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  57. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  58. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  59. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  60. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  61. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  62. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  63. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  64. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  65. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  66. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  67. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  68. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  69. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  70. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  71. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  72. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  73. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  74. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  75. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  76. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  77. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  78. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  79. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  80. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  81. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  82. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  83. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  84. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  85. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  86. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  87. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  88. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  89. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  90. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  91. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  92. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  93. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  94. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  95. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  96. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  97. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  98. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  99. package/dist/assets/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +14 -0
  100. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  101. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  102. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  103. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  104. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  105. package/dist/assets/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  106. package/dist/assets/cesium/Assets/Textures/maki/airfield.png +0 -0
  107. package/dist/assets/cesium/Assets/Textures/maki/airport.png +0 -0
  108. package/dist/assets/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  109. package/dist/assets/cesium/Assets/Textures/maki/america-football.png +0 -0
  110. package/dist/assets/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  111. package/dist/assets/cesium/Assets/Textures/maki/bakery.png +0 -0
  112. package/dist/assets/cesium/Assets/Textures/maki/bank.png +0 -0
  113. package/dist/assets/cesium/Assets/Textures/maki/bar.png +0 -0
  114. package/dist/assets/cesium/Assets/Textures/maki/baseball.png +0 -0
  115. package/dist/assets/cesium/Assets/Textures/maki/basketball.png +0 -0
  116. package/dist/assets/cesium/Assets/Textures/maki/beer.png +0 -0
  117. package/dist/assets/cesium/Assets/Textures/maki/bicycle.png +0 -0
  118. package/dist/assets/cesium/Assets/Textures/maki/building.png +0 -0
  119. package/dist/assets/cesium/Assets/Textures/maki/bus.png +0 -0
  120. package/dist/assets/cesium/Assets/Textures/maki/cafe.png +0 -0
  121. package/dist/assets/cesium/Assets/Textures/maki/camera.png +0 -0
  122. package/dist/assets/cesium/Assets/Textures/maki/campsite.png +0 -0
  123. package/dist/assets/cesium/Assets/Textures/maki/car.png +0 -0
  124. package/dist/assets/cesium/Assets/Textures/maki/cemetery.png +0 -0
  125. package/dist/assets/cesium/Assets/Textures/maki/cesium.png +0 -0
  126. package/dist/assets/cesium/Assets/Textures/maki/chemist.png +0 -0
  127. package/dist/assets/cesium/Assets/Textures/maki/cinema.png +0 -0
  128. package/dist/assets/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  129. package/dist/assets/cesium/Assets/Textures/maki/circle.png +0 -0
  130. package/dist/assets/cesium/Assets/Textures/maki/city.png +0 -0
  131. package/dist/assets/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  132. package/dist/assets/cesium/Assets/Textures/maki/college.png +0 -0
  133. package/dist/assets/cesium/Assets/Textures/maki/commercial.png +0 -0
  134. package/dist/assets/cesium/Assets/Textures/maki/cricket.png +0 -0
  135. package/dist/assets/cesium/Assets/Textures/maki/cross.png +0 -0
  136. package/dist/assets/cesium/Assets/Textures/maki/dam.png +0 -0
  137. package/dist/assets/cesium/Assets/Textures/maki/danger.png +0 -0
  138. package/dist/assets/cesium/Assets/Textures/maki/disability.png +0 -0
  139. package/dist/assets/cesium/Assets/Textures/maki/dog-park.png +0 -0
  140. package/dist/assets/cesium/Assets/Textures/maki/embassy.png +0 -0
  141. package/dist/assets/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  142. package/dist/assets/cesium/Assets/Textures/maki/entrance.png +0 -0
  143. package/dist/assets/cesium/Assets/Textures/maki/farm.png +0 -0
  144. package/dist/assets/cesium/Assets/Textures/maki/fast-food.png +0 -0
  145. package/dist/assets/cesium/Assets/Textures/maki/ferry.png +0 -0
  146. package/dist/assets/cesium/Assets/Textures/maki/fire-station.png +0 -0
  147. package/dist/assets/cesium/Assets/Textures/maki/fuel.png +0 -0
  148. package/dist/assets/cesium/Assets/Textures/maki/garden.png +0 -0
  149. package/dist/assets/cesium/Assets/Textures/maki/gift.png +0 -0
  150. package/dist/assets/cesium/Assets/Textures/maki/golf.png +0 -0
  151. package/dist/assets/cesium/Assets/Textures/maki/grocery.png +0 -0
  152. package/dist/assets/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  153. package/dist/assets/cesium/Assets/Textures/maki/harbor.png +0 -0
  154. package/dist/assets/cesium/Assets/Textures/maki/heart.png +0 -0
  155. package/dist/assets/cesium/Assets/Textures/maki/heliport.png +0 -0
  156. package/dist/assets/cesium/Assets/Textures/maki/hospital.png +0 -0
  157. package/dist/assets/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  158. package/dist/assets/cesium/Assets/Textures/maki/industrial.png +0 -0
  159. package/dist/assets/cesium/Assets/Textures/maki/land-use.png +0 -0
  160. package/dist/assets/cesium/Assets/Textures/maki/laundry.png +0 -0
  161. package/dist/assets/cesium/Assets/Textures/maki/library.png +0 -0
  162. package/dist/assets/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  163. package/dist/assets/cesium/Assets/Textures/maki/lodging.png +0 -0
  164. package/dist/assets/cesium/Assets/Textures/maki/logging.png +0 -0
  165. package/dist/assets/cesium/Assets/Textures/maki/london-underground.png +0 -0
  166. package/dist/assets/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  167. package/dist/assets/cesium/Assets/Textures/maki/marker.png +0 -0
  168. package/dist/assets/cesium/Assets/Textures/maki/minefield.png +0 -0
  169. package/dist/assets/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  170. package/dist/assets/cesium/Assets/Textures/maki/monument.png +0 -0
  171. package/dist/assets/cesium/Assets/Textures/maki/museum.png +0 -0
  172. package/dist/assets/cesium/Assets/Textures/maki/music.png +0 -0
  173. package/dist/assets/cesium/Assets/Textures/maki/oil-well.png +0 -0
  174. package/dist/assets/cesium/Assets/Textures/maki/park.png +0 -0
  175. package/dist/assets/cesium/Assets/Textures/maki/park2.png +0 -0
  176. package/dist/assets/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  177. package/dist/assets/cesium/Assets/Textures/maki/parking.png +0 -0
  178. package/dist/assets/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  179. package/dist/assets/cesium/Assets/Textures/maki/pitch.png +0 -0
  180. package/dist/assets/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  181. package/dist/assets/cesium/Assets/Textures/maki/playground.png +0 -0
  182. package/dist/assets/cesium/Assets/Textures/maki/police.png +0 -0
  183. package/dist/assets/cesium/Assets/Textures/maki/polling-place.png +0 -0
  184. package/dist/assets/cesium/Assets/Textures/maki/post.png +0 -0
  185. package/dist/assets/cesium/Assets/Textures/maki/prison.png +0 -0
  186. package/dist/assets/cesium/Assets/Textures/maki/rail-above.png +0 -0
  187. package/dist/assets/cesium/Assets/Textures/maki/rail-light.png +0 -0
  188. package/dist/assets/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  189. package/dist/assets/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  190. package/dist/assets/cesium/Assets/Textures/maki/rail.png +0 -0
  191. package/dist/assets/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  192. package/dist/assets/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  193. package/dist/assets/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  194. package/dist/assets/cesium/Assets/Textures/maki/restaurant.png +0 -0
  195. package/dist/assets/cesium/Assets/Textures/maki/roadblock.png +0 -0
  196. package/dist/assets/cesium/Assets/Textures/maki/rocket.png +0 -0
  197. package/dist/assets/cesium/Assets/Textures/maki/school.png +0 -0
  198. package/dist/assets/cesium/Assets/Textures/maki/scooter.png +0 -0
  199. package/dist/assets/cesium/Assets/Textures/maki/shop.png +0 -0
  200. package/dist/assets/cesium/Assets/Textures/maki/skiing.png +0 -0
  201. package/dist/assets/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  202. package/dist/assets/cesium/Assets/Textures/maki/soccer.png +0 -0
  203. package/dist/assets/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  204. package/dist/assets/cesium/Assets/Textures/maki/square.png +0 -0
  205. package/dist/assets/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  206. package/dist/assets/cesium/Assets/Textures/maki/star.png +0 -0
  207. package/dist/assets/cesium/Assets/Textures/maki/suitcase.png +0 -0
  208. package/dist/assets/cesium/Assets/Textures/maki/swimming.png +0 -0
  209. package/dist/assets/cesium/Assets/Textures/maki/telephone.png +0 -0
  210. package/dist/assets/cesium/Assets/Textures/maki/tennis.png +0 -0
  211. package/dist/assets/cesium/Assets/Textures/maki/theatre.png +0 -0
  212. package/dist/assets/cesium/Assets/Textures/maki/toilets.png +0 -0
  213. package/dist/assets/cesium/Assets/Textures/maki/town-hall.png +0 -0
  214. package/dist/assets/cesium/Assets/Textures/maki/town.png +0 -0
  215. package/dist/assets/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  216. package/dist/assets/cesium/Assets/Textures/maki/triangle.png +0 -0
  217. package/dist/assets/cesium/Assets/Textures/maki/village.png +0 -0
  218. package/dist/assets/cesium/Assets/Textures/maki/warehouse.png +0 -0
  219. package/dist/assets/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  220. package/dist/assets/cesium/Assets/Textures/maki/water.png +0 -0
  221. package/dist/assets/cesium/Assets/Textures/maki/wetland.png +0 -0
  222. package/dist/assets/cesium/Assets/Textures/maki/zoo.png +0 -0
  223. package/dist/assets/cesium/Assets/Textures/moonSmall.jpg +0 -0
  224. package/dist/assets/cesium/Assets/Textures/pin.svg +1 -0
  225. package/dist/assets/cesium/Assets/Textures/waterNormals.jpg +0 -0
  226. package/dist/assets/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  227. package/dist/assets/cesium/Assets/approximateTerrainHeights.json +1 -0
  228. package/dist/assets/cesium/Workers/ArcType-fc72c06c.js +1 -0
  229. package/dist/assets/cesium/Workers/AttributeCompression-80665726.js +1 -0
  230. package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-a655a4bc.js +1 -0
  231. package/dist/assets/cesium/Workers/BoundingRectangle-c3b79029.js +1 -0
  232. package/dist/assets/cesium/Workers/BoxGeometry-f8f9c981.js +1 -0
  233. package/dist/assets/cesium/Workers/Color-de06a177.js +1 -0
  234. package/dist/assets/cesium/Workers/ComponentDatatype-a15c9a19.js +1 -0
  235. package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-48cdc26d.js +1 -0
  236. package/dist/assets/cesium/Workers/CorridorGeometryLibrary-ddc027d3.js +1 -0
  237. package/dist/assets/cesium/Workers/CylinderGeometry-82a8cbe6.js +1 -0
  238. package/dist/assets/cesium/Workers/CylinderGeometryLibrary-76cda53e.js +1 -0
  239. package/dist/assets/cesium/Workers/EllipseGeometry-32d55454.js +1 -0
  240. package/dist/assets/cesium/Workers/EllipseGeometryLibrary-b2ae188a.js +1 -0
  241. package/dist/assets/cesium/Workers/EllipseOutlineGeometry-f05a5a27.js +1 -0
  242. package/dist/assets/cesium/Workers/EllipsoidGeodesic-19e75e11.js +1 -0
  243. package/dist/assets/cesium/Workers/EllipsoidGeometry-7c99fc81.js +1 -0
  244. package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-21c243df.js +1 -0
  245. package/dist/assets/cesium/Workers/EllipsoidRhumbLine-6145377b.js +1 -0
  246. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-a01286f6.js +1 -0
  247. package/dist/assets/cesium/Workers/EncodedCartesian3-d9f5c4a4.js +1 -0
  248. package/dist/assets/cesium/Workers/FrustumGeometry-17776af8.js +1 -0
  249. package/dist/assets/cesium/Workers/GeometryAttribute-89a520b9.js +1 -0
  250. package/dist/assets/cesium/Workers/GeometryAttributes-32b29525.js +1 -0
  251. package/dist/assets/cesium/Workers/GeometryInstance-4fbf16ba.js +1 -0
  252. package/dist/assets/cesium/Workers/GeometryOffsetAttribute-8c5e10db.js +1 -0
  253. package/dist/assets/cesium/Workers/GeometryPipeline-309fad76.js +1 -0
  254. package/dist/assets/cesium/Workers/IndexDatatype-f1dcdf35.js +1 -0
  255. package/dist/assets/cesium/Workers/IntersectionTests-58aa8f80.js +1 -0
  256. package/dist/assets/cesium/Workers/Matrix2-47e98d76.js +1 -0
  257. package/dist/assets/cesium/Workers/OrientedBoundingBox-fcb5b750.js +1 -0
  258. package/dist/assets/cesium/Workers/Plane-3f01019d.js +1 -0
  259. package/dist/assets/cesium/Workers/PolygonGeometryLibrary-0b29eb16.js +1 -0
  260. package/dist/assets/cesium/Workers/PolygonPipeline-a934c4dd.js +1 -0
  261. package/dist/assets/cesium/Workers/PolylinePipeline-8095c9bc.js +1 -0
  262. package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-67d12fff.js +1 -0
  263. package/dist/assets/cesium/Workers/PrimitivePipeline-980e44c5.js +1 -0
  264. package/dist/assets/cesium/Workers/RectangleGeometryLibrary-621c6de8.js +1 -0
  265. package/dist/assets/cesium/Workers/RuntimeError-8952249c.js +1 -0
  266. package/dist/assets/cesium/Workers/TerrainEncoding-f96552d5.js +1 -0
  267. package/dist/assets/cesium/Workers/Transforms-c8cb8f43.js +39 -0
  268. package/dist/assets/cesium/Workers/VertexFormat-a0b706b0.js +1 -0
  269. package/dist/assets/cesium/Workers/WallGeometryLibrary-c03d8479.js +1 -0
  270. package/dist/assets/cesium/Workers/WebGLConstants-508b9636.js +1 -0
  271. package/dist/assets/cesium/Workers/WebMercatorProjection-79b3214e.js +1 -0
  272. package/dist/assets/cesium/Workers/_commonjsHelpers-3aae1032-26891ab7.js +1 -0
  273. package/dist/assets/cesium/Workers/_rollup_plugin_ignore_empty_module_placeholder-57d574d0.js +1 -0
  274. package/dist/assets/cesium/Workers/arrayRemoveDuplicates-dc2f4046.js +1 -0
  275. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +6 -0
  276. package/dist/assets/cesium/Workers/combine-3c023bda.js +1 -0
  277. package/dist/assets/cesium/Workers/combineGeometry.js +1 -0
  278. package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -0
  279. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +1 -0
  280. package/dist/assets/cesium/Workers/createCircleGeometry.js +1 -0
  281. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +1 -0
  282. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +1 -0
  283. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +1 -0
  284. package/dist/assets/cesium/Workers/createCorridorGeometry.js +1 -0
  285. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +1 -0
  286. package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -0
  287. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +1 -0
  288. package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -0
  289. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -0
  290. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -0
  291. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -0
  292. package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -0
  293. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +1 -0
  294. package/dist/assets/cesium/Workers/createGeometry.js +1 -0
  295. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +1 -0
  296. package/dist/assets/cesium/Workers/createPlaneGeometry.js +1 -0
  297. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +1 -0
  298. package/dist/assets/cesium/Workers/createPolygonGeometry.js +1 -0
  299. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +1 -0
  300. package/dist/assets/cesium/Workers/createPolylineGeometry.js +1 -0
  301. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +1 -0
  302. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +1 -0
  303. package/dist/assets/cesium/Workers/createRectangleGeometry.js +1 -0
  304. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +1 -0
  305. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +1 -0
  306. package/dist/assets/cesium/Workers/createSphereGeometry.js +1 -0
  307. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +1 -0
  308. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +1 -0
  309. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -0
  310. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +1 -0
  311. package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -0
  312. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -0
  313. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -0
  314. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -0
  315. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +3 -0
  316. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -0
  317. package/dist/assets/cesium/Workers/createWallGeometry.js +1 -0
  318. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +1 -0
  319. package/dist/assets/cesium/Workers/decodeDraco.js +1 -0
  320. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +1 -0
  321. package/dist/assets/cesium/Workers/defaultValue-81eec7ed.js +1 -0
  322. package/dist/assets/cesium/Workers/transcodeKTX2.js +1 -0
  323. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -0
  324. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1 -0
  325. package/dist/assets/cesium.eb5667.js +9105 -0
  326. package/dist/assets/cesium.js +1 -0
  327. package/dist/assets/core.216494.js +4 -0
  328. package/dist/assets/core.js +1 -0
  329. package/dist/assets/index.4ccd4433.js +1 -0
  330. package/dist/assets/ol.ef03b1.js +311 -0
  331. package/dist/assets/ol.js +1 -0
  332. package/dist/assets/ui.99a1a7.css +1 -0
  333. package/dist/assets/ui.99a1a7.js +70 -0
  334. package/dist/assets/ui.js +1 -0
  335. package/dist/assets/vue-composition-api.c5aca1.js +14 -0
  336. package/dist/assets/vue-composition-api.js +2 -0
  337. package/dist/assets/vue.762edd.js +9 -0
  338. package/dist/assets/vue.js +1 -0
  339. package/dist/assets/vuetify.401a29.css +5 -0
  340. package/dist/assets/vuetify.401a29.js +148 -0
  341. package/dist/assets/vuetify.js +2 -0
  342. package/dist/index.html +82 -0
  343. package/index.js +108 -0
  344. package/lib/cesium.js +1 -0
  345. package/lib/core.js +1 -0
  346. package/lib/ol.js +1 -0
  347. package/lib/olLib.js +844 -0
  348. package/lib/ui.js +1 -0
  349. package/lib/vue-composition-api.js +2 -0
  350. package/lib/vue.js +1 -0
  351. package/lib/vuetify.js +2 -0
  352. package/map.config.json +35 -0
  353. package/package.json +126 -0
  354. package/plugins/@vcmap/pluginExample/config.json +6 -0
  355. package/plugins/@vcmap/pluginExample/index.js +209 -0
  356. package/plugins/@vcmap/pluginExample/package.json +7 -0
  357. package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +374 -0
  358. package/plugins/@vcmap/pluginExample/validation.js +30 -0
  359. package/plugins/@vcmap/project-selector/ContextsListComponent.vue +62 -0
  360. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +81 -0
  361. package/plugins/@vcmap/project-selector/README.md +29 -0
  362. package/plugins/@vcmap/project-selector/config.json +15 -0
  363. package/plugins/@vcmap/project-selector/de.json +7 -0
  364. package/plugins/@vcmap/project-selector/en.json +7 -0
  365. package/plugins/@vcmap/project-selector/index.js +259 -0
  366. package/plugins/@vcmap/project-selector/package.json +14 -0
  367. package/plugins/@vcmap/theme-changer/README.md +21 -0
  368. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +92 -0
  369. package/plugins/@vcmap/theme-changer/config.json +69 -0
  370. package/plugins/@vcmap/theme-changer/index.js +102 -0
  371. package/plugins/@vcmap/theme-changer/package.json +12 -0
  372. package/plugins/buttonExamples/ButtonExamples.vue +190 -0
  373. package/plugins/buttonExamples/index.js +41 -0
  374. package/plugins/categoryTest/Categories.vue +145 -0
  375. package/plugins/categoryTest/Category.vue +114 -0
  376. package/plugins/categoryTest/ItemEditor.vue +13 -0
  377. package/plugins/categoryTest/index.js +41 -0
  378. package/plugins/example/index.js +75 -0
  379. package/plugins/example/mySuperComponent.vue +127 -0
  380. package/plugins/package.json +5 -0
  381. package/plugins/test/allIconsComponent.vue +34 -0
  382. package/plugins/test/editor.vue +63 -0
  383. package/plugins/test/emptyComponent.vue +13 -0
  384. package/plugins/test/index.js +116 -0
  385. package/plugins/test/myCustomHeader.vue +19 -0
  386. package/plugins/test/toolbox-data.js +129 -0
  387. package/plugins/test/vcsContent.vue +23 -0
  388. package/plugins/test/windowManagerExample.vue +144 -0
  389. package/src/actions/actionHelper.js +262 -0
  390. package/src/actions/stateRefAction.js +59 -0
  391. package/src/actions/styleSelector.vue +90 -0
  392. package/src/application/Navbar.vue +143 -0
  393. package/src/application/VcsApp.vue +202 -0
  394. package/src/application/VcsMap.vue +38 -0
  395. package/src/application/VcsSettings.vue +85 -0
  396. package/src/application/vcsAppWrapper.vue +29 -0
  397. package/src/assets/logo-mobile.svg +9 -0
  398. package/src/assets/logo.svg +26 -0
  399. package/src/components/buttons/VcsActionButtonList.vue +99 -0
  400. package/src/components/buttons/VcsButton.vue +201 -0
  401. package/src/components/form-inputs-controls/VcsCheckbox.vue +74 -0
  402. package/src/components/form-inputs-controls/VcsColorPicker.vue +81 -0
  403. package/src/components/form-inputs-controls/VcsFormSection.vue +46 -0
  404. package/src/components/form-inputs-controls/VcsLabel.vue +38 -0
  405. package/src/components/form-inputs-controls/VcsSelect.vue +97 -0
  406. package/src/components/form-inputs-controls/VcsTextArea.vue +130 -0
  407. package/src/components/form-inputs-controls/VcsTextField.vue +129 -0
  408. package/src/components/form-output/VcsFormattedNumber.vue +103 -0
  409. package/src/components/lists/VcsActionList.vue +100 -0
  410. package/src/components/lists/VcsTreeview.vue +104 -0
  411. package/src/components/lists/VcsTreeviewLeaf.vue +91 -0
  412. package/src/components/lists/VcsTreeviewSearchbar.vue +157 -0
  413. package/src/components/notification/VcsBadge.vue +27 -0
  414. package/src/components/notification/VcsTooltip.vue +154 -0
  415. package/src/components/notification/validation.js +19 -0
  416. package/src/contentTree/LayerTree.vue +39 -0
  417. package/src/contentTree/contentTreeCollection.js +315 -0
  418. package/src/contentTree/contentTreeItem.js +457 -0
  419. package/src/contentTree/groupContentTreeItem.js +67 -0
  420. package/src/contentTree/layerContentTreeItem.js +235 -0
  421. package/src/contentTree/layerGroupContentTreeItem.js +154 -0
  422. package/src/contentTree/nodeContentTreeItem.js +37 -0
  423. package/src/contentTree/obliqueCollectionContentTreeItem.js +155 -0
  424. package/src/contentTree/subContentTreeItem.js +42 -0
  425. package/src/contentTree/vcsObjectContentTreeItem.js +98 -0
  426. package/src/contentTree/viewPointContentTreeItem.js +107 -0
  427. package/src/i18n/de.js +55 -0
  428. package/src/i18n/en.js +55 -0
  429. package/src/i18n/i18nCollection.js +138 -0
  430. package/src/icons/+all.js +359 -0
  431. package/src/icons/2DAreaIcon.vue +21 -0
  432. package/src/icons/2DDistanceIcon.vue +18 -0
  433. package/src/icons/3DAreaIcon.vue +21 -0
  434. package/src/icons/3DDistanceIcon.vue +18 -0
  435. package/src/icons/3DHeightIcon.vue +18 -0
  436. package/src/icons/AngleIcon.vue +8 -0
  437. package/src/icons/AssociationsIcon.vue +34 -0
  438. package/src/icons/AxisIcon.vue +10 -0
  439. package/src/icons/BoundingBoxIcon.vue +15 -0
  440. package/src/icons/CheckboxCheckedIcon.vue +16 -0
  441. package/src/icons/CheckboxIcon.vue +23 -0
  442. package/src/icons/CheckboxIndeterminateIcon.vue +24 -0
  443. package/src/icons/CircleIcon.vue +10 -0
  444. package/src/icons/ColorSwatchIcon.vue +17 -0
  445. package/src/icons/CommentIcon.vue +19 -0
  446. package/src/icons/CompassIcon.vue +8 -0
  447. package/src/icons/ComponentsIcon.vue +7 -0
  448. package/src/icons/ConeIcon.vue +11 -0
  449. package/src/icons/DimensionsHouseIcon.vue +14 -0
  450. package/src/icons/ElevationProfileIcon.vue +111 -0
  451. package/src/icons/ExportAreaIcon.vue +7 -0
  452. package/src/icons/ExportFlightIcon.vue +7 -0
  453. package/src/icons/ExportIcon.vue +8 -0
  454. package/src/icons/ExternalLinkIcon.vue +10 -0
  455. package/src/icons/EyeIcon.vue +7 -0
  456. package/src/icons/FastForwardIcon.vue +7 -0
  457. package/src/icons/FilterIcon.vue +8 -0
  458. package/src/icons/GlobeNatureIcon.vue +14 -0
  459. package/src/icons/HealthCareIndustriesIcon.vue +118 -0
  460. package/src/icons/HelpIcon.vue +7 -0
  461. package/src/icons/HomePointIcon.vue +8 -0
  462. package/src/icons/HospitalsIcon.vue +237 -0
  463. package/src/icons/HouseIcon.vue +25 -0
  464. package/src/icons/ImportIcon.vue +8 -0
  465. package/src/icons/InfoIcon.vue +10 -0
  466. package/src/icons/KebabIcon.vue +36 -0
  467. package/src/icons/LabelIcon.vue +7 -0
  468. package/src/icons/LayersIcon.vue +26 -0
  469. package/src/icons/LegendIcon.vue +65 -0
  470. package/src/icons/LineIcon.vue +7 -0
  471. package/src/icons/LinkIcon.vue +7 -0
  472. package/src/icons/MapIcon.vue +8 -0
  473. package/src/icons/MenuIcon.vue +34 -0
  474. package/src/icons/MinusIcon.vue +8 -0
  475. package/src/icons/ObjectAttributeIcon.vue +18 -0
  476. package/src/icons/ObjectSelectIcon.vue +8 -0
  477. package/src/icons/ObliqueViewIcon.vue +13 -0
  478. package/src/icons/PdfIcon.vue +10 -0
  479. package/src/icons/PedestrianIcon.vue +8 -0
  480. package/src/icons/PenIcon.vue +14 -0
  481. package/src/icons/PlayCircleIcon.vue +10 -0
  482. package/src/icons/PlusIcon.vue +9 -0
  483. package/src/icons/PoiIcon.vue +7 -0
  484. package/src/icons/PointSelectIcon.vue +7 -0
  485. package/src/icons/PolygonIcon.vue +38 -0
  486. package/src/icons/PresentationModeIcon.vue +7 -0
  487. package/src/icons/ProgressIcon.vue +24 -0
  488. package/src/icons/QueryIcon.vue +15 -0
  489. package/src/icons/RectangleIcon.vue +9 -0
  490. package/src/icons/ReturnIcon.vue +7 -0
  491. package/src/icons/RewindIcon.vue +6 -0
  492. package/src/icons/SearchIcon.vue +8 -0
  493. package/src/icons/ShadowIcon.vue +9 -0
  494. package/src/icons/ShapesIcon.vue +28 -0
  495. package/src/icons/ShareIcon.vue +22 -0
  496. package/src/icons/SimpleCircleFilledIcon.vue +15 -0
  497. package/src/icons/SimpleCircleHalfFilledIcon.vue +12 -0
  498. package/src/icons/SimpleCircleOutlinedIcon.vue +15 -0
  499. package/src/icons/SkipNextIcon.vue +7 -0
  500. package/src/icons/SkipPreviousIcon.vue +9 -0
  501. package/src/icons/SplitViewIcon.vue +19 -0
  502. package/src/icons/TextStyleIcon.vue +14 -0
  503. package/src/icons/ThreeDimensionsIcon.vue +7 -0
  504. package/src/icons/ToolsIcon.vue +35 -0
  505. package/src/icons/TouchIcon.vue +8 -0
  506. package/src/icons/TrashCanIcon.vue +7 -0
  507. package/src/icons/TriangleIcon.vue +15 -0
  508. package/src/icons/TwoDimensionsIcon.vue +8 -0
  509. package/src/icons/UploadIcon.vue +14 -0
  510. package/src/icons/VideoRecorderIcon.vue +14 -0
  511. package/src/icons/WalkingIcon.vue +7 -0
  512. package/src/icons/WallIcon.vue +14 -0
  513. package/src/init.js +38 -0
  514. package/src/manager/buttonManager.js +156 -0
  515. package/src/manager/navbarManager.js +81 -0
  516. package/src/manager/toolbox/ToolboxGroupComponent.vue +128 -0
  517. package/src/manager/toolbox/ToolboxManager.vue +157 -0
  518. package/src/manager/toolbox/toolboxManager.js +204 -0
  519. package/src/manager/window/WindowComponent.vue +140 -0
  520. package/src/manager/window/WindowComponentHeader.vue +53 -0
  521. package/src/manager/window/WindowManager.vue +126 -0
  522. package/src/manager/window/windowManager.js +435 -0
  523. package/src/navigation/mapNavCompass.vue +161 -0
  524. package/src/navigation/mapNavigation.vue +207 -0
  525. package/src/navigation/obliqueRotation.vue +48 -0
  526. package/src/navigation/orientationToolsButton.vue +52 -0
  527. package/src/navigation/overviewMap.js +615 -0
  528. package/src/navigation/overviewMapClickedInteraction.js +38 -0
  529. package/src/navigation/tiltSlider.vue +96 -0
  530. package/src/navigation/vcsCompass.vue +144 -0
  531. package/src/navigation/vcsZoomButton.vue +27 -0
  532. package/src/pluginHelper.js +106 -0
  533. package/src/setup.js +11 -0
  534. package/src/styles/_theming.scss +25 -0
  535. package/src/styles/_typography.scss +42 -0
  536. package/src/styles/main.scss +12 -0
  537. package/src/styles/utils/_all.scss +12 -0
  538. package/src/styles/utils/_border.scss +7 -0
  539. package/src/styles/utils/_cursor.scss +15 -0
  540. package/src/styles/utils/_display.scss +3 -0
  541. package/src/styles/utils/_fade-in.scss +8 -0
  542. package/src/styles/utils/_position.scss +38 -0
  543. package/src/styles/utils/_size.scss +79 -0
  544. package/src/styles/utils/_slide-in.scss +26 -0
  545. package/src/styles/utils/_spacing.scss +11 -0
  546. package/src/styles/utils/_text.scss +30 -0
  547. package/src/styles/utils/_transform.scss +11 -0
  548. package/src/styles/utils/_transition.scss +11 -0
  549. package/src/styles/utils/_z-index.scss +15 -0
  550. package/src/styles/variables.scss +70 -0
  551. package/src/styles/vcsFont.scss +5 -0
  552. package/src/styles/vcsGrid.scss +4 -0
  553. package/src/vcsUiApp.js +259 -0
  554. package/src/vuePlugins/i18n.js +69 -0
  555. package/src/vuePlugins/vuetify.js +54 -0
  556. package/start.js +3 -0
@@ -0,0 +1,615 @@
1
+ import {
2
+ OpenlayersMap,
3
+ CesiumMap,
4
+ ObliqueMap,
5
+ VectorLayer,
6
+ VectorStyleItem,
7
+ Projection,
8
+ mercatorProjection,
9
+ EventHandler,
10
+ DataState,
11
+ emptyStyle,
12
+ Extent,
13
+ ViewPoint,
14
+ deserializeLayer,
15
+ } from '@vcmap/core';
16
+ import Point from 'ol/geom/Point.js';
17
+ import Feature from 'ol/Feature.js';
18
+ import { Math as CesiumMath, Color } from '@vcmap/cesium';
19
+ import { unByKey } from 'ol/Observable.js';
20
+ import VectorSource from 'ol/source/Vector.js';
21
+ import { WindowSlot } from '../manager/window/windowManager.js';
22
+ import OverviewMapClickedInteraction from './overviewMapClickedInteraction.js';
23
+ import { vuetify } from '../vuePlugins/vuetify.js';
24
+ import { vcsAppSymbol } from '../pluginHelper.js';
25
+ import VcsMap from '../application/VcsMap.vue';
26
+
27
+ /**
28
+ * @returns {WindowComponentOptions}
29
+ */
30
+ export function getWindowComponentOptions() {
31
+ return {
32
+ component: VcsMap,
33
+ props: { mapId: 'overview-map-container' },
34
+ slot: WindowSlot.DETACHED,
35
+ id: 'overview-map-container',
36
+ state: {
37
+ hideHeader: true,
38
+ },
39
+ position: {
40
+ right: '100px',
41
+ bottom: '25px',
42
+ width: '272px',
43
+ height: '223px',
44
+ },
45
+ };
46
+ }
47
+
48
+ /**
49
+ * A 2D OverviewMap for cesium, openlayers and oblique map.
50
+ * Baselayers are added to the OverviewMap using `showInOverviewMap` flag within the properties bag of a layer configuration.
51
+ * @class
52
+ */
53
+ class OverviewMap {
54
+ /**
55
+ * @param {VcsUiApp} app
56
+ */
57
+ constructor(app) {
58
+ /**
59
+ * @type {VcsUiApp}
60
+ * @private
61
+ */
62
+ this._app = app;
63
+
64
+ /**
65
+ * @type {boolean}
66
+ * @private
67
+ */
68
+ this._active = false;
69
+
70
+ /**
71
+ * @type {import("@vcmap/core").OpenlayersMap||null}
72
+ * @private
73
+ */
74
+ this._map = new OpenlayersMap({
75
+ target: 'overview-map-container',
76
+ });
77
+
78
+ /**
79
+ * @private
80
+ * @type {import("@vcmap/core").ViewPoint|null}
81
+ */
82
+ this._cachedViewPoint = null;
83
+
84
+ /**
85
+ * @type {import("@vcmap/core").VectorLayer}
86
+ * @private
87
+ */
88
+ this._obliqueTileLayer = null;
89
+
90
+ /**
91
+ * @type {import("@vcmap/core").VectorLayer}
92
+ * @private
93
+ */
94
+ this._obliqueImageLayer = null;
95
+
96
+ /**
97
+ * @type {import("@vcmap/core").VectorLayer}
98
+ * @private
99
+ */
100
+ this._obliqueSelectedImageLayer = null;
101
+
102
+ const { primary, accent } = vuetify.userPreset.theme.themes.light;
103
+ const fillColor = Color.fromCssColorString(accent);
104
+
105
+ /**
106
+ * @type {VectorStyleItem}
107
+ */
108
+ this.obliqueUnselectedStyle = new VectorStyleItem({
109
+ fill: {
110
+ color: fillColor.withAlpha(0.1).toCssColorString(),
111
+ },
112
+ stroke: {
113
+ color: primary,
114
+ width: 1,
115
+ },
116
+ });
117
+
118
+ /**
119
+ * @type {VectorStyleItem}
120
+ */
121
+ this.obliqueSelectedStyle = new VectorStyleItem({
122
+ fill: {
123
+ color: fillColor.withAlpha(0.8).toCssColorString(),
124
+ },
125
+ stroke: {
126
+ color: primary,
127
+ width: 3,
128
+ },
129
+ });
130
+
131
+ /**
132
+ * A factor by witch to multiply the resolution when zooming to a single oblique image.
133
+ * @type {number}
134
+ * @private
135
+ */
136
+ this._obliqueResolutionFactor = 2;
137
+
138
+ /**
139
+ * @type {import("@vcmap/core").ObliqueViewDirection}
140
+ * @private
141
+ */
142
+ this._obliqueViewDirection = null;
143
+
144
+ /**
145
+ * @type {import("@vcmap/core").VectorLayer}
146
+ * @private
147
+ */
148
+ this._cameraIconLayer = null;
149
+
150
+ /**
151
+ * The style of the camera icon in 2D and 3D
152
+ * @type {import("@vcmap/core").VectorStyleItem}
153
+ */
154
+ this.cameraIconStyle = new VectorStyleItem({
155
+ image: {
156
+ src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAA8CAYAAADxJz2MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDphMzhlODgyYy00ZGYzLTZkNGMtYWZhYy1hYTkwOTI3MjRiYjEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEYxRkE1MDlENjRDMTFFNTlGRjhFMzM3RTA3MDJFMDciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEYxRkE1MDhENjRDMTFFNTlGRjhFMzM3RTA3MDJFMDciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OGJiODg5ODItZGM0Zi0xNjQyLWEyZDYtODJkZTcxMGNhNjkwIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YzY5MTdhNjAtZDYzYy0xMWU1LThjNTgt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',
157
+ anchor: [0.5, 1],
158
+ },
159
+ });
160
+
161
+ /**
162
+ * The minimum height to give to the overview map when synchronizing the view in 2D and 3D
163
+ * @type {number}
164
+ */
165
+ this.minimumHeight = 150;
166
+
167
+ /**
168
+ * Handles the events from the overview map. Available after first activation.
169
+ * @type {EventHandler|null}
170
+ * @private
171
+ */
172
+ this._eventHandler = null;
173
+
174
+ /**
175
+ * An event, available after first activation, which is triggered whenever the overview map is clicked.
176
+ * Is passed a {@link InteractionEvent} as its only argument
177
+ * @type {import("@vcmap/core").VcsEvent<import("@vcmap/core").InteractionEvent>|null}
178
+ * @private
179
+ */
180
+ this._mapClicked = null;
181
+
182
+ /**
183
+ * @type {Function}
184
+ */
185
+ this._mapPointerListener = null;
186
+
187
+ /**
188
+ * @type {Array<function():void>}
189
+ * @private
190
+ */
191
+ this._listeners = [];
192
+ /**
193
+ * @type {function():void}
194
+ * @private
195
+ */
196
+ this._mapActivatedListener = null;
197
+
198
+ /**
199
+ * @type {Array<function():void>}
200
+ * @private
201
+ */
202
+ this._layerCollectionListener = [
203
+ this._app.maps.layerCollection.added.addEventListener((layer) => {
204
+ if (layer.properties.showInOverviewMap) {
205
+ const clone = deserializeLayer(this._app, layer.toJSON());
206
+ clone.activate();
207
+ const idx = this._map.layerCollection.indexOf(clone);
208
+ if (idx < 0) {
209
+ this._map.layerCollection.add(clone);
210
+ } else {
211
+ this._map.layerCollection.remove(clone);
212
+ this._map.layerCollection.add(clone, idx);
213
+ }
214
+ }
215
+ }),
216
+ this._app.maps.layerCollection.removed.addEventListener((layer) => {
217
+ if (this._map.layerCollection.hasKey(layer.name)) {
218
+ const clone = this._map.layerCollection.getByKey(layer.name);
219
+ this._map.layerCollection.remove(clone);
220
+ }
221
+ }),
222
+ ];
223
+ }
224
+
225
+ /**
226
+ * @type {boolean}
227
+ * @readonly
228
+ */
229
+ get active() {
230
+ return this._active;
231
+ }
232
+
233
+ /**
234
+ * @type {import("@vcmap/core").OpenlayersMap|null}
235
+ * @readonly
236
+ */
237
+ get map() {
238
+ return this._map;
239
+ }
240
+
241
+ /**
242
+ * @type {EventHandler|null}
243
+ * @readonly
244
+ */
245
+ get eventHandler() {
246
+ return this._eventHandler;
247
+ }
248
+
249
+ /**
250
+ * @type {import("@vcmap/core").VcsEvent<import("@vcmap/core").InteractionEvent>|null}
251
+ * @readonly
252
+ */
253
+ get mapClicked() {
254
+ return this._mapClicked;
255
+ }
256
+
257
+ /**
258
+ * @private
259
+ */
260
+ _setupMapInteraction() {
261
+ this._eventHandler = new EventHandler();
262
+ const overviewMapClickedInteraction = new OverviewMapClickedInteraction();
263
+ this._mapClicked = overviewMapClickedInteraction.mapClicked;
264
+ this._eventHandler.addPersistentInteraction(overviewMapClickedInteraction);
265
+ this._mapPointerListener = this._map.pointerInteractionEvent.addEventListener((e) => {
266
+ this._eventHandler.handleMapEvent(e);
267
+ });
268
+ }
269
+
270
+ /**
271
+ * activates the overview map and initializes handlers for current active map
272
+ * @private
273
+ * @returns {Promise<void>}
274
+ */
275
+ async _activate() {
276
+ if (!this._mapClicked) {
277
+ this._setupMapInteraction();
278
+ }
279
+ await this._map.activate();
280
+ if (!this._active) {
281
+ this._mapActivatedListener = this._app.maps.mapActivated.addEventListener(() => {
282
+ this._clearListeners();
283
+ this._cachedViewPoint = null;
284
+ this._activate();
285
+ });
286
+ }
287
+ this._active = true;
288
+ const { activeMap } = this._app.maps;
289
+ if (activeMap instanceof CesiumMap) {
290
+ await this._initializeForCesium(activeMap);
291
+ } else if (activeMap instanceof OpenlayersMap) {
292
+ await this._initializeForOpenlayers(activeMap);
293
+ } else if (activeMap instanceof ObliqueMap) {
294
+ await this._initializeForOblique(activeMap);
295
+ }
296
+ }
297
+
298
+ /**
299
+ * opens window and sets target
300
+ * @returns {Promise<void>}
301
+ */
302
+ async activate() {
303
+ if (!this._app.windowManager.has('overview-map-container')) {
304
+ this._app.windowManager.add(getWindowComponentOptions(), vcsAppSymbol);
305
+ }
306
+ await this._activate();
307
+ this.map.setTarget('overview-map-container');
308
+ }
309
+
310
+ /**
311
+ * closes window and clears all listeners
312
+ */
313
+ deactivate() {
314
+ this._app.windowManager.remove('overview-map-container');
315
+ this._clearListeners();
316
+ if (this._mapActivatedListener) {
317
+ this._mapActivatedListener();
318
+ this._mapActivatedListener = null;
319
+ }
320
+ this._active = false;
321
+ }
322
+
323
+ /**
324
+ * @param {import("@vcmap/core").CesiumMap} cesiumMap
325
+ * @returns {Promise<void>}
326
+ * @private
327
+ */
328
+ async _initializeForCesium(cesiumMap) {
329
+ if (!this._cameraIconLayer) {
330
+ this._setupCameraIconLayer();
331
+ }
332
+ if (cesiumMap.initialized) {
333
+ const cesiumViewer = cesiumMap.getCesiumWidget();
334
+ const cesiumScene = cesiumViewer.scene;
335
+ const navRemover = this._addNavigationListener(cesiumMap);
336
+ const prRemover = cesiumScene.postRender.addEventListener(this._addCameraFeature, this);
337
+ const cleanupTasks = () => {
338
+ prRemover();
339
+ navRemover();
340
+ this._cameraIconLayer.deactivate();
341
+ };
342
+ this._listeners.push(cleanupTasks);
343
+ await this._cameraIconLayer.activate();
344
+ }
345
+ }
346
+
347
+ /**
348
+ * @param {import("@vcmap/core").OpenlayersMap} map
349
+ * @returns {Promise<void>}
350
+ * @private
351
+ */
352
+ async _initializeForOpenlayers(map) {
353
+ if (!this._cameraIconLayer) {
354
+ this._setupCameraIconLayer();
355
+ }
356
+ const { olMap } = map;
357
+ const navListener = this._addNavigationListener(map);
358
+ const prUnKey = olMap.on('postrender', this._addCameraFeature.bind(this));
359
+
360
+ const cleanupTasks = () => {
361
+ unByKey(prUnKey);
362
+ navListener();
363
+ this._cameraIconLayer.deactivate();
364
+ };
365
+ this._listeners.push(cleanupTasks);
366
+ await this._cameraIconLayer.activate();
367
+ }
368
+
369
+ /**
370
+ * @param {import("@vcmap/core").ObliqueMap} obliqueMap
371
+ * @returns {Promise<void>}
372
+ * @private
373
+ */
374
+ async _initializeForOblique(obliqueMap) {
375
+ if (!this._obliqueTileLayer) {
376
+ this._setupObliqueLayers();
377
+ }
378
+ const mapClickedListener = this._mapClicked.addEventListener(async (e) => {
379
+ if (e.feature) {
380
+ const id = e.feature.getId().toString();
381
+ if (this._obliqueTileLayer.getFeatureById(id)) {
382
+ const image = await obliqueMap.collection
383
+ .loadImageForCoordinate(e.positionOrPixel, this._obliqueViewDirection);
384
+ if (image) {
385
+ await obliqueMap.setImageByName(image.name);
386
+ }
387
+ } else {
388
+ await obliqueMap.setImageByName(id);
389
+ }
390
+ }
391
+ });
392
+
393
+ const listeners = [
394
+ mapClickedListener,
395
+ obliqueMap.imageChanged.addEventListener(this._obliqueImageChange.bind(this)),
396
+ obliqueMap.collectionChanged.addEventListener(this._obliqueCollectionChanged.bind(this)),
397
+ ];
398
+
399
+ const prUnKey = this._map.olMap.once('postrender', () => {
400
+ this._obliqueCollectionChanged(obliqueMap.collection);
401
+ this._obliqueImageChange(obliqueMap.currentImage);
402
+ });
403
+
404
+ const cleanupTasks = () => {
405
+ this._obliqueTileLayer.deactivate();
406
+ this._obliqueImageLayer.deactivate();
407
+ this._obliqueSelectedImageLayer.deactivate();
408
+ unByKey(prUnKey);
409
+ listeners.forEach((l) => { l(); });
410
+ };
411
+ this._listeners.push(cleanupTasks);
412
+ await this._obliqueTileLayer.activate();
413
+ await this._obliqueImageLayer.activate();
414
+ await this._obliqueSelectedImageLayer.activate();
415
+ }
416
+
417
+ /**
418
+ * @param {import("@vcmap/core").ObliqueCollection} collection
419
+ * @private
420
+ */
421
+ _obliqueCollectionChanged(collection) {
422
+ this._obliqueTileLayer.source = collection.tileFeatureSource;
423
+ this._obliqueTileLayer.forceRedraw();
424
+ this._obliqueImageLayer.source = collection.imageFeatureSource;
425
+ this._obliqueImageLayer.forceRedraw();
426
+ this._obliqueSelectedImageLayer.removeAllFeatures();
427
+ }
428
+
429
+ /**
430
+ * @param {import("@vcmap/core").ObliqueImage=} image
431
+ * @private
432
+ */
433
+ _obliqueImageChange(image) {
434
+ const { source } = this._obliqueImageLayer;
435
+ if (this._obliqueViewDirection !== image.viewDirection) {
436
+ this._obliqueViewDirection = image.viewDirection;
437
+ source.changed();
438
+ }
439
+ const activeFeature = source.getFeatureById(image.name);
440
+ if (activeFeature) {
441
+ this._obliqueSelectedImageLayer.removeAllFeatures();
442
+ this._obliqueSelectedImageLayer.addFeatures([activeFeature]);
443
+ const extent = new Extent({
444
+ coordinates: activeFeature.getGeometry().getExtent(),
445
+ projection: mercatorProjection.toJSON(),
446
+ });
447
+
448
+ const vp = ViewPoint.createViewPointFromExtent(extent);
449
+ vp.distance /= this._obliqueResolutionFactor;
450
+ this._map.gotoViewPoint(vp);
451
+ }
452
+ }
453
+
454
+ /**
455
+ * @private
456
+ */
457
+ _setupObliqueLayers() {
458
+ const obliqueTileStyle = new VectorStyleItem({});
459
+ obliqueTileStyle.style = (feature) => {
460
+ if (feature.get('state') === DataState.PENDING) {
461
+ return /** @type {ol/style/Style} */ (this.obliqueUnselectedStyle.style);
462
+ }
463
+ return emptyStyle;
464
+ };
465
+
466
+ this._obliqueTileLayer = new VectorLayer({
467
+ projection: mercatorProjection.toJSON(),
468
+ style: obliqueTileStyle,
469
+ zIndex: 1,
470
+ });
471
+
472
+ const obliqueImageStyle = new VectorStyleItem({});
473
+ obliqueImageStyle.style = (feature) => {
474
+ if (feature.get('viewDirection') === this._obliqueViewDirection) {
475
+ return this.obliqueUnselectedStyle.style;
476
+ }
477
+ return emptyStyle;
478
+ };
479
+
480
+ this._obliqueImageLayer = new VectorLayer({
481
+ projection: mercatorProjection.toJSON(),
482
+ style: obliqueImageStyle,
483
+ });
484
+ this._obliqueSelectedImageLayer = new VectorLayer({
485
+ projection: mercatorProjection.toJSON(),
486
+ style: this.obliqueSelectedStyle,
487
+ });
488
+ this._map.layerCollection.add(this._obliqueImageLayer);
489
+ this._map.layerCollection.add(this._obliqueSelectedImageLayer);
490
+ this._map.layerCollection.add(this._obliqueTileLayer);
491
+ }
492
+
493
+ /**
494
+ * @param {import("@vcmap/core").VcsMap} activeMap
495
+ * @returns {Function}
496
+ * @private
497
+ */
498
+ _addNavigationListener(activeMap) {
499
+ return this._mapClicked.addEventListener((e) => {
500
+ const vp = activeMap.getViewPointSync();
501
+ const height = vp.groundPosition[2] ? vp.groundPosition[2] : 0.0;
502
+ vp.groundPosition = Projection.mercatorToWgs84(e.positionOrPixel);
503
+ vp.groundPosition[2] = height;
504
+ vp.cameraPosition = null;
505
+ activeMap.gotoViewPoint(vp);
506
+ });
507
+ }
508
+
509
+ _setupCameraIconLayer() {
510
+ if (!this._cameraIconLayer) {
511
+ this._cameraIconLayer = new VectorLayer({
512
+ projection: mercatorProjection.toJSON(),
513
+ zIndex: 50,
514
+ });
515
+ this._map.layerCollection.add(this._cameraIconLayer);
516
+ }
517
+ }
518
+
519
+ /**
520
+ * Adds and maintains the view and camera feature
521
+ * @private
522
+ */
523
+ _addCameraFeature() {
524
+ const viewpoint = this._app.maps.activeMap.getViewPointSync();
525
+ if (!viewpoint || !viewpoint.isValid() || viewpoint.equals(this._cachedViewPoint)) {
526
+ return;
527
+ }
528
+ this._cachedViewPoint = viewpoint.clone();
529
+ const gp = viewpoint.groundPosition;
530
+ const position = viewpoint.cameraPosition || gp;
531
+ const { heading } = viewpoint;
532
+ let { distance } = viewpoint;
533
+ if (position[2] && !(distance && distance < position[2] * 4)) {
534
+ distance = position[2] * 4;
535
+ } else if (position[2] == null) {
536
+ position[2] = distance;
537
+ }
538
+
539
+ distance = distance > this.minimumHeight ? distance : this.minimumHeight;
540
+ if (heading == null || distance == null) {
541
+ return;
542
+ }
543
+ let cameraFeature = this._cameraIconLayer.getFeatureById('cameraFeature');
544
+ if (!cameraFeature) {
545
+ const cameraGeometry = new Point([position[0], position[1]]);
546
+ cameraFeature = new Feature({
547
+ geometry: cameraGeometry,
548
+ });
549
+ cameraFeature.setId('cameraFeature');
550
+ cameraFeature.setStyle(this.cameraIconStyle.style);
551
+ this._cameraIconLayer.addFeatures([cameraFeature]);
552
+ }
553
+ cameraFeature.getGeometry().setCoordinates(Projection.wgs84ToMercator(position));
554
+
555
+ const rotationDegrees = viewpoint.heading;
556
+ const rotationRadians = CesiumMath.toRadians(rotationDegrees);
557
+
558
+ this.cameraIconStyle.image.setRotation(rotationRadians);
559
+
560
+ viewpoint.heading = 0;
561
+ viewpoint.cameraPosition = position;
562
+ viewpoint.groundPosition = null;
563
+ viewpoint.distance = distance * 4;
564
+ this._map.gotoViewPoint(viewpoint);
565
+ }
566
+
567
+ /**
568
+ * @private
569
+ */
570
+ _clearListeners() {
571
+ this._listeners.forEach(cb => cb());
572
+ this._listeners.splice(0);
573
+ }
574
+
575
+ destroy() {
576
+ this._clearListeners();
577
+ this._layerCollectionListener.forEach(cb => cb());
578
+ if (this._mapPointerListener) {
579
+ this._mapPointerListener();
580
+ this._mapPointerListener = null;
581
+ }
582
+ if (this._mapActivatedListener) {
583
+ this._mapActivatedListener();
584
+ this._mapActivatedListener = null;
585
+ }
586
+ if (this._map) {
587
+ this._map.destroy();
588
+ }
589
+ if (this._obliqueTileLayer) {
590
+ this._obliqueTileLayer.source = new VectorSource({});
591
+ this._obliqueTileLayer.destroy();
592
+ }
593
+ if (this._obliqueImageLayer) {
594
+ this._obliqueImageLayer.source = new VectorSource({});
595
+ this._obliqueImageLayer.destroy();
596
+ }
597
+ if (this._obliqueSelectedImageLayer) {
598
+ this._obliqueSelectedImageLayer.source = new VectorSource({});
599
+ this._obliqueSelectedImageLayer.destroy();
600
+ }
601
+ if (this._cameraIconLayer) {
602
+ this._cameraIconLayer.destroy();
603
+ }
604
+ if (this._eventHandler) {
605
+ this._eventHandler.destroy();
606
+ }
607
+ this.cameraIconStyle.destroy();
608
+ this.obliqueUnselectedStyle.destroy();
609
+ this.obliqueSelectedStyle.destroy();
610
+ this._cachedViewPoint = null;
611
+ this._mapClicked = null;
612
+ }
613
+ }
614
+
615
+ export default OverviewMap;
@@ -0,0 +1,38 @@
1
+ import { VcsEvent, EventType, ModificationKeyType, AbstractInteraction } from '@vcmap/core';
2
+
3
+ /**
4
+ * @class
5
+ * @extends {import("@vcmap/core").AbstractInteraction}
6
+ */
7
+ class OverviewMapClickedInteraction extends AbstractInteraction {
8
+ constructor() {
9
+ super(EventType.CLICK, ModificationKeyType.ALL);
10
+
11
+ /**
12
+ * @type {import("@vcmap/core").VcsEvent<import("@vcmap/core").InteractionEvent>}
13
+ */
14
+ this.mapClicked = new VcsEvent();
15
+ this.setActive();
16
+ }
17
+
18
+ /**
19
+ * @inheritDoc
20
+ * @param {import("@vcmap/core").InteractionEvent} event
21
+ * @returns {Promise<import("@vcmap/core").InteractionEvent>}
22
+ */
23
+ async pipe(event) {
24
+ this.mapClicked.raiseEvent(event);
25
+ event.stopPropagation = true;
26
+ return event;
27
+ }
28
+
29
+ /**
30
+ * @inheritDoc
31
+ */
32
+ destroy() {
33
+ this.mapClicked.destroy();
34
+ super.destroy();
35
+ }
36
+ }
37
+
38
+ export default OverviewMapClickedInteraction;