@reearth/core 0.0.7-alpha.3 → 0.0.7-alpha.31

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 (445) hide show
  1. package/dist/core.js +44780 -39501
  2. package/dist/core.umd.cjs +3910 -3868
  3. package/dist/{index-DqatWUTw.js → index-DqGWVPtz.js} +0 -1
  4. package/dist/index.d.ts +119 -25
  5. package/package.json +29 -9
  6. package/src/Map/Layer/hooks.ts +6 -3
  7. package/src/Map/Layer/index.tsx +2 -0
  8. package/src/Map/Layers/hooks.ts +27 -0
  9. package/src/Map/Layers/index.tsx +12 -1
  10. package/src/Map/Layers/keys.ts +1 -0
  11. package/src/Map/Sketch/hooks.ts +449 -406
  12. package/src/Map/Sketch/index.tsx +65 -18
  13. package/src/Map/Sketch/sketchMachine.ts +359 -4
  14. package/src/Map/Sketch/sketchMachine.typegen.ts +58 -1
  15. package/src/Map/Sketch/types.ts +10 -20
  16. package/src/Map/Sketch/usePluginSketchLayer.ts +105 -0
  17. package/src/Map/Sketch/useSketch.ts +559 -0
  18. package/src/Map/Sketch/useSketchFeature.ts +198 -0
  19. package/src/Map/SpatialId/constants.ts +16 -0
  20. package/src/Map/SpatialId/hooks.ts +382 -0
  21. package/src/Map/SpatialId/index.tsx +60 -0
  22. package/src/Map/SpatialId/types.ts +68 -0
  23. package/src/Map/SpatialId/utils.ts +64 -0
  24. package/src/Map/hooks.ts +50 -8
  25. package/src/Map/index.tsx +36 -7
  26. package/src/Map/ref.ts +21 -0
  27. package/src/Map/types/index.ts +29 -1
  28. package/src/Map/types/viewerProperty.ts +2 -0
  29. package/src/Visualizer/coreContext.tsx +2 -0
  30. package/src/Visualizer/hooks.ts +46 -12
  31. package/src/Visualizer/index.tsx +22 -3
  32. package/src/Visualizer/interactionMode.ts +2 -1
  33. package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
  34. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  35. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  36. package/src/engines/Cesium/Feature/Tileset/hooks.ts +52 -24
  37. package/src/engines/Cesium/Feature/context.ts +1 -0
  38. package/src/engines/Cesium/Feature/index.tsx +6 -2
  39. package/src/engines/Cesium/Feature/utils.tsx +9 -4
  40. package/src/engines/Cesium/Shaders/OverriddenShaders/GlobeFS/IBL.glsl +6 -10
  41. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  42. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  43. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  44. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  45. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  46. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  47. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +125 -35
  48. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  49. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  50. package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
  51. package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
  52. package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
  53. package/src/engines/Cesium/SpatialId/index.ts +3 -0
  54. package/src/engines/Cesium/common.ts +46 -12
  55. package/src/engines/Cesium/core/Globe.tsx +11 -2
  56. package/src/engines/Cesium/core/Imagery.tsx +16 -3
  57. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +8 -1
  58. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  59. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  60. package/src/engines/Cesium/core/presets.ts +0 -11
  61. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  62. package/src/engines/Cesium/hooks/useEngineRef.ts +46 -1
  63. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +1 -1
  64. package/src/engines/Cesium/hooks.ts +45 -4
  65. package/src/engines/Cesium/index.tsx +16 -3
  66. package/src/mantle/atoms/compute.ts +5 -1
  67. package/src/mantle/data/geojson.ts +53 -22
  68. package/src/mantle/types/appearance.ts +2 -2
  69. package/src/mantle/types/index.ts +3 -0
  70. package/src/utils/image.ts +1 -11
  71. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  72. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  73. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  74. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  75. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  76. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  77. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  78. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  79. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  80. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  81. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  82. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  83. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  84. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  85. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  86. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  87. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  88. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  89. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  90. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  91. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  92. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  93. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  94. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  95. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  96. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  97. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  98. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  99. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  100. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  101. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  102. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  103. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  104. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  105. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  106. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  107. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  108. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  109. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  110. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  111. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  112. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  113. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  114. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  115. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  116. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  117. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  118. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  119. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  120. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  121. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  122. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  123. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  124. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  125. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  126. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  127. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  128. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  129. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  130. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  131. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  132. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  133. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  134. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  135. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  136. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  137. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  138. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  139. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  140. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  141. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  142. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  143. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  144. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  145. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  146. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  147. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  148. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  149. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  150. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  151. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  152. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  153. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  154. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  155. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  156. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  157. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  158. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  159. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  160. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  161. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  162. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  163. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  164. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  165. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  166. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  167. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  168. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  169. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  170. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  171. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  172. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  173. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  174. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  175. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  176. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  177. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  178. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  179. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  180. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  181. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  182. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  183. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  184. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  185. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  186. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  187. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  188. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  189. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  190. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  191. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  192. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  193. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  194. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  195. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  196. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  197. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  198. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  199. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  200. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  201. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  202. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  203. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  204. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  205. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  206. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  207. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  208. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  209. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  210. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  211. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  212. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  213. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  214. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  215. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  216. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  217. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  218. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  219. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  220. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  221. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  222. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  223. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  224. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  267. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  268. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  269. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  270. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  271. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  272. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  273. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  274. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  275. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  276. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  277. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  278. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  279. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  280. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  281. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  282. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  283. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  284. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  285. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  286. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  287. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  288. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  289. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  290. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  291. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  292. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  293. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  294. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  295. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  296. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  297. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  298. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  299. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  300. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  301. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  302. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  303. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  304. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  305. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  306. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  307. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  308. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  309. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  310. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  311. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  312. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  313. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  314. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  315. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  316. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  317. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  318. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  319. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  320. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  321. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  322. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  323. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  324. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  325. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  326. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  327. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  328. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  329. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  330. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  331. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  332. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  333. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  334. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  335. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  336. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  337. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  338. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  339. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  340. package/dist/cesium/Widgets/lighter.css +0 -237
  341. package/dist/cesium/Widgets/lighterShared.css +0 -46
  342. package/dist/cesium/Widgets/shared.css +0 -103
  343. package/dist/cesium/Widgets/widgets.css +0 -1346
  344. package/dist/cesium/Workers/chunk-2ED5WI77.js +0 -26
  345. package/dist/cesium/Workers/chunk-2MBPFWCP.js +0 -26
  346. package/dist/cesium/Workers/chunk-3C74MLG3.js +0 -26
  347. package/dist/cesium/Workers/chunk-45U7TTT3.js +0 -26
  348. package/dist/cesium/Workers/chunk-4N7SRDH5.js +0 -26
  349. package/dist/cesium/Workers/chunk-4T6AS6BZ.js +0 -26
  350. package/dist/cesium/Workers/chunk-5AG2MVRM.js +0 -26
  351. package/dist/cesium/Workers/chunk-5Z6L2FHX.js +0 -26
  352. package/dist/cesium/Workers/chunk-6AUUBDOF.js +0 -26
  353. package/dist/cesium/Workers/chunk-74N6MC2V.js +0 -26
  354. package/dist/cesium/Workers/chunk-7VJK3KHI.js +0 -26
  355. package/dist/cesium/Workers/chunk-7VZHIB6P.js +0 -26
  356. package/dist/cesium/Workers/chunk-7X2YQ6I4.js +0 -27
  357. package/dist/cesium/Workers/chunk-B2SKQ7LU.js +0 -26
  358. package/dist/cesium/Workers/chunk-B4TQDFIE.js +0 -26
  359. package/dist/cesium/Workers/chunk-B6TRTFAA.js +0 -26
  360. package/dist/cesium/Workers/chunk-BK3HCS7I.js +0 -26
  361. package/dist/cesium/Workers/chunk-BOPB43LN.js +0 -26
  362. package/dist/cesium/Workers/chunk-C6DMEJQ7.js +0 -26
  363. package/dist/cesium/Workers/chunk-CN7UN2OZ.js +0 -26
  364. package/dist/cesium/Workers/chunk-CSISXEG7.js +0 -26
  365. package/dist/cesium/Workers/chunk-CUOR5F7T.js +0 -28
  366. package/dist/cesium/Workers/chunk-DGCK3LD2.js +0 -30
  367. package/dist/cesium/Workers/chunk-DXEZYE3K.js +0 -62
  368. package/dist/cesium/Workers/chunk-EXBFEYPQ.js +0 -26
  369. package/dist/cesium/Workers/chunk-FK5KFB6H.js +0 -26
  370. package/dist/cesium/Workers/chunk-HPBHKP5S.js +0 -26
  371. package/dist/cesium/Workers/chunk-JCJ24DHF.js +0 -26
  372. package/dist/cesium/Workers/chunk-JEWHFDAA.js +0 -26
  373. package/dist/cesium/Workers/chunk-JZLZJJQD.js +0 -26
  374. package/dist/cesium/Workers/chunk-KRZBI2MU.js +0 -26
  375. package/dist/cesium/Workers/chunk-KTTUANTJ.js +0 -26
  376. package/dist/cesium/Workers/chunk-LDCAXLGS.js +0 -26
  377. package/dist/cesium/Workers/chunk-LOPN5R3I.js +0 -26
  378. package/dist/cesium/Workers/chunk-MDLPQIMP.js +0 -26
  379. package/dist/cesium/Workers/chunk-MRR3RGFO.js +0 -26
  380. package/dist/cesium/Workers/chunk-NPBZI5YA.js +0 -26
  381. package/dist/cesium/Workers/chunk-NUSW5B6A.js +0 -26
  382. package/dist/cesium/Workers/chunk-OUXRUXNB.js +0 -26
  383. package/dist/cesium/Workers/chunk-QPOPEH3M.js +0 -26
  384. package/dist/cesium/Workers/chunk-R2AN7EKC.js +0 -26
  385. package/dist/cesium/Workers/chunk-RURL6ZX2.js +0 -26
  386. package/dist/cesium/Workers/chunk-SUQM3OSW.js +0 -28
  387. package/dist/cesium/Workers/chunk-UBIRX2SP.js +0 -26
  388. package/dist/cesium/Workers/chunk-VAKC5J5C.js +0 -26
  389. package/dist/cesium/Workers/chunk-VHNZBQTR.js +0 -27
  390. package/dist/cesium/Workers/chunk-VKV642QV.js +0 -26
  391. package/dist/cesium/Workers/chunk-VMSXG4OA.js +0 -26
  392. package/dist/cesium/Workers/chunk-VQZSIOZW.js +0 -26
  393. package/dist/cesium/Workers/chunk-WZUWQMI7.js +0 -26
  394. package/dist/cesium/Workers/chunk-YBI55DLZ.js +0 -26
  395. package/dist/cesium/Workers/chunk-YEJWCH6C.js +0 -26
  396. package/dist/cesium/Workers/chunk-YPDO7SPO.js +0 -26
  397. package/dist/cesium/Workers/chunk-ZYWD6OQH.js +0 -26
  398. package/dist/cesium/Workers/combineGeometry.js +0 -26
  399. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  400. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  401. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  402. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  403. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  404. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  405. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  406. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  407. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  408. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  409. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  410. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  411. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  412. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  413. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  414. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  415. package/dist/cesium/Workers/createGeometry.js +0 -26
  416. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  417. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  418. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  419. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  420. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  421. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  422. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  423. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  424. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  425. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  426. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  427. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  428. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  429. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  430. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  431. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  432. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  433. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  434. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  435. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  436. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  437. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  438. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  439. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  440. package/dist/cesium/Workers/decodeDraco.js +0 -26
  441. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  442. package/dist/cesium/Workers/decodeI3S.js +0 -26
  443. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  444. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  445. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
@@ -12,6 +12,7 @@ import {
12
12
  type Ellipsoid,
13
13
  type Label,
14
14
  } from "@cesium/engine";
15
+ import { DistanceDisplayCondition } from "cesium";
15
16
  import { merge, omit } from "lodash-es";
16
17
  import { type Feature } from "protomaps";
17
18
  import { memo, useCallback, useEffect, useMemo, useRef, type FC } from "react";
@@ -170,6 +171,8 @@ export interface JapanGSIOptimalBVmapLabelImageryProps {
170
171
  height?: number;
171
172
  style?: AnnotationStyle;
172
173
  labelCollection?: LabelCollection;
174
+ near?: number;
175
+ far?: number;
173
176
  }
174
177
 
175
178
  export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImageryProps> = memo(
@@ -180,6 +183,8 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
180
183
  height = 50,
181
184
  style = defaultStyle,
182
185
  labelCollection,
186
+ near,
187
+ far,
183
188
  }) => {
184
189
  const cesiumContext = useCesium();
185
190
 
@@ -282,6 +287,8 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
282
287
  horizontalOrigin: HorizontalOrigin.CENTER,
283
288
  verticalOrigin: VerticalOrigin.BOTTOM,
284
289
  heightReference: HeightReference.CLAMP_TO_GROUND,
290
+ distanceDisplayCondition:
291
+ near || far ? new DistanceDisplayCondition(near, far) : undefined,
285
292
  disableDepthTestDistance: Infinity,
286
293
  ...styleOptions,
287
294
  };
@@ -308,7 +315,7 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
308
315
  scene?.postRender.addEventListener(removeLabels);
309
316
  }
310
317
  };
311
- }, [style, annotations, scene, labelCollection]);
318
+ }, [style, annotations, scene, labelCollection, near, far]);
312
319
 
313
320
  useEffect(() => {
314
321
  updateVisibility();
@@ -143,7 +143,9 @@ const LabelImageryCollection: FC<{
143
143
  imageriesAtom: Atom<KeyedImagery[]>;
144
144
  style?: AnnotationStyle;
145
145
  labelCollection?: LabelCollection;
146
- }> = ({ imageryProvider, imageriesAtom, style, labelCollection }) => {
146
+ near?: number;
147
+ far?: number;
148
+ }> = ({ imageryProvider, imageriesAtom, style, labelCollection, near, far }) => {
147
149
  const imageries = useAtomValue(imageriesAtom);
148
150
  return (
149
151
  <>
@@ -155,6 +157,8 @@ const LabelImageryCollection: FC<{
155
157
  descendants={imagery.descendants}
156
158
  style={style}
157
159
  labelCollection={labelCollection}
160
+ near={near}
161
+ far={far}
158
162
  />
159
163
  </Suspense>
160
164
  ))}
@@ -164,9 +168,15 @@ const LabelImageryCollection: FC<{
164
168
 
165
169
  export interface VectorMapLabelProps {
166
170
  style?: Record<string, any>;
171
+ near?: number;
172
+ far?: number;
167
173
  }
168
174
 
169
- export const JapanGSIOptimalBVmapVectorMapLabel: FC<VectorMapLabelProps> = ({ style }) => {
175
+ export const JapanGSIOptimalBVmapVectorMapLabel: FC<VectorMapLabelProps> = ({
176
+ style,
177
+ near,
178
+ far,
179
+ }) => {
170
180
  const [imageryProvider, setImageryProvider] =
171
181
  useState<JapanGSIOptimalBVmapLabelImageryProvider>();
172
182
  const setRef = useCallback((handle: CesiumComponentRef<CesiumImageryLayer> | null) => {
@@ -251,6 +261,8 @@ export const JapanGSIOptimalBVmapVectorMapLabel: FC<VectorMapLabelProps> = ({ st
251
261
  imageriesAtom={imageriesAtom}
252
262
  style={style}
253
263
  labelCollection={labels}
264
+ near={near}
265
+ far={far}
254
266
  />
255
267
  )}
256
268
  </>
@@ -8,6 +8,8 @@ export interface TileLabelConfig {
8
8
  labelType: "japan_gsi_optimal_bvmap";
9
9
  fillColor?: string;
10
10
  outlineColor?: string;
11
+ near?: number;
12
+ far?: number;
11
13
  style: Record<string, any>;
12
14
  }
13
15
 
@@ -23,7 +25,14 @@ const LabelImageryLayers = memo(
23
25
  if (!label) return null;
24
26
  switch (label.labelType) {
25
27
  case "japan_gsi_optimal_bvmap":
26
- return <JapanGSIOptimalBVmapVectorMapLabel key={label.id} style={label.style} />;
28
+ return (
29
+ <JapanGSIOptimalBVmapVectorMapLabel
30
+ key={label.id}
31
+ style={label.style}
32
+ near={label.near}
33
+ far={label.far}
34
+ />
35
+ );
27
36
  default:
28
37
  return null;
29
38
  }
@@ -24,17 +24,6 @@ export const tiles = {
24
24
  IonImageryProvider.fromAssetId(IonWorldImageryStyle.ROAD, {
25
25
  accessToken: cesiumIonAccessToken,
26
26
  }).catch(console.error),
27
- stamen_watercolor: () =>
28
- new OpenStreetMapImageryProvider({
29
- url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/",
30
- credit: "Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA.",
31
- fileExtension: "jpg",
32
- }),
33
- stamen_toner: () =>
34
- new OpenStreetMapImageryProvider({
35
- url: "https://stamen-tiles.a.ssl.fastly.net/toner/",
36
- credit: "Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA.",
37
- }),
38
27
  open_street_map: () =>
39
28
  new OpenStreetMapImageryProvider({
40
29
  url: "https://a.tile.openstreetmap.org/",
@@ -0,0 +1,55 @@
1
+ import { Cartesian3, Entity, JulianDate, PolygonHierarchy } from "cesium";
2
+
3
+ import { Geometry } from "../../../mantle";
4
+
5
+ export function getMarkerCoordinates(
6
+ entity: Entity,
7
+ currentTime: JulianDate,
8
+ ): [number, number, number] {
9
+ const position = entity.position?.getValue(currentTime) as Cartesian3 | undefined;
10
+ return [position?.x ?? 0, position?.y ?? 0, position?.z ?? 0];
11
+ }
12
+
13
+ export function getGeometryFromEntity(currentTime: JulianDate, entity: Entity) {
14
+ if (entity.point || entity.billboard || entity.label) {
15
+ const coordinates = getMarkerCoordinates(entity, currentTime);
16
+
17
+ const geometry: Geometry = {
18
+ type: "Point",
19
+ coordinates,
20
+ };
21
+ return geometry;
22
+ }
23
+
24
+ if (entity.polyline) {
25
+ const positions = entity.polyline?.positions?.getValue(currentTime) as Cartesian3[];
26
+ const coordinates = positions?.map(position => [
27
+ position?.x ?? 0,
28
+ position?.y ?? 0,
29
+ position?.z ?? 0,
30
+ ]);
31
+
32
+ const geometry: Geometry = {
33
+ type: "LineString",
34
+ coordinates,
35
+ };
36
+ return geometry;
37
+ }
38
+
39
+ if (entity.polygon) {
40
+ const hierarchy = entity.polygon?.hierarchy?.getValue(currentTime) as PolygonHierarchy;
41
+ const coordinates = hierarchy?.positions?.map(position => [
42
+ position?.x ?? 0,
43
+ position?.y ?? 0,
44
+ position?.z ?? 0,
45
+ ]);
46
+
47
+ const geometry: Geometry = {
48
+ type: "Polygon",
49
+ coordinates: [coordinates],
50
+ };
51
+ return geometry;
52
+ }
53
+
54
+ return undefined;
55
+ }
@@ -32,8 +32,10 @@ import {
32
32
  cartesianToLatLngHeight,
33
33
  getExtrudedHeight,
34
34
  getOverriddenScreenSpaceCameraOptions,
35
+ getCredits,
35
36
  } from "../common";
36
37
  import { attachTag, getTag } from "../Feature";
38
+ import { getGeometryFromEntity } from "../helpers/getGeometryFromEntity";
37
39
  import { PickedFeature, pickManyFromViewportAsFeature } from "../pickMany";
38
40
  import { createGeometry } from "../Sketch/createGeometry";
39
41
  import { CursorType } from "../types";
@@ -259,15 +261,31 @@ export default function useEngineRef(
259
261
  }
260
262
  return;
261
263
  },
262
- getExtrudedHeight: (position, windowPosition) => {
264
+ getExtrudedHeight: (position, windowPosition, allowNegative) => {
263
265
  const viewer = cesium.current?.cesiumElement;
264
266
  if (!viewer || viewer.isDestroyed()) return;
265
267
  return getExtrudedHeight(
266
268
  viewer.scene,
267
269
  new Cesium.Cartesian3(position[0], position[1], position[2]),
268
270
  new Cesium.Cartesian2(windowPosition[0], windowPosition[1]),
271
+ allowNegative,
269
272
  );
270
273
  },
274
+ getExtrudedPoint: (position, extrudedHeight) => {
275
+ if (!position || !extrudedHeight) return;
276
+ const viewer = cesium.current?.cesiumElement;
277
+ if (!viewer || viewer.isDestroyed()) return;
278
+ const point = new Cesium.Cartesian3(position[0], position[1], position[2]);
279
+ const cartesianScratch = new Cesium.Cartesian3();
280
+ const normal = viewer.scene?.globe.ellipsoid.geodeticSurfaceNormal(point, cartesianScratch);
281
+ if (!normal) return;
282
+ const extrudedPoint = Cesium.Cartesian3.add(
283
+ point,
284
+ Cesium.Cartesian3.multiplyByScalar(normal, extrudedHeight, cartesianScratch),
285
+ cartesianScratch,
286
+ );
287
+ return [extrudedPoint.x, extrudedPoint.y, extrudedPoint.z];
288
+ },
271
289
  getSurfaceDistance: (point1, point2) => {
272
290
  const viewer = cesium.current?.cesiumElement;
273
291
  if (!viewer || viewer.isDestroyed()) return;
@@ -831,6 +849,7 @@ export default function useEngineRef(
831
849
  tag.computedFeature ?? {
832
850
  type: "computedFeature",
833
851
  id: tag.featureId,
852
+ geometry: getGeometryFromEntity(viewer.clock.currentTime, entity),
834
853
  properties: convertEntityProperties(viewer.clock.currentTime, entity),
835
854
  metaData: {
836
855
  description: convertEntityDescription(viewer.clock.currentTime, entity),
@@ -938,6 +957,32 @@ export default function useEngineRef(
938
957
  tickEventCallback.current = tickEventCallback.current.filter(c => c !== cb) || [];
939
958
  },
940
959
  tickEventCallback,
960
+ calcRectangleControlPoint: (p1: Position3d, p2: Position3d, p3: Position3d) => {
961
+ const pp1 = new Cesium.Cartesian3(...p1);
962
+ const pp2 = new Cesium.Cartesian3(...p2);
963
+ const pp3 = new Cesium.Cartesian3(...p3);
964
+ const cartesianScratch1 = new Cesium.Cartesian3();
965
+ const cartesianScratch2 = new Cesium.Cartesian3();
966
+ const projection = Cesium.Cartesian3.projectVector(
967
+ Cesium.Cartesian3.subtract(pp3, pp1, cartesianScratch1),
968
+ Cesium.Cartesian3.subtract(pp2, pp1, cartesianScratch2),
969
+ cartesianScratch1,
970
+ );
971
+ const offset = Cesium.Cartesian3.subtract(
972
+ pp3,
973
+ Cesium.Cartesian3.add(pp1, projection, cartesianScratch1),
974
+ cartesianScratch2,
975
+ );
976
+ const pp4 = Cesium.Cartesian3.midpoint(pp1, pp2, cartesianScratch1);
977
+ const pp5 = Cesium.Cartesian3.add(pp4, offset, cartesianScratch2);
978
+ const p5 = [pp5.x, pp5.y, pp5.z] as Position3d;
979
+ return [p1, p2, p5];
980
+ },
981
+ getCredits: () => {
982
+ const viewer = cesium.current?.cesiumElement;
983
+ if (!viewer || viewer.isDestroyed()) return;
984
+ return getCredits(viewer);
985
+ },
941
986
  };
942
987
  }, [cesium]);
943
988
 
@@ -143,7 +143,7 @@ const useTerrainHeatmap = ({
143
143
  [
144
144
  "#ifdef APPLY_COLOR_TO_ALPHA",
145
145
  "vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);",
146
- "colorDiff.r = max(max(colorDiff.r, colorDiff.g), colorDiff.b);",
146
+ "colorDiff.r = czm_maximumComponent(colorDiff);",
147
147
  "alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);",
148
148
  "#endif",
149
149
  ],
@@ -27,6 +27,7 @@ import type {
27
27
  import { e2eAccessToken, setE2ECesiumViewer } from "../../e2eConfig";
28
28
  import { ComputedFeature, DataType, SelectedFeatureInfo, LatLng, Camera } from "../../mantle";
29
29
  import {
30
+ Credit,
30
31
  LayerLoadEvent,
31
32
  LayerSelectWithRectEnd,
32
33
  LayerSelectWithRectMove,
@@ -37,7 +38,7 @@ import {
37
38
  import { TimelineManagerRef } from "../../Map/useTimelineManager";
38
39
  import { FEATURE_FLAGS } from "../../Visualizer/featureFlags";
39
40
 
40
- import { isSelectable } from "./common";
41
+ import { getCredits, isSelectable } from "./common";
41
42
  import { getTag, type Context as FeatureContext } from "./Feature";
42
43
  import { arrayToCartecian3 } from "./helpers/sphericalHaromic";
43
44
  import useCamera from "./hooks/useCamera";
@@ -89,6 +90,7 @@ export default ({
89
90
  onLayerLoad,
90
91
  onCameraChange,
91
92
  onMount,
93
+ onCreditsUpdate,
92
94
  }: {
93
95
  ref: React.ForwardedRef<EngineRef>;
94
96
  property?: ViewerProperty;
@@ -128,6 +130,7 @@ export default ({
128
130
  onLayerLoad?: (e: LayerLoadEvent) => void;
129
131
  onCameraChange?: (camera: Camera) => void;
130
132
  onMount?: () => void;
133
+ onCreditsUpdate?: (credits: Credit[]) => void;
131
134
  }) => {
132
135
  const cesium = useRef<CesiumComponentRef<CesiumViewer>>(null);
133
136
 
@@ -557,8 +560,11 @@ export default ({
557
560
  if (pickRay) {
558
561
  const l = await scene.imageryLayers.pickImageryLayerFeatures(pickRay, scene);
559
562
 
560
- // NOTE: For now we only send the first selected feature to onLayerSelect instead of sending all of them: @pyshx
561
- const f = l?.[0];
563
+ // Find the topmost overlaid feature.
564
+ const f = l?.findLast(f => {
565
+ const appearanceType = f?.data?.appearanceType;
566
+ return appearanceType && f?.data?.feature?.[appearanceType]?.show !== false;
567
+ });
562
568
 
563
569
  const appearanceType = f?.data?.appearanceType;
564
570
 
@@ -648,6 +654,22 @@ export default ({
648
654
  viewer.scene.requestRender();
649
655
  }, []);
650
656
 
657
+ const onCreditsUpdateRef = useRef(onCreditsUpdate);
658
+ onCreditsUpdateRef.current = onCreditsUpdate;
659
+ const updateCredits = useCallback(() => {
660
+ if (!onCreditsUpdateRef.current) return;
661
+ // currently we don't have a proper way to get the credits update event
662
+ // wait for 3 seconds to get latest credits
663
+ // some internal property is been used here.
664
+ setTimeout(() => {
665
+ if (!onCreditsUpdateRef.current) return;
666
+ const viewer = cesium.current?.cesiumElement;
667
+ if (!viewer || viewer.isDestroyed()) return;
668
+ const credits: Credit[] = getCredits(viewer) ?? [];
669
+ onCreditsUpdateRef.current(credits);
670
+ }, 3000);
671
+ }, []);
672
+
651
673
  const context = useMemo<FeatureContext>(
652
674
  () => ({
653
675
  selectionReason,
@@ -662,8 +684,17 @@ export default ({
662
684
  toXYZ: engineAPI.toXYZ,
663
685
  toWindowPosition: engineAPI.toWindowPosition,
664
686
  isPositionVisible: engineAPI.isPositionVisible,
687
+ updateCredits,
665
688
  }),
666
- [selectionReason, engineAPI, onLayerEdit, onLayerVisibility, onLayerLoad, timelineManagerRef],
689
+ [
690
+ selectionReason,
691
+ engineAPI,
692
+ onLayerEdit,
693
+ onLayerVisibility,
694
+ onLayerLoad,
695
+ timelineManagerRef,
696
+ updateCredits,
697
+ ],
667
698
  );
668
699
 
669
700
  useEffect(() => {
@@ -728,6 +759,14 @@ export default ({
728
759
  unmountCamera?.();
729
760
  }, [unmountCamera]);
730
761
 
762
+ const handleTilesChange = useCallback(() => {
763
+ updateCredits();
764
+ }, [updateCredits]);
765
+
766
+ const handleTerrainProviderChange = useCallback(() => {
767
+ updateCredits();
768
+ }, [updateCredits]);
769
+
731
770
  return {
732
771
  cesium,
733
772
  cesiumIonAccessToken,
@@ -747,6 +786,8 @@ export default ({
747
786
  handleClick,
748
787
  handleMount,
749
788
  handleUnmount,
789
+ handleTilesChange,
790
+ handleTerrainProviderChange,
750
791
  };
751
792
  };
752
793
 
@@ -47,6 +47,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
47
47
  shouldRender,
48
48
  layerSelectionReason,
49
49
  meta,
50
+ displayCredits,
50
51
  layersRef,
51
52
  featureFlags,
52
53
  requestingRenderMode,
@@ -63,6 +64,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
63
64
  onMount,
64
65
  onLayerVisibility,
65
66
  onLayerLoad,
67
+ onCreditsUpdate,
66
68
  },
67
69
  ref,
68
70
  ) => {
@@ -85,6 +87,8 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
85
87
  handleClick,
86
88
  handleMount,
87
89
  handleUnmount,
90
+ handleTilesChange,
91
+ handleTerrainProviderChange,
88
92
  } = useHooks({
89
93
  ref,
90
94
  property,
@@ -112,6 +116,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
112
116
  onLayerLoad,
113
117
  onCameraChange,
114
118
  onMount,
119
+ onCreditsUpdate,
115
120
  });
116
121
 
117
122
  return (
@@ -133,7 +138,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
133
138
  navigationHelpButton={false}
134
139
  projectionPicker={false}
135
140
  sceneModePicker={false}
136
- creditContainer={creditContainer}
141
+ creditContainer={displayCredits ? undefined : creditContainer}
137
142
  style={{
138
143
  width: small ? "300px" : "auto",
139
144
  height: small ? "300px" : "100%",
@@ -158,7 +163,11 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
158
163
  onWheel={mouseEventHandles.wheel}>
159
164
  <Event onMount={handleMount} onUnmount={handleUnmount} />
160
165
  <Clock timelineManagerRef={timelineManagerRef} />
161
- <ImageryLayers tiles={property?.tiles} cesiumIonAccessToken={cesiumIonAccessToken} />
166
+ <ImageryLayers
167
+ tiles={property?.tiles}
168
+ cesiumIonAccessToken={cesiumIonAccessToken}
169
+ onTilesChange={handleTilesChange}
170
+ />
162
171
  <LabelImageryLayers tileLabels={property?.tileLabels} />
163
172
  <Indicator property={property} timelineManagerRef={timelineManagerRef} />
164
173
  <ScreenSpaceEventHandler useDefault>
@@ -252,7 +261,11 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
252
261
  saturationShift={property?.sky?.skyAtmosphere?.saturationShift}
253
262
  brightnessShift={property?.sky?.skyAtmosphere?.brightnessShift}
254
263
  />
255
- <Globe property={property} cesiumIonAccessToken={cesiumIonAccessToken} />
264
+ <Globe
265
+ property={property}
266
+ cesiumIonAccessToken={cesiumIonAccessToken}
267
+ onTerrainProviderChange={handleTerrainProviderChange}
268
+ />
256
269
  <featureContext.Provider value={context}>{ready ? children : null}</featureContext.Provider>
257
270
  <AmbientOcclusion
258
271
  {...AMBIENT_OCCLUSION_QUALITY[property?.render?.ambientOcclusion?.quality || "low"]}
@@ -109,7 +109,11 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
109
109
  return true;
110
110
  }
111
111
 
112
- const curFeatures = processGeoJSON(currentLayer.data.value);
112
+ const curFeatures = processGeoJSON(
113
+ currentLayer.data.value,
114
+ undefined,
115
+ currentLayer.data.idProperty,
116
+ );
113
117
  if (curFeatures.length === prevFeatures?.length) {
114
118
  return !curFeatures.every((cur, i) => {
115
119
  const prev = prevFeatures[i];
@@ -10,54 +10,85 @@ export async function fetchGeoJSON(
10
10
  options?: FetchOptions,
11
11
  ): Promise<Feature[] | void> {
12
12
  const d = data.url ? await (await f(data.url, options)).json() : data.value;
13
- return processGeoJSON(d, range);
13
+ return processGeoJSON(d, range, data.idProperty);
14
14
  }
15
15
 
16
- export function processGeoJSON(geojson: GeoJSON, range?: DataRange): Feature[] {
16
+ export function processGeoJSON(
17
+ geojson: GeoJSON,
18
+ range?: DataRange,
19
+ idProperty?: string,
20
+ ): Feature[] {
17
21
  if (geojson.type === "FeatureCollection") {
18
- return geojson.features.flatMap(f => processGeoJSON(f, range));
22
+ return geojson.features.flatMap(f => processGeoJSON(f, range, idProperty));
19
23
  }
20
24
 
21
25
  if (geojson.type === "Feature") {
22
26
  const geo = geojson.geometry;
27
+ if (geo.type === "GeometryCollection") {
28
+ return geo.geometries.flatMap(geometry => {
29
+ return processGeoJSON(
30
+ {
31
+ ...geojson,
32
+ geometry,
33
+ },
34
+ undefined,
35
+ idProperty,
36
+ );
37
+ });
38
+ }
23
39
  if (geo.type === "MultiPoint") {
24
40
  return geo.coordinates.flatMap(coord => {
25
- return processGeoJSON({
26
- ...geojson,
27
- geometry: {
28
- type: "Point",
29
- coordinates: coord,
41
+ return processGeoJSON(
42
+ {
43
+ ...geojson,
44
+ geometry: {
45
+ type: "Point",
46
+ coordinates: coord,
47
+ },
30
48
  },
31
- });
49
+ undefined,
50
+ idProperty,
51
+ );
32
52
  });
33
53
  }
34
54
  if (geo.type === "MultiLineString") {
35
55
  return geo.coordinates.flatMap(coord => {
36
- return processGeoJSON({
37
- ...geojson,
38
- geometry: {
39
- type: "LineString",
40
- coordinates: coord,
56
+ return processGeoJSON(
57
+ {
58
+ ...geojson,
59
+ geometry: {
60
+ type: "LineString",
61
+ coordinates: coord,
62
+ },
41
63
  },
42
- });
64
+ undefined,
65
+ idProperty,
66
+ );
43
67
  });
44
68
  }
45
69
  if (geo.type === "MultiPolygon") {
46
70
  return geo.coordinates.flatMap(coord => {
47
- return processGeoJSON({
48
- ...geojson,
49
- geometry: {
50
- type: "Polygon",
51
- coordinates: coord,
71
+ return processGeoJSON(
72
+ {
73
+ ...geojson,
74
+ geometry: {
75
+ type: "Polygon",
76
+ coordinates: coord,
77
+ },
52
78
  },
53
- });
79
+ undefined,
80
+ idProperty,
81
+ );
54
82
  });
55
83
  }
56
84
 
57
85
  return [
58
86
  {
59
87
  type: "feature",
60
- id: generateRandomString(12),
88
+ id:
89
+ idProperty && geojson.properties && geojson.properties[idProperty]
90
+ ? geojson.properties[idProperty]
91
+ : generateRandomString(12),
61
92
  geometry:
62
93
  geo.type === "Point" || geo.type === "LineString" || geo.type === "Polygon"
63
94
  ? geo
@@ -102,6 +102,7 @@ export type PolygonAppearance = {
102
102
  stroke?: boolean;
103
103
  strokeColor?: string;
104
104
  strokeWidth?: number;
105
+ height?: number;
105
106
  heightReference?: "none" | "clamp" | "relative";
106
107
  shadows?: "disabled" | "enabled" | "cast_only" | "receive_only";
107
108
  lineJoin?: CanvasLineJoin;
@@ -194,13 +195,12 @@ export type Cesium3DTilesAppearance = {
194
195
  color?: string;
195
196
  styleUrl?: string;
196
197
  shadows?: "disabled" | "enabled" | "cast_only" | "receive_only";
197
- colorBlendMode?: "highlight" | "replace" | "mix" | "default";
198
+ colorBlendMode?: "highlight" | "replace" | "mix";
198
199
  edgeWidth?: number;
199
200
  edgeColor?: string;
200
201
  selectedFeatureColor?: string; // This doesn't support expression
201
202
  disableIndexingFeature?: boolean;
202
203
  tileset?: string;
203
- apiKey?: string;
204
204
  experimental_clipping?: EXPERIMENTAL_clipping;
205
205
  pointSize?: number;
206
206
  meta?: unknown;
@@ -76,6 +76,9 @@ export type Data = {
76
76
  updateInterval?: number; // milliseconds
77
77
  parameters?: Record<string, any>;
78
78
  idProperty?: string;
79
+ serviceTokens?: {
80
+ googleMapApiKey?: string;
81
+ };
79
82
  time?: {
80
83
  property?: string;
81
84
  interval?: number; // milliseconds
@@ -1,4 +1,4 @@
1
- import { useState, useEffect, useMemo, useRef } from "react";
1
+ import { useState, useEffect, useRef } from "react";
2
2
 
3
3
  export const useImage = (src?: string): HTMLImageElement | undefined => {
4
4
  const imgRef = useRef<HTMLImageElement>();
@@ -23,13 +23,3 @@ export const useImage = (src?: string): HTMLImageElement | undefined => {
23
23
 
24
24
  return img;
25
25
  };
26
-
27
- export const useCanvas = (cb: (canvas: HTMLCanvasElement) => void): string => {
28
- const can = useMemo(() => document.createElement("canvas"), []);
29
- const [data, setData] = useState<string>("");
30
- useEffect(() => {
31
- cb(can);
32
- setData(can.toDataURL());
33
- }, [can, cb]);
34
- return data;
35
- };