leaflet-city-mapper 0.1.0 → 0.1.1

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 (515) hide show
  1. package/README.md +1 -1
  2. package/dist/leaflet-city-mapper-src.js.map +1 -1
  3. package/dist/leaflet-city-mapper-worker-src.js.map +1 -1
  4. package/dist/leaflet-city-mapper-worker.js.map +1 -1
  5. package/dist/leaflet-city-mapper.js.map +1 -1
  6. package/libs/leaflet-lens.js +151 -151
  7. package/libs/leaflet.js +3 -3
  8. package/libs/openlayers-bindings.js +1129 -1129
  9. package/libs/openlayers-bindings.min.js.map +1 -1
  10. package/package.json +2 -4
  11. package/src/animations/cancelCameraAnimation.js +19 -19
  12. package/src/animations/mapStopPitchBearingAnimation.js +10 -10
  13. package/src/animations/scheduleCameraAnimation.js +15 -15
  14. package/src/animations/scheduleMarkerPan.js +14 -14
  15. package/src/animations/updateZoomCamera.js +25 -25
  16. package/src/archives/findDirectoryEntry.js +17 -17
  17. package/src/archives/findTile.js +45 -45
  18. package/src/archives/getDirectoryEntries.js +30 -30
  19. package/src/archives/getTileData.js +26 -26
  20. package/src/archives/readArchiveRange.js +48 -48
  21. package/src/astronomy/solarTime.js +21 -21
  22. package/src/camera/cameraMapReady.js +9 -9
  23. package/src/camera/cleanupCameraMap.js +13 -13
  24. package/src/camera/constrainCameraToBounds.js +3 -3
  25. package/src/camera/createSceneCamera.js +25 -25
  26. package/src/camera/getBearing.js +10 -10
  27. package/src/camera/getPitch.js +10 -10
  28. package/src/camera/mapGetBoundsCenterZoom.js +14 -14
  29. package/src/camera/mapLimitOffset.js +17 -17
  30. package/src/camera/mapPanBy.js +14 -14
  31. package/src/camera/setBearing.js +13 -13
  32. package/src/camera/setPitch.js +13 -13
  33. package/src/cog/decodeCogTile.js +37 -37
  34. package/src/cog/finiteCogValues.js +12 -12
  35. package/src/cog/getCogAssetEntry.js +26 -26
  36. package/src/cog/getCogBase.js +22 -22
  37. package/src/cog/getCogHeader.js +10 -10
  38. package/src/cog/getCogProfile.js +25 -25
  39. package/src/cog/getCogTile.js +25 -25
  40. package/src/cog/getColorTile.js +38 -38
  41. package/src/cog/getElevationTile.js +29 -29
  42. package/src/cog/hasCogProjection.js +16 -16
  43. package/src/cog/initCog.js +13 -13
  44. package/src/cog/invalidCogFullResponse.js +10 -10
  45. package/src/cog/openCog.js +40 -40
  46. package/src/cog/openCogAsset.js +22 -22
  47. package/src/cog/readCog.js +39 -39
  48. package/src/cog/readCogBlock.js +19 -19
  49. package/src/cog/readCogBody.js +30 -30
  50. package/src/cog/readCogDirectories.js +32 -32
  51. package/src/cog/readCogDirectory.js +34 -34
  52. package/src/cog/readCogLevel.js +36 -36
  53. package/src/cog/readCogTag.js +28 -28
  54. package/src/cog/validCogDimensions.js +15 -15
  55. package/src/cog/validCogEncoding.js +18 -18
  56. package/src/cog/validCogGeoArrays.js +17 -17
  57. package/src/cog/validCogGrid.js +22 -22
  58. package/src/cog/validCogTileCoordinates.js +13 -13
  59. package/src/cog/validateCogContainer.js +17 -17
  60. package/src/cog/validateCogContentRange.js +18 -18
  61. package/src/cog/validateCogOffsets.js +19 -19
  62. package/src/cog/validateCogRange.js +16 -16
  63. package/src/cog/validateCogResponse.js +26 -26
  64. package/src/collision/collectIntersections.js +41 -41
  65. package/src/collision/hiddenLightHit.js +19 -19
  66. package/src/collision/indexTriangle.js +18 -18
  67. package/src/collision/insideMesh.js +47 -47
  68. package/src/collision/insideWalker.js +52 -52
  69. package/src/collision/intersectMeshes.js +40 -40
  70. package/src/collision/localRay.js +31 -31
  71. package/src/collision/mergeHits.js +19 -19
  72. package/src/collision/rayBounds.js +28 -28
  73. package/src/collision/readTriangle.js +32 -32
  74. package/src/collision/trafficCollision.js +23 -23
  75. package/src/collision/transformTriangle.js +18 -18
  76. package/src/collision/triangleDistance.js +34 -34
  77. package/src/collision/vertexCount.js +11 -11
  78. package/src/collision/worldHit.js +30 -30
  79. package/src/controls/acceptPitchDrag.js +10 -10
  80. package/src/controls/acceptRotateDrag.js +9 -9
  81. package/src/controls/addCameraHandler.js +18 -18
  82. package/src/controls/adjustCameraDrag.js +13 -13
  83. package/src/controls/cameraDragContextMenu.js +12 -12
  84. package/src/controls/cameraDragEnd.js +10 -10
  85. package/src/controls/cameraDragMove.js +31 -31
  86. package/src/controls/changeCameraTouch.js +17 -17
  87. package/src/controls/compassOrientation.js +12 -12
  88. package/src/controls/compassRemoveHooks.js +2 -2
  89. package/src/controls/containerResizeRemoveHooks.js +2 -2
  90. package/src/controls/endCameraTouch.js +18 -18
  91. package/src/controls/failCompassPermission.js +10 -10
  92. package/src/controls/finishCameraDrag.js +14 -14
  93. package/src/controls/finishCompassPermission.js +24 -24
  94. package/src/controls/isEditableTarget.js +9 -9
  95. package/src/controls/loadCameraControls.js +18 -18
  96. package/src/controls/moveCameraTouch.js +34 -34
  97. package/src/controls/refreshRotateFocus.js +5 -5
  98. package/src/controls/removeCameraDrag.js +28 -28
  99. package/src/controls/resizeMap.js +7 -7
  100. package/src/controls/rotateButtonClick.js +16 -16
  101. package/src/controls/rotateButtonKeydown.js +20 -20
  102. package/src/controls/rotateControl.js +12 -12
  103. package/src/controls/shiftRotateRemoveHooks.js +2 -2
  104. package/src/controls/shiftRotateWheel.js +15 -15
  105. package/src/core/cameraMarkerOnDrag.js +16 -16
  106. package/src/core/constructLayer.js +16 -16
  107. package/src/core/extendLeafletClass.js +12 -12
  108. package/src/core/extendTerrainPixelBounds.js +41 -41
  109. package/src/core/layerAddInitHook.js +12 -12
  110. package/src/core/layerMergeOptions.js +14 -14
  111. package/src/core/markerInitInteraction.js +10 -10
  112. package/src/core/markerSetIcon.js +14 -14
  113. package/src/core/markerSetRotation.js +19 -19
  114. package/src/core/projectNativePath.js +30 -30
  115. package/src/core/redrawPath.js +11 -11
  116. package/src/core/removeLayer.js +26 -26
  117. package/src/core/setRotation.js +12 -12
  118. package/src/core/whenReady.js +14 -14
  119. package/src/geometry/addBridges.js +36 -36
  120. package/src/geometry/addGeneratedTriangle.js +10 -10
  121. package/src/geometry/appendAreaTriangle.js +32 -32
  122. package/src/geometry/appendNativeTriangle.js +17 -17
  123. package/src/geometry/appendRouteDash.js +33 -33
  124. package/src/geometry/appendRouteSegment.js +28 -28
  125. package/src/geometry/assembleAreaGeometry.js +48 -48
  126. package/src/geometry/bridgeEdge.js +18 -18
  127. package/src/geometry/bridgeFaces.js +22 -22
  128. package/src/geometry/bridgePaths.js +19 -19
  129. package/src/geometry/bridgePolygon.js +37 -37
  130. package/src/geometry/bridgeSides.js +18 -18
  131. package/src/geometry/buildProjectedPoint.js +32 -32
  132. package/src/geometry/buildProjectedPolygon.js +34 -34
  133. package/src/geometry/circleAt.js +20 -20
  134. package/src/geometry/circleGeometry.js +41 -41
  135. package/src/geometry/createModelGeometry.js +44 -44
  136. package/src/geometry/crossVector.js +15 -15
  137. package/src/geometry/dashValues.js +23 -23
  138. package/src/geometry/dashedSegment.js +33 -33
  139. package/src/geometry/diskAt.js +18 -18
  140. package/src/geometry/emitter.js +18 -18
  141. package/src/geometry/fillNativePolygon.js +28 -28
  142. package/src/geometry/generateTreeGeometry.js +18 -18
  143. package/src/geometry/indexBridge.js +36 -36
  144. package/src/geometry/instanceAreaGeometry.js +37 -37
  145. package/src/geometry/line.js +28 -28
  146. package/src/geometry/lineJoin.js +35 -35
  147. package/src/geometry/markerImageBounds.js +20 -20
  148. package/src/geometry/meshShadowBounds.js +33 -33
  149. package/src/geometry/offsetBelowGround.js +10 -10
  150. package/src/geometry/quad.js +23 -23
  151. package/src/geometry/restoreGeometry.js +29 -29
  152. package/src/geometry/roofCoverage.js +33 -33
  153. package/src/geometry/roofFootprint.js +40 -40
  154. package/src/geometry/samePoint.js +11 -11
  155. package/src/geometry/segment.js +32 -32
  156. package/src/geometry/subtractRoofTile.js +28 -28
  157. package/src/geometry/terrainBuffers.js +36 -36
  158. package/src/geometry/terrainTileGeometry.js +28 -28
  159. package/src/geometry/validateTree.js +19 -19
  160. package/src/globals/L.js +6 -6
  161. package/src/globals/cameraFov.js +8 -8
  162. package/src/globals/cogTags.js +6 -6
  163. package/src/globals/colorTexture.js +11 -11
  164. package/src/globals/cosObliquity.js +8 -8
  165. package/src/globals/degrees.js +6 -6
  166. package/src/globals/earthCirc.js +6 -6
  167. package/src/globals/geometryWorkerUrl.js +8 -8
  168. package/src/globals/halfRadians.js +6 -6
  169. package/src/globals/lampDirections.js +13 -13
  170. package/src/globals/layerControlAddItem.js +8 -8
  171. package/src/globals/leafletLayer.js +8 -8
  172. package/src/globals/lightScale.js +6 -6
  173. package/src/globals/mvtTextDecoder.js +6 -6
  174. package/src/globals/nativeScalableStyleKeys.js +6 -6
  175. package/src/globals/sinObliquity.js +8 -8
  176. package/src/globals/tau.js +6 -6
  177. package/src/globals/vectorStyleNamedColors.js +13 -13
  178. package/src/globals/vectorTileEvents.js +6 -6
  179. package/src/globals/workerCogSource.js +6 -6
  180. package/src/gpu/initializeRendererResources.js +39 -39
  181. package/src/gpu/initializeSharedRenderer.js +59 -59
  182. package/src/gpu/mountRenderer.js +25 -25
  183. package/src/layer-controls/layerControlInputId.js +18 -18
  184. package/src/layer-controls/layerCountTitle.js +16 -16
  185. package/src/layer-controls/placeEntryElement.js +29 -29
  186. package/src/layer-controls/renderLayerCount.js +28 -28
  187. package/src/lighting/visitLightCells.js +26 -26
  188. package/src/lighting/writeLightCell.js +14 -14
  189. package/src/materials/createProgramLayout.js +44 -44
  190. package/src/materials/createProgramUniforms.js +25 -25
  191. package/src/materials/modelMaterialFor.js +29 -29
  192. package/src/materials/prepareMeshCutout.js +21 -21
  193. package/src/materials/terrainRasterProgram.js +65 -65
  194. package/src/materials/validateRoofMaterial.js +17 -17
  195. package/src/models/applyModelTransform.js +18 -18
  196. package/src/models/buildModelNodes.js +24 -24
  197. package/src/models/createModelContext.js +24 -24
  198. package/src/models/loadBuffer.js +16 -16
  199. package/src/models/loadModelResources.js +22 -22
  200. package/src/models/normalizeAccessor.js +21 -21
  201. package/src/models/prepareModel.js +29 -29
  202. package/src/models/prepareModelGeometry.js +35 -35
  203. package/src/models/prepareModelPrimitive.js +25 -25
  204. package/src/models/readAccessorValue.js +16 -16
  205. package/src/models/readModelAttributes.js +32 -32
  206. package/src/models/readModelIndices.js +28 -28
  207. package/src/models/readSparseAccessor.js +31 -31
  208. package/src/models/releaseModelResources.js +15 -15
  209. package/src/mvt/addMvtCrossings.js +23 -23
  210. package/src/mvt/appendMvtBandTriangles.js +42 -42
  211. package/src/mvt/appendMvtCoordinates.js +20 -20
  212. package/src/mvt/appendMvtPolygonTriangles.js +29 -29
  213. package/src/mvt/beginMvtPath.js +19 -19
  214. package/src/mvt/closeMvtPath.js +16 -16
  215. package/src/mvt/collectMvtEdges.js +29 -29
  216. package/src/mvt/createMvtReader.js +14 -14
  217. package/src/mvt/decodeVectorTile.js +39 -39
  218. package/src/mvt/expectMvtWire.js +11 -11
  219. package/src/mvt/finishMvtPath.js +14 -14
  220. package/src/mvt/finiteMvtCoordinate.js +14 -14
  221. package/src/mvt/groupMvtPolygons.js +35 -35
  222. package/src/mvt/isMvtFallbackError.js +13 -13
  223. package/src/mvt/mergeMvtActiveEdges.js +18 -18
  224. package/src/mvt/mvtEdgeX.js +12 -12
  225. package/src/mvt/mvtPathsVertices.js +15 -15
  226. package/src/mvt/mvtPolygonPaths.js +19 -19
  227. package/src/mvt/numericMvtValue.js +11 -11
  228. package/src/mvt/readMvtFeature.js +46 -46
  229. package/src/mvt/readMvtField.js +17 -17
  230. package/src/mvt/readMvtGeometry.js +42 -42
  231. package/src/mvt/readMvtInteger.js +22 -22
  232. package/src/mvt/readMvtKnownValue.js +30 -30
  233. package/src/mvt/readMvtLayer.js +40 -40
  234. package/src/mvt/readMvtMessage.js +18 -18
  235. package/src/mvt/readMvtNumber.js +18 -18
  236. package/src/mvt/readMvtNumbers.js +18 -18
  237. package/src/mvt/readMvtString.js +14 -14
  238. package/src/mvt/readMvtValue.js +29 -29
  239. package/src/mvt/skipMvtField.js +22 -22
  240. package/src/mvt/sortMvtActiveEdges.js +20 -20
  241. package/src/mvt/sortedMvtLevels.js +29 -29
  242. package/src/mvt/takeMvtBytes.js +18 -18
  243. package/src/mvt/tessellateVectorRings.js +26 -26
  244. package/src/mvt/triangulateVectorRings.js +23 -23
  245. package/src/native/beforeNativeRender.js +21 -21
  246. package/src/native/bypassNativeEvent.js +21 -21
  247. package/src/native/canScaleNativeStyle.js +26 -26
  248. package/src/native/compareNativeHits.js +10 -10
  249. package/src/native/createNativeMesh.js +46 -46
  250. package/src/native/forwardNativeError.js +8 -8
  251. package/src/native/getGridTerrainTile.js +47 -47
  252. package/src/native/gridTerrainElevation.js +34 -34
  253. package/src/native/isCurrentNativeLayer.js +11 -11
  254. package/src/native/loadGridTerrain.js +36 -36
  255. package/src/native/nativeEventSource.js +27 -27
  256. package/src/native/nativeProgram.js +28 -28
  257. package/src/native/nativeTerrainElevation.js +27 -27
  258. package/src/native/nativeVectorGeometry.js +30 -30
  259. package/src/native/orderNativeGridLayer.js +20 -20
  260. package/src/native/prepareGridTerrainRequests.js +23 -23
  261. package/src/native/pruneNativeResources.js +25 -25
  262. package/src/native/readyNativeGPU.js +13 -13
  263. package/src/native/rejectNativeReady.js +2 -2
  264. package/src/native/removeNativeEvents.js +20 -20
  265. package/src/native/resolveNativeReady.js +2 -2
  266. package/src/native/restoreNativeEvents.js +8 -8
  267. package/src/native/retainGridTerrain.js +15 -15
  268. package/src/native/styleNativeMesh.js +20 -20
  269. package/src/native/syncGridTile.js +28 -28
  270. package/src/native/syncImageOverlay.js +13 -13
  271. package/src/native/syncNativeStrokeAnchors.js +18 -18
  272. package/src/native/syncNativeStrokeZoom.js +34 -34
  273. package/src/native/syncTerrainGridTile.js +38 -38
  274. package/src/native/terrainGridMesh.js +47 -47
  275. package/src/native/updateNativeHover.js +15 -15
  276. package/src/native/updateNativeStrokeRadius.js +14 -14
  277. package/src/picking/hitColliderCell.js +29 -29
  278. package/src/picking/validateCameraInverse.js +15 -15
  279. package/src/projections/displayContainerPoint.js +32 -32
  280. package/src/projections/projectBridgePoint.js +17 -17
  281. package/src/projections/toPoint.js +13 -13
  282. package/src/projections/transformZoomAnimationPoint.js +8 -8
  283. package/src/projections/verticalGroundY.js +14 -14
  284. package/src/raster/rasterTileRange.js +32 -32
  285. package/src/raster/retainRasterTiles.js +21 -21
  286. package/src/rendering/collectVisibleMesh.js +48 -48
  287. package/src/rendering/compareMeshDepth.js +14 -14
  288. package/src/rendering/drawPipeline.js +44 -44
  289. package/src/rendering/nativeStrokeExpansion.js +11 -11
  290. package/src/rendering/prepareFrameBuffer.js +24 -24
  291. package/src/rendering/prepareMeshUniforms.js +36 -36
  292. package/src/rendering/revealRoofMesh.js +43 -43
  293. package/src/scene/addSceneLayer.js +24 -24
  294. package/src/scene/callLayer.js +34 -34
  295. package/src/scene/createLayer.js +13 -13
  296. package/src/scene/getLocation.js +12 -12
  297. package/src/scene/isNativeLayer.js +19 -19
  298. package/src/scene/removeSceneLayer.js +22 -22
  299. package/src/scene/reportLayerError.js +9 -9
  300. package/src/shaders/materialBaseShader.js +26 -26
  301. package/src/shaders/materialSurfaceShader.js +60 -60
  302. package/src/shaders/materialVertexShader.js +89 -89
  303. package/src/shaders/nativeStrokeShader.js +13 -13
  304. package/src/shaders/roofVertexShader.js +16 -16
  305. package/src/shadows/shadowMeshMatches.js +19 -19
  306. package/src/sources/buildAreaFeatures.js +23 -23
  307. package/src/sources/extrusionStyle.js +21 -21
  308. package/src/sources/featureAnchor.js +21 -21
  309. package/src/sources/groundOffset.js +9 -9
  310. package/src/sources/initVectorTiles.js +21 -21
  311. package/src/sources/isVectorTileSource.js +11 -11
  312. package/src/sources/matchesAreaTile.js +17 -17
  313. package/src/sources/pendingSourceAreas.js +28 -28
  314. package/src/sources/prepareAreaGeometryJob.js +34 -34
  315. package/src/sources/projectAreaPolygons.js +25 -25
  316. package/src/sources/readyVectorTiles.js +17 -17
  317. package/src/sunlight/addTimeControlToMap.js +18 -18
  318. package/src/sunlight/addTimeLayer.js +12 -12
  319. package/src/sunlight/initializeTimeControl.js +18 -18
  320. package/src/sunlight/onAddSun.js +37 -37
  321. package/src/sunlight/onAddTimeControl.js +12 -12
  322. package/src/sunlight/onRemoveSun.js +10 -10
  323. package/src/sunlight/removeSun.js +25 -25
  324. package/src/sunlight/removeTimeControl.js +14 -14
  325. package/src/sunlight/removeTimeLayer.js +11 -11
  326. package/src/sunlight/requestSunlightRender.js +12 -12
  327. package/src/sunlight/styleTimeControl.js +13 -13
  328. package/src/sunlight/tickSun.js +10 -10
  329. package/src/sunlight/updateCelestialDisc.js +23 -23
  330. package/src/sunlight/updateSun.js +44 -44
  331. package/src/sunlight/useLiveTime.js +11 -11
  332. package/src/sunlight/useSelectedTime.js +26 -26
  333. package/src/terrain/applyTerrain.js +30 -30
  334. package/src/terrain/copyTerrainTile.js +20 -20
  335. package/src/terrain/loadReadyTerrain.js +6 -6
  336. package/src/terrain/mapElevationOf.js +19 -19
  337. package/src/terrain/readBridges.js +13 -13
  338. package/src/terrain/readyTerrainOf.js +14 -14
  339. package/src/terrain/sampleTerrainTile.js +16 -16
  340. package/src/terrain/terrainTileQueue.js +34 -34
  341. package/src/textures/addImageState.js +13 -13
  342. package/src/textures/bindMeshTextures.js +57 -57
  343. package/src/textures/collectRoofTiles.js +23 -23
  344. package/src/textures/loadModelImage.js +29 -29
  345. package/src/textures/modelTextureFor.js +47 -47
  346. package/src/textures/prepareMeshTextures.js +31 -31
  347. package/src/textures/removeImageState.js +13 -13
  348. package/src/textures/resizeRoofTexture.js +32 -32
  349. package/src/textures/restoreMaterialTextures.js +22 -22
  350. package/src/textures/updateRoofAtlas.js +29 -29
  351. package/src/textures/uploadMeshTexture.js +32 -32
  352. package/src/textures/uploadNativeImage.js +26 -26
  353. package/src/textures/uploadRoofTile.js +29 -29
  354. package/src/traffic/createTrafficMesh.js +17 -17
  355. package/src/traffic/disposeTrafficObject.js +19 -19
  356. package/src/traffic/failTraffic.js +12 -12
  357. package/src/traffic/failedTrafficLoad.js +10 -10
  358. package/src/traffic/fetchTrafficLanes.js +21 -21
  359. package/src/traffic/loadedTrafficLanes.js +21 -21
  360. package/src/traffic/locateTraffic.js +20 -20
  361. package/src/traffic/moveTraffic.js +21 -21
  362. package/src/traffic/readyTraffic.js +10 -10
  363. package/src/traffic/refreshTrafficTrips.js +42 -42
  364. package/src/traffic/routeColor.js +13 -13
  365. package/src/traffic/startTraffic.js +12 -12
  366. package/src/traffic/trafficNow.js +15 -15
  367. package/src/traffic/trafficStatusText.js +13 -13
  368. package/src/traffic/trafficStorage.js +13 -13
  369. package/src/traffic/updateTraffic.js +13 -13
  370. package/src/traffic/updateTrafficLights.js +23 -23
  371. package/src/traffic/updateTrafficPose.js +15 -15
  372. package/src/traffic/updateTrafficTerrain.js +15 -15
  373. package/src/traffic/uploadTrafficLanes.js +27 -27
  374. package/src/transforms/composeLocalTransform.js +23 -23
  375. package/src/transforms/transformNativePoint.js +19 -19
  376. package/src/transforms/worldMatrixChanged.js +26 -26
  377. package/src/triangulation/clipEars.js +32 -32
  378. package/src/triangulation/connectHole.js +30 -30
  379. package/src/triangulation/cross.js +12 -12
  380. package/src/triangulation/equal.js +11 -11
  381. package/src/triangulation/intersects.js +21 -21
  382. package/src/triangulation/mergeHoles.js +19 -19
  383. package/src/triangulation/on.js +13 -13
  384. package/src/triangulation/polygonRings.js +22 -22
  385. package/src/triangulation/validateArea.js +19 -19
  386. package/src/utils/compareDistance.js +11 -11
  387. package/src/utils/yieldTask.js +12 -12
  388. package/src/vector-style/appendQuotedStyleCharacter.js +30 -30
  389. package/src/vector-style/arrayContainsRange.js +18 -18
  390. package/src/vector-style/evaluateBoolean.js +31 -31
  391. package/src/vector-style/evaluateCoalesceOrCase.js +34 -34
  392. package/src/vector-style/evaluateComparison.js +29 -29
  393. package/src/vector-style/evaluateIExpression.js +21 -21
  394. package/src/vector-style/evaluateInput.js +16 -16
  395. package/src/vector-style/evaluateInterpolate.js +36 -36
  396. package/src/vector-style/evaluateMatch.js +21 -21
  397. package/src/vector-style/evaluateMath.js +26 -26
  398. package/src/vector-style/evaluateMembership.js +29 -29
  399. package/src/vector-style/evaluateNegation.js +26 -26
  400. package/src/vector-style/evaluatePrimitive.js +21 -21
  401. package/src/vector-style/evaluateStep.js +20 -20
  402. package/src/vector-style/evaluateStyle.js +43 -43
  403. package/src/vector-style/evaluateToExpression.js +27 -27
  404. package/src/vector-style/fillVectorPaint.js +26 -26
  405. package/src/vector-style/lineVectorPaint.js +31 -31
  406. package/src/vector-style/parseFunctionalColor.js +23 -23
  407. package/src/vector-style/parseHexColor.js +20 -20
  408. package/src/vector-style/parseVectorStyle.js +20 -20
  409. package/src/vector-style/readPaintValue.js +17 -17
  410. package/src/vector-style/removeTrailingCommas.js +19 -19
  411. package/src/vector-style/scaleDashArray.js +25 -25
  412. package/src/vector-style/skipStyleComment.js +20 -20
  413. package/src/vector-style/stripStyleComments.js +28 -28
  414. package/src/vector-style/styleColor.js +18 -18
  415. package/src/vector-style/validateVectorLayers.js +18 -18
  416. package/src/vector-style/vectorPaint.js +17 -17
  417. package/src/vector-style/visibleStyle.js +16 -16
  418. package/src/vector-tiles/appendVectorBatch.js +34 -34
  419. package/src/vector-tiles/attachVectorTileBatch.js +25 -25
  420. package/src/vector-tiles/attachVectorTileBatches.js +26 -26
  421. package/src/vector-tiles/compareVectorLabelPriority.js +11 -11
  422. package/src/vector-tiles/compareVectorTileDistance.js +11 -11
  423. package/src/vector-tiles/createVectorLabel.js +37 -37
  424. package/src/vector-tiles/forwardVectorTileError.js +10 -10
  425. package/src/vector-tiles/loadVectorSprite.js +14 -14
  426. package/src/vector-tiles/loadVectorTile.js +45 -45
  427. package/src/vector-tiles/onVectorTileAdd.js +44 -44
  428. package/src/vector-tiles/onVectorTileMessage.js +15 -15
  429. package/src/vector-tiles/onVectorTileRemove.js +25 -25
  430. package/src/vector-tiles/onVectorTileWorkerError.js +16 -16
  431. package/src/vector-tiles/paintVectorTileBatch.js +18 -18
  432. package/src/vector-tiles/prepareVectorLabel.js +34 -34
  433. package/src/vector-tiles/prepareVectorStyleLayer.js +38 -38
  434. package/src/vector-tiles/prepareVectorTile.js +29 -29
  435. package/src/vector-tiles/projectVectorPaths.js +25 -25
  436. package/src/vector-tiles/projectVectorPoint.js +15 -15
  437. package/src/vector-tiles/projectVectorTriangles.js +28 -28
  438. package/src/vector-tiles/pruneVectorTiles.js +14 -14
  439. package/src/vector-tiles/pumpVectorTiles.js +21 -21
  440. package/src/vector-tiles/readTileJSON.js +27 -27
  441. package/src/vector-tiles/readVectorStyle.js +28 -28
  442. package/src/vector-tiles/refreshVectorTiles.js +8 -8
  443. package/src/vector-tiles/reserveVectorLabelCells.js +14 -14
  444. package/src/vector-tiles/retireVectorTileGroup.js +20 -20
  445. package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -14
  446. package/src/vector-tiles/rotateVectorLabel.js +19 -19
  447. package/src/vector-tiles/rotateVectorLabels.js +9 -9
  448. package/src/vector-tiles/simplifyVectorPath.js +29 -29
  449. package/src/vector-tiles/updateVectorLabelMarker.js +36 -36
  450. package/src/vector-tiles/updateVectorLabelStyle.js +14 -14
  451. package/src/vector-tiles/updateVectorTileLabels.js +33 -33
  452. package/src/vector-tiles/updateVectorTilePaint.js +25 -25
  453. package/src/vector-tiles/updateVectorTiles.js +32 -32
  454. package/src/vector-tiles/validateVectorTileZooms.js +15 -15
  455. package/src/vector-tiles/vectorFeaturePaint.js +25 -25
  456. package/src/vector-tiles/vectorFeaturePaths.js +26 -26
  457. package/src/vector-tiles/vectorFeatureZoom.js +18 -18
  458. package/src/vector-tiles/vectorLabelAnchors.js +31 -31
  459. package/src/vector-tiles/vectorLabelCandidates.js +18 -18
  460. package/src/vector-tiles/vectorLabelCells.js +32 -32
  461. package/src/vector-tiles/vectorLabelIcon.js +38 -38
  462. package/src/vector-tiles/vectorLabelProperty.js +12 -12
  463. package/src/vector-tiles/vectorLabelText.js +19 -19
  464. package/src/vector-tiles/vectorSpriteIcon.js +19 -19
  465. package/src/vector-tiles/vectorStraightRun.js +23 -23
  466. package/src/vector-tiles/vectorStyleDependencies.js +22 -22
  467. package/src/vector-tiles/vectorStyleValue.js +16 -16
  468. package/src/vector-tiles/vectorStyleZoom.js +12 -12
  469. package/src/vector-tiles/vectorTileAwaited.js +17 -17
  470. package/src/vector-tiles/vectorTileOverlaps.js +12 -12
  471. package/src/vector-tiles/vectorTilePaint.js +18 -18
  472. package/src/vector-tiles/vectorTileSettings.js +27 -27
  473. package/src/vector-tiles/vectorTilesIdle.js +11 -11
  474. package/src/vector-tiles/vectorTolerance.js +11 -11
  475. package/src/vector-tiles/wrapVectorLabel.js +17 -17
  476. package/src/vehicles/boatModel.js +35 -35
  477. package/src/vehicles/busModel.js +13 -13
  478. package/src/vehicles/carModel.js +39 -39
  479. package/src/walk/initializeWalkControl.js +12 -12
  480. package/src/walk/isWalkBlocked.js +15 -15
  481. package/src/walk/landWalker.js +41 -41
  482. package/src/walk/moveWalker.js +37 -37
  483. package/src/walk/onAddWalkControl.js +40 -40
  484. package/src/walk/onRemoveWalkControl.js +17 -17
  485. package/src/walk/onWalkBlur.js +3 -3
  486. package/src/walk/onWalkTerrain.js +3 -3
  487. package/src/walk/resolveWalkerPosition.js +33 -33
  488. package/src/walk/stepWalkerHeight.js +18 -18
  489. package/src/walk/toggleWalking.js +4 -4
  490. package/src/walk/updateWalkerFrame.js +29 -29
  491. package/src/walk/updateWalkerView.js +31 -31
  492. package/src/weakmaps/cameraHandlersByMap.js +6 -6
  493. package/src/weakmaps/geometryWorkersByMap.js +6 -6
  494. package/src/weakmaps/nativeProgramsByRenderer.js +6 -6
  495. package/src/weakmaps/pathProjectionByMap.js +6 -6
  496. package/src/weakmaps/streamTerrainByLayer.js +6 -6
  497. package/src/weakmaps/streamTerrainByMap.js +6 -6
  498. package/src/weakmaps/sunByMap.js +6 -6
  499. package/src/weakmaps/vectorTileOptionsByLayer.js +6 -6
  500. package/src/weakmaps/vectorWorkerByLayer.js +6 -6
  501. package/src/weakmaps/walkByMap.js +6 -6
  502. package/src/weakmaps/workerMapByLayer.js +6 -6
  503. package/src/workers/acquireGeometryWorker.js +39 -39
  504. package/src/workers/buildAreaInWorker.js +24 -24
  505. package/src/workers/closeGeometryWorkers.js +16 -16
  506. package/src/workers/cogWorker.js +27 -27
  507. package/src/workers/createGeometryWorker.js +30 -30
  508. package/src/workers/geometryWorker.js +34 -34
  509. package/src/workers/getCogInWorker.js +18 -18
  510. package/src/workers/modelWorker.js +17 -17
  511. package/src/workers/openCogInWorker.js +22 -22
  512. package/src/workers/runSourceWorker.js +44 -44
  513. package/src/workers/settleGeometryWorker.js +16 -16
  514. package/src/workers/startGeometryWorker.js +23 -23
  515. package/src/workers/vectorTileWorker.js +15 -15
@@ -1,46 +1,46 @@
1
- import { L } from '../globals/L.js';
2
- import { disposeMesh } from '../rendering/disposeMesh.js';
3
- import { createMesh } from '../rendering/createMesh.js';
4
- import { nativeProgram } from './nativeProgram.js';
5
-
6
- /**
7
- * Replace a native layer mesh and select its rendering program.
8
- *
9
- * @param {Object} state Native layer state.
10
- * @param {string} key Mesh identifier.
11
- * @param {Array} position Vertex coordinates.
12
- * @param {number|Array} color Material color.
13
- * @param {number} opacity Material opacity.
14
- * @param {Object} texture Optional base texture.
15
- * @param {Array} uv Optional texture coordinates.
16
- * @param {boolean} terrain Whether the mesh represents terrain.
17
- * @param {boolean} nativeStroke Whether the mesh uses native stroke anchors.
18
- *
19
- * @returns {Object} The new mesh.
20
- */
21
- export function createNativeMesh(state, key, position, color, opacity, texture, uv, terrain, nativeStroke) {
22
- const { backend: layer, source, meshes } = state;
23
- // Unlit, noninteractive strokes use the normal slot for stationary anchors.
24
- const normal = nativeStroke ? state.strokeAnchors : /* alloc */ [];
25
- let index, mesh = meshes.get(key);
26
- if (!nativeStroke) {
27
- for (index = 0; index < position.length; index++) normal.push(index % 3 === 1 ? 1 : 0);
28
- }
29
- const data = /* alloc */ { position, normal };
30
- if (uv) data.uv = uv;
31
- const material = /* alloc */ {
32
- vertexColors: false, color, opacity, unlit: true, alphaMode: 'BLEND', depthWrite: terrain, nativeStroke,
33
- };
34
- if (texture) material.baseTexture = texture;
35
- if (mesh) disposeMesh(layer, mesh);
36
- mesh = createMesh(layer, data, material, 0, source instanceof L.GridLayer
37
- ? (terrain ? state.terrainRasterProgram : state.rasterProgram) || nativeProgram(layer, material)
38
- : nativeProgram(layer, material));
39
- if (source instanceof L.GridLayer) {
40
- if (terrain) state.terrainRasterProgram ||= mesh.program;
41
- else state.rasterProgram ||= mesh.program;
42
- mesh.texture = texture;
43
- }
44
- meshes.set(key, mesh);
45
- return mesh;
46
- }
1
+ import { L } from '../globals/L.js';
2
+ import { disposeMesh } from '../rendering/disposeMesh.js';
3
+ import { createMesh } from '../rendering/createMesh.js';
4
+ import { nativeProgram } from './nativeProgram.js';
5
+
6
+ /**
7
+ * Replace a native layer mesh and select its rendering program.
8
+ *
9
+ * @param {Object} state Native layer state.
10
+ * @param {string} key Mesh identifier.
11
+ * @param {Array} position Vertex coordinates.
12
+ * @param {number|Array} color Material color.
13
+ * @param {number} opacity Material opacity.
14
+ * @param {Object} texture Optional base texture.
15
+ * @param {Array} uv Optional texture coordinates.
16
+ * @param {boolean} terrain Whether the mesh represents terrain.
17
+ * @param {boolean} nativeStroke Whether the mesh uses native stroke anchors.
18
+ *
19
+ * @returns {Object} The new mesh.
20
+ */
21
+ export function createNativeMesh(state, key, position, color, opacity, texture, uv, terrain, nativeStroke) {
22
+ const { backend: layer, source, meshes } = state;
23
+ // Unlit, noninteractive strokes use the normal slot for stationary anchors.
24
+ const normal = nativeStroke ? state.strokeAnchors : /* alloc */ [];
25
+ let index, mesh = meshes.get(key);
26
+ if (!nativeStroke) {
27
+ for (index = 0; index < position.length; index++) normal.push(index % 3 === 1 ? 1 : 0);
28
+ }
29
+ const data = /* alloc */ { position, normal };
30
+ if (uv) data.uv = uv;
31
+ const material = /* alloc */ {
32
+ vertexColors: false, color, opacity, unlit: true, alphaMode: 'BLEND', depthWrite: terrain, nativeStroke,
33
+ };
34
+ if (texture) material.baseTexture = texture;
35
+ if (mesh) disposeMesh(layer, mesh);
36
+ mesh = createMesh(layer, data, material, 0, source instanceof L.GridLayer
37
+ ? (terrain ? state.terrainRasterProgram : state.rasterProgram) || nativeProgram(layer, material)
38
+ : nativeProgram(layer, material));
39
+ if (source instanceof L.GridLayer) {
40
+ if (terrain) state.terrainRasterProgram ||= mesh.program;
41
+ else state.rasterProgram ||= mesh.program;
42
+ mesh.texture = texture;
43
+ }
44
+ meshes.set(key, mesh);
45
+ return mesh;
46
+ }
@@ -1,8 +1,8 @@
1
- /**
2
- * Forward a native backend error to its source layer.
3
- *
4
- * @param {Object} event Error event.
5
- */
6
- export function forwardNativeError({ error }) {
7
- this.source.fire('error', /* alloc */ { error });
8
- }
1
+ /**
2
+ * Forward a native backend error to its source layer.
3
+ *
4
+ * @param {Object} event Error event.
5
+ */
6
+ export function forwardNativeError({ error }) {
7
+ this.source.fire('error', /* alloc */ { error });
8
+ }
@@ -1,47 +1,47 @@
1
- /**
2
- * Load and cache a validated grid terrain tile, wrapping horizontal coordinates.
3
- *
4
- * @param {Object} state Native layer state with a terrain cache.
5
- * @param {number} z Tile zoom.
6
- * @param {number} x Tile column.
7
- * @param {number} y Tile row.
8
- *
9
- * @returns {Promise<Float32Array>} The elevation samples.
10
- *
11
- * @throws {Error} If the tile is not a 256-by-256 Float32Array.
12
- * @throws {Error} If the tile request or validation fails.
13
- */
14
- export async function getGridTerrainTile(state, z, x, y) {
15
- const limit = 2 ** z;
16
- x = ((x % limit) + limit) % limit;
17
- y = Math.max(0, Math.min(limit - 1, y));
18
- const key = `${z}/${x}/${y}`;
19
- let entry = state.terrainCache.get(key);
20
- if (!entry) {
21
- entry = /* alloc */ { promise: state.layer.options.getTile(z, x, y, state.terrainController.signal) };
22
- state.terrainCache.set(key, entry);
23
- } else {
24
- state.terrainCache.delete(key);
25
- state.terrainCache.set(key, entry);
26
- }
27
- try {
28
- if (!entry.data) entry.data = await entry.promise;
29
- if (!(entry.data instanceof Float32Array) || entry.data.length !== 65536) {
30
- throw /* alloc */ new Error(`Invalid elevation tile ${key}: expected 256x256 Float32Array`);
31
- }
32
- if (!entry.range) {
33
- let minimum = Infinity, maximum = -Infinity, elevation;
34
- for (elevation of entry.data) {
35
- if (!Number.isFinite(elevation) || elevation <= -1000) continue;
36
- minimum = Math.min(minimum, elevation);
37
- maximum = Math.max(maximum, elevation);
38
- }
39
- entry.range = /* alloc */ [minimum, maximum];
40
- }
41
- } catch (error) {
42
- if (state.terrainCache.get(key) === entry) state.terrainCache.delete(key);
43
- throw error;
44
- }
45
- while (state.terrainCache.size > 256) state.terrainCache.delete(state.terrainCache.keys().next().value);
46
- return entry.data;
47
- }
1
+ /**
2
+ * Load and cache a validated grid terrain tile, wrapping horizontal coordinates.
3
+ *
4
+ * @param {Object} state Native layer state with a terrain cache.
5
+ * @param {number} z Tile zoom.
6
+ * @param {number} x Tile column.
7
+ * @param {number} y Tile row.
8
+ *
9
+ * @returns {Promise<Float32Array>} The elevation samples.
10
+ *
11
+ * @throws {Error} If the tile is not a 256-by-256 Float32Array.
12
+ * @throws {Error} If the tile request or validation fails.
13
+ */
14
+ export async function getGridTerrainTile(state, z, x, y) {
15
+ const limit = 2 ** z;
16
+ x = ((x % limit) + limit) % limit;
17
+ y = Math.max(0, Math.min(limit - 1, y));
18
+ const key = `${z}/${x}/${y}`;
19
+ let entry = state.terrainCache.get(key);
20
+ if (!entry) {
21
+ entry = /* alloc */ { promise: state.layer.options.getTile(z, x, y, state.terrainController.signal) };
22
+ state.terrainCache.set(key, entry);
23
+ } else {
24
+ state.terrainCache.delete(key);
25
+ state.terrainCache.set(key, entry);
26
+ }
27
+ try {
28
+ if (!entry.data) entry.data = await entry.promise;
29
+ if (!(entry.data instanceof Float32Array) || entry.data.length !== 65536) {
30
+ throw /* alloc */ new Error(`Invalid elevation tile ${key}: expected 256x256 Float32Array`);
31
+ }
32
+ if (!entry.range) {
33
+ let minimum = Infinity, maximum = -Infinity, elevation;
34
+ for (elevation of entry.data) {
35
+ if (!Number.isFinite(elevation) || elevation <= -1000) continue;
36
+ minimum = Math.min(minimum, elevation);
37
+ maximum = Math.max(maximum, elevation);
38
+ }
39
+ entry.range = /* alloc */ [minimum, maximum];
40
+ }
41
+ } catch (error) {
42
+ if (state.terrainCache.get(key) === entry) state.terrainCache.delete(key);
43
+ throw error;
44
+ }
45
+ while (state.terrainCache.size > 256) state.terrainCache.delete(state.terrainCache.keys().next().value);
46
+ return entry.data;
47
+ }
@@ -1,34 +1,34 @@
1
- import { terrainElevation } from '../terrain/terrainElevation.js';
2
- import { nativeTerrainElevation } from './nativeTerrainElevation.js';
3
-
4
- /**
5
- * Find a terrain elevation from the native grid or cached tiles at available zooms.
6
- *
7
- * @param {Object} state Native layer state.
8
- * @param {Object} location Geographic location to sample.
9
- *
10
- * @returns {number|null} Elevation, or null when no sample is available.
11
- */
12
- export function gridTerrainElevation(state, location) {
13
- let z = Math.max(0, Math.min(24, Math.round(state.map.getZoom())));
14
- const tiles = /* alloc */ new Map();
15
- let point, limit, x, y, index, dx, dy, tx, ty, entry, elevation;
16
- for (; z >= 0; z--) {
17
- point = state.map.project(location, z), limit = 2 ** z;
18
- x = Math.floor(point.x / 256), y = Math.floor(point.y / 256);
19
- elevation = nativeTerrainElevation(state, point, x, y, z);
20
- if (Number.isFinite(elevation)) return elevation;
21
- tiles.clear();
22
- for (index = 0; index < 9; index++) {
23
- dx = index % 3 - 1;
24
- dy = Math.floor(index / 3) - 1;
25
- tx = ((x + dx) % limit + limit) % limit;
26
- ty = Math.max(0, Math.min(limit - 1, y + dy));
27
- entry = state.terrainCache.get(`${z}/${tx}/${ty}`);
28
- if (entry?.data) tiles.set(`${x + dx}/${y + dy}`, entry.data);
29
- }
30
- elevation = terrainElevation(point, tiles);
31
- if (Number.isFinite(elevation)) return elevation;
32
- }
33
- return null;
34
- }
1
+ import { terrainElevation } from '../terrain/terrainElevation.js';
2
+ import { nativeTerrainElevation } from './nativeTerrainElevation.js';
3
+
4
+ /**
5
+ * Find a terrain elevation from the native grid or cached tiles at available zooms.
6
+ *
7
+ * @param {Object} state Native layer state.
8
+ * @param {Object} location Geographic location to sample.
9
+ *
10
+ * @returns {number|null} Elevation, or null when no sample is available.
11
+ */
12
+ export function gridTerrainElevation(state, location) {
13
+ let z = Math.max(0, Math.min(24, Math.round(state.map.getZoom())));
14
+ const tiles = /* alloc */ new Map();
15
+ let point, limit, x, y, index, dx, dy, tx, ty, entry, elevation;
16
+ for (; z >= 0; z--) {
17
+ point = state.map.project(location, z), limit = 2 ** z;
18
+ x = Math.floor(point.x / 256), y = Math.floor(point.y / 256);
19
+ elevation = nativeTerrainElevation(state, point, x, y, z);
20
+ if (Number.isFinite(elevation)) return elevation;
21
+ tiles.clear();
22
+ for (index = 0; index < 9; index++) {
23
+ dx = index % 3 - 1;
24
+ dy = Math.floor(index / 3) - 1;
25
+ tx = ((x + dx) % limit + limit) % limit;
26
+ ty = Math.max(0, Math.min(limit - 1, y + dy));
27
+ entry = state.terrainCache.get(`${z}/${tx}/${ty}`);
28
+ if (entry?.data) tiles.set(`${x + dx}/${y + dy}`, entry.data);
29
+ }
30
+ elevation = terrainElevation(point, tiles);
31
+ if (Number.isFinite(elevation)) return elevation;
32
+ }
33
+ return null;
34
+ }
@@ -1,12 +1,12 @@
1
- import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';
2
-
3
- /**
4
- * Check whether this state still belongs to a layer present on its map.
5
- *
6
- * @param {Object} state Native layer state.
7
- *
8
- * @returns {boolean} Whether the state is current.
9
- */
10
- export function current(state) {
11
- return nativeGPUByLayer.get(state.source) === state && state.map.hasLayer(state.source);
1
+ import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';
2
+
3
+ /**
4
+ * Check whether this state still belongs to a layer present on its map.
5
+ *
6
+ * @param {Object} state Native layer state.
7
+ *
8
+ * @returns {boolean} Whether the state is current.
9
+ */
10
+ export function current(state) {
11
+ return nativeGPUByLayer.get(state.source) === state && state.map.hasLayer(state.source);
12
12
  }
@@ -1,36 +1,36 @@
1
- import { getGridTerrainTile } from './getGridTerrainTile.js';
2
- import { refreshNativeLayer } from './refreshNativeLayer.js';
3
-
4
- /**
5
- * Load the nine elevation tiles needed by a grid tile and refresh it when current.
6
- *
7
- * @param {Object} state Native grid layer state.
8
- * @param {string} key Grid tile key.
9
- * @param {Object} tile Grid tile being updated.
10
- * @param {Object} request Tracked terrain request.
11
- *
12
- * @returns {Promise<void>} Completion of the load or error reporting.
13
- */
14
- export async function loadGridTerrain(state, key, tile, request) {
15
- const { x, y, z } = tile.coords, stream = request.stream;
16
- const jobs = /* alloc */ [], tiles = /* alloc */ new Map();
17
- let dx, dy, i = 0;
18
- try {
19
- for (dy = -1; dy <= 1; dy++) for (dx = -1; dx <= 1; dx++) {
20
- jobs.push(getGridTerrainTile(stream, z, x + dx, y + dy));
21
- }
22
- const values = await Promise.all(jobs);
23
- if (state.disposed || stream.terrainController.signal.aborted ||
24
- state.source._tiles[key] !== tile || state.terrainRequests.get(key) !== request) return;
25
- for (dy = -1; dy <= 1; dy++) for (dx = -1; dx <= 1; dx++) tiles.set(`${x + dx}/${y + dy}`, values[i++]);
26
- request.tiles = tiles;
27
- refreshNativeLayer(state);
28
- state.map.fire('terrainchange');
29
- state.source._update();
30
- } catch (error) {
31
- if (!state.disposed && !stream.terrainController.signal.aborted && state.source._tiles[key] === tile) {
32
- request.error = error;
33
- stream.layer.fire('error', /* alloc */ { error, coords: tile.coords });
34
- }
35
- }
36
- }
1
+ import { getGridTerrainTile } from './getGridTerrainTile.js';
2
+ import { refreshNativeLayer } from './refreshNativeLayer.js';
3
+
4
+ /**
5
+ * Load the nine elevation tiles needed by a grid tile and refresh it when current.
6
+ *
7
+ * @param {Object} state Native grid layer state.
8
+ * @param {string} key Grid tile key.
9
+ * @param {Object} tile Grid tile being updated.
10
+ * @param {Object} request Tracked terrain request.
11
+ *
12
+ * @returns {Promise<void>} Completion of the load or error reporting.
13
+ */
14
+ export async function loadGridTerrain(state, key, tile, request) {
15
+ const { x, y, z } = tile.coords, stream = request.stream;
16
+ const jobs = /* alloc */ [], tiles = /* alloc */ new Map();
17
+ let dx, dy, i = 0;
18
+ try {
19
+ for (dy = -1; dy <= 1; dy++) for (dx = -1; dx <= 1; dx++) {
20
+ jobs.push(getGridTerrainTile(stream, z, x + dx, y + dy));
21
+ }
22
+ const values = await Promise.all(jobs);
23
+ if (state.disposed || stream.terrainController.signal.aborted ||
24
+ state.source._tiles[key] !== tile || state.terrainRequests.get(key) !== request) return;
25
+ for (dy = -1; dy <= 1; dy++) for (dx = -1; dx <= 1; dx++) tiles.set(`${x + dx}/${y + dy}`, values[i++]);
26
+ request.tiles = tiles;
27
+ refreshNativeLayer(state);
28
+ state.map.fire('terrainchange');
29
+ state.source._update();
30
+ } catch (error) {
31
+ if (!state.disposed && !stream.terrainController.signal.aborted && state.source._tiles[key] === tile) {
32
+ request.error = error;
33
+ stream.layer.fire('error', /* alloc */ { error, coords: tile.coords });
34
+ }
35
+ }
36
+ }
@@ -1,27 +1,27 @@
1
- import { L } from '../globals/L.js';
2
- import { raycast } from '../picking/raycast.js';
3
- import { compareNativeHits } from './compareNativeHits.js';
4
-
5
- /**
6
- * Find the foremost interactive native path hit by a map event.
7
- *
8
- * @param {Object} context Native event state for the map.
9
- * @param {Event} event Original DOM event.
10
- * @param {string} type Event type being dispatched.
11
- *
12
- * @returns {Object|null} Hit source layer, or null.
13
- */
14
- export function nativeEventSource(context, event, type) {
15
- const hits = /* alloc */ [];
16
- let candidate, source, layer;
17
- if (type !== context.out) {
18
- for (candidate of context.states) {
19
- ({ source, backend: layer } = candidate);
20
- if (source instanceof L.Marker || source.options.interactive === false ||
21
- !(source instanceof L.Path) && !source.options.interactive) continue;
22
- hits.push(...raycast(layer, event, candidate.meshes.values(), false));
23
- }
24
- }
25
- hits.sort(compareNativeHits);
26
- return hits[0]?.object._nativeSource || null;
27
- }
1
+ import { L } from '../globals/L.js';
2
+ import { raycast } from '../picking/raycast.js';
3
+ import { compareNativeHits } from './compareNativeHits.js';
4
+
5
+ /**
6
+ * Find the foremost interactive native path hit by a map event.
7
+ *
8
+ * @param {Object} context Native event state for the map.
9
+ * @param {Event} event Original DOM event.
10
+ * @param {string} type Event type being dispatched.
11
+ *
12
+ * @returns {Object|null} Hit source layer, or null.
13
+ */
14
+ export function nativeEventSource(context, event, type) {
15
+ const hits = /* alloc */ [];
16
+ let candidate, source, layer;
17
+ if (type !== context.out) {
18
+ for (candidate of context.states) {
19
+ ({ source, backend: layer } = candidate);
20
+ if (source instanceof L.Marker || source.options.interactive === false ||
21
+ !(source instanceof L.Path) && !source.options.interactive) continue;
22
+ hits.push(...raycast(layer, event, candidate.meshes.values(), false));
23
+ }
24
+ }
25
+ hits.sort(compareNativeHits);
26
+ return hits[0]?.object._nativeSource || null;
27
+ }
@@ -1,28 +1,28 @@
1
- import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
2
- import { nativeProgramsByRenderer } from '../weakmaps/nativeProgramsByRenderer.js';
3
- import { createProgram } from '../materials/createProgram.js';
4
- import { createProgramUniforms } from '../materials/createProgramUniforms.js';
5
-
6
- /**
7
- * Create a native material program from a renderer-local cached template.
8
- *
9
- * @param {Object} layer Backend layer.
10
- * @param {Object} material Material properties.
11
- *
12
- * @returns {Object} Program with material-specific uniforms.
13
- */
14
- export function nativeProgram(layer, material) {
15
- const renderer = rendererByLayer.get(layer);
16
- let programs = nativeProgramsByRenderer.get(renderer);
17
- if (!programs) {
18
- programs = /* alloc */ new Map();
19
- nativeProgramsByRenderer.set(renderer, programs);
20
- }
21
- const key = `${Boolean(material.baseTexture)}:${Boolean(material.nativeStroke)}:${Boolean(material.depthWrite)}`;
22
- let template = programs.get(key);
23
- if (!template) {
24
- template = createProgram(layer, /* alloc */ { doubleSided: true, ...material });
25
- programs.set(key, template);
26
- }
27
- return /* alloc */ { ...template, uniforms: createProgramUniforms(material), _layerMaterial: material };
28
- }
1
+ import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
2
+ import { nativeProgramsByRenderer } from '../weakmaps/nativeProgramsByRenderer.js';
3
+ import { createProgram } from '../materials/createProgram.js';
4
+ import { createProgramUniforms } from '../materials/createProgramUniforms.js';
5
+
6
+ /**
7
+ * Create a native material program from a renderer-local cached template.
8
+ *
9
+ * @param {Object} layer Backend layer.
10
+ * @param {Object} material Material properties.
11
+ *
12
+ * @returns {Object} Program with material-specific uniforms.
13
+ */
14
+ export function nativeProgram(layer, material) {
15
+ const renderer = rendererByLayer.get(layer);
16
+ let programs = nativeProgramsByRenderer.get(renderer);
17
+ if (!programs) {
18
+ programs = /* alloc */ new Map();
19
+ nativeProgramsByRenderer.set(renderer, programs);
20
+ }
21
+ const key = `${Boolean(material.baseTexture)}:${Boolean(material.nativeStroke)}:${Boolean(material.depthWrite)}`;
22
+ let template = programs.get(key);
23
+ if (!template) {
24
+ template = createProgram(layer, /* alloc */ { doubleSided: true, ...material });
25
+ programs.set(key, template);
26
+ }
27
+ return /* alloc */ { ...template, uniforms: createProgramUniforms(material), _layerMaterial: material };
28
+ }
@@ -1,27 +1,27 @@
1
- import { terrainElevation } from '../terrain/terrainElevation.js';
2
- import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';
3
-
4
- /**
5
- * Sample terrain from a current native grid request at the given tile.
6
- *
7
- * @param {Object} state Terrain stream state.
8
- * @param {Object} point Projected point to sample.
9
- * @param {number} x Tile column.
10
- * @param {number} y Tile row.
11
- * @param {number} z Tile zoom.
12
- *
13
- * @returns {number|null} Elevation, or null if no current sample is available.
14
- */
15
- export function nativeTerrainElevation(state, point, x, y, z) {
16
- let layer, native, request, elevation;
17
- const key = `${x}:${y}:${z}`;
18
- for (layer of Object.values(state.map._layers)) {
19
- native = nativeGPUByLayer.get(layer);
20
- if (native?.disposed || native?.terrainStream !== state) continue;
21
- request = native.terrainRequests?.get(key);
22
- if (!request?.tiles || layer._tiles[key] !== request.tile) continue;
23
- elevation = terrainElevation(point, request.tiles);
24
- if (Number.isFinite(elevation)) return elevation;
25
- }
26
- return null;
27
- }
1
+ import { terrainElevation } from '../terrain/terrainElevation.js';
2
+ import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';
3
+
4
+ /**
5
+ * Sample terrain from a current native grid request at the given tile.
6
+ *
7
+ * @param {Object} state Terrain stream state.
8
+ * @param {Object} point Projected point to sample.
9
+ * @param {number} x Tile column.
10
+ * @param {number} y Tile row.
11
+ * @param {number} z Tile zoom.
12
+ *
13
+ * @returns {number|null} Elevation, or null if no current sample is available.
14
+ */
15
+ export function nativeTerrainElevation(state, point, x, y, z) {
16
+ let layer, native, request, elevation;
17
+ const key = `${x}:${y}:${z}`;
18
+ for (layer of Object.values(state.map._layers)) {
19
+ native = nativeGPUByLayer.get(layer);
20
+ if (native?.disposed || native?.terrainStream !== state) continue;
21
+ request = native.terrainRequests?.get(key);
22
+ if (!request?.tiles || layer._tiles[key] !== request.tile) continue;
23
+ elevation = terrainElevation(point, request.tiles);
24
+ if (Number.isFinite(elevation)) return elevation;
25
+ }
26
+ return null;
27
+ }
@@ -1,30 +1,30 @@
1
- import { geometryPixelStates } from '../globals/geometryPixelStates.js';
2
- import { nativeGeometry } from '../geometry/nativeGeometry.js';
3
- import { localPixelForGeometry } from '../projections/localPixelForGeometry.js';
4
- import { locationByLayer } from '../weakmaps/locationByLayer.js';
5
- import { radians } from '../globals/radians.js';
6
- import { L } from '../globals/L.js';
7
-
8
- /**
9
- * Build native vector geometry using the layer's local pixel projection.
10
- *
11
- * @param {Object} state Native layer state.
12
- *
13
- * @returns {*} Geometry produced for the source layer.
14
- */
15
- export function nativeVectorGeometry(state) {
16
- const { source } = state;
17
- state.strokeCoordinates = null;
18
- state.strokeAnchors = source instanceof L.Polyline && !source.options.dashArray ? /* alloc */ [] : null;
19
- const crs = state.map.options.crs, origin = locationByLayer.get(state.backend);
20
- state.pixelProjection = /* alloc */ {
21
- transformation: crs.transformation, scale: crs.scale(state.map.getZoom()),
22
- origin: crs.project(origin), metres: Math.cos(origin.lat * radians),
23
- };
24
- geometryPixelStates.push(state);
25
- try {
26
- return nativeGeometry(source, state.map, localPixelForGeometry);
27
- } finally {
28
- geometryPixelStates.pop();
29
- }
30
- }
1
+ import { geometryPixelStates } from '../globals/geometryPixelStates.js';
2
+ import { nativeGeometry } from '../geometry/nativeGeometry.js';
3
+ import { localPixelForGeometry } from '../projections/localPixelForGeometry.js';
4
+ import { locationByLayer } from '../weakmaps/locationByLayer.js';
5
+ import { radians } from '../globals/radians.js';
6
+ import { L } from '../globals/L.js';
7
+
8
+ /**
9
+ * Build native vector geometry using the layer's local pixel projection.
10
+ *
11
+ * @param {Object} state Native layer state.
12
+ *
13
+ * @returns {*} Geometry produced for the source layer.
14
+ */
15
+ export function nativeVectorGeometry(state) {
16
+ const { source } = state;
17
+ state.strokeCoordinates = null;
18
+ state.strokeAnchors = source instanceof L.Polyline && !source.options.dashArray ? /* alloc */ [] : null;
19
+ const crs = state.map.options.crs, origin = locationByLayer.get(state.backend);
20
+ state.pixelProjection = /* alloc */ {
21
+ transformation: crs.transformation, scale: crs.scale(state.map.getZoom()),
22
+ origin: crs.project(origin), metres: Math.cos(origin.lat * radians),
23
+ };
24
+ geometryPixelStates.push(state);
25
+ try {
26
+ return nativeGeometry(source, state.map, localPixelForGeometry);
27
+ } finally {
28
+ geometryPixelStates.pop();
29
+ }
30
+ }
@@ -1,20 +1,20 @@
1
- import { L } from '../globals/L.js';
2
-
3
- /**
4
- * Move a native grid layer beyond the other grid layers in its pane.
5
- *
6
- * @param {Object} state Native layer state.
7
- * @param {string} name Layer method being called.
8
- */
9
- export function orderNativeGridLayer(state, name) {
10
- const { source } = state;
11
- if (!(source instanceof L.GridLayer) || name !== 'bringToFront' && name !== 'bringToBack') return;
12
- let extreme = name === 'bringToFront' ? -Infinity : Infinity, layer, zIndex;
13
- for (layer of Object.values(state.map._layers)) {
14
- if (layer === source || !(layer instanceof L.GridLayer) || layer.getPane() !== source.getPane()) continue;
15
- zIndex = layer.options.zIndex || 0;
16
- extreme = name === 'bringToFront' ? Math.max(extreme, zIndex) : Math.min(extreme, zIndex);
17
- }
18
- const edge = name === 'bringToFront' ? extreme + 1 : extreme - 1;
19
- if (Number.isFinite(edge)) source.setZIndex(edge);
20
- }
1
+ import { L } from '../globals/L.js';
2
+
3
+ /**
4
+ * Move a native grid layer beyond the other grid layers in its pane.
5
+ *
6
+ * @param {Object} state Native layer state.
7
+ * @param {string} name Layer method being called.
8
+ */
9
+ export function orderNativeGridLayer(state, name) {
10
+ const { source } = state;
11
+ if (!(source instanceof L.GridLayer) || name !== 'bringToFront' && name !== 'bringToBack') return;
12
+ let extreme = name === 'bringToFront' ? -Infinity : Infinity, layer, zIndex;
13
+ for (layer of Object.values(state.map._layers)) {
14
+ if (layer === source || !(layer instanceof L.GridLayer) || layer.getPane() !== source.getPane()) continue;
15
+ zIndex = layer.options.zIndex || 0;
16
+ extreme = name === 'bringToFront' ? Math.max(extreme, zIndex) : Math.min(extreme, zIndex);
17
+ }
18
+ const edge = name === 'bringToFront' ? extreme + 1 : extreme - 1;
19
+ if (Number.isFinite(edge)) source.setZIndex(edge);
20
+ }