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,36 +1,36 @@
1
- import { L } from '../globals/L.js';
2
- import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.js';
3
- import { vectorLabelIcon } from './vectorLabelIcon.js';
4
- import { rotateVectorLabel } from './rotateVectorLabel.js';
5
- import { forwardVectorTileError } from './forwardVectorTileError.js';
6
-
7
- /**
8
- * Create or update a marker for a vector label candidate.
9
- *
10
- * @param {Object} owner Vector tile layer.
11
- * @param {Object} label Label candidate.
12
- * @param {string} key Label identity key.
13
- *
14
- * @returns {boolean} Whether the marker was created or its appearance changed.
15
- */
16
- export function updateVectorLabelMarker(owner, label, key) {
17
- const appearance = JSON.stringify(/* alloc */ [label.size, label.color, label.halo, label.haloWidth, label.icon]);
18
- const sheet = vectorTileOptionsByLayer.get(owner).spriteSheet;
19
- let marker = owner.labels.get(key);
20
- if (marker) {
21
- marker._mvtLabel = label;
22
- if (marker._mvtLabelStyle === appearance) { rotateVectorLabel(owner._map, marker, label); return false; }
23
- marker.setIcon(vectorLabelIcon(label, sheet));
24
- } else {
25
- const { pane } = vectorTileOptionsByLayer.get(owner);
26
- marker = /* alloc */ new L.Marker(label.latlng, /* alloc */ {
27
- icon: vectorLabelIcon(label, sheet), pane: `${pane}-${label.order}`, title: label.text,
28
- alt: label.text, interactive: false, keyboard: false, rotateWithView: false,
29
- }).on('error', forwardVectorTileError, owner).addTo(owner._map);
30
- owner.labels.set(key, marker);
31
- }
32
- marker._mvtLabelStyle = appearance;
33
- marker._mvtLabel = label;
34
- rotateVectorLabel(owner._map, marker, label);
35
- return true;
36
- }
1
+ import { L } from '../globals/L.js';
2
+ import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.js';
3
+ import { vectorLabelIcon } from './vectorLabelIcon.js';
4
+ import { rotateVectorLabel } from './rotateVectorLabel.js';
5
+ import { forwardVectorTileError } from './forwardVectorTileError.js';
6
+
7
+ /**
8
+ * Create or update a marker for a vector label candidate.
9
+ *
10
+ * @param {Object} owner Vector tile layer.
11
+ * @param {Object} label Label candidate.
12
+ * @param {string} key Label identity key.
13
+ *
14
+ * @returns {boolean} Whether the marker was created or its appearance changed.
15
+ */
16
+ export function updateVectorLabelMarker(owner, label, key) {
17
+ const appearance = JSON.stringify(/* alloc */ [label.size, label.color, label.halo, label.haloWidth, label.icon]);
18
+ const sheet = vectorTileOptionsByLayer.get(owner).spriteSheet;
19
+ let marker = owner.labels.get(key);
20
+ if (marker) {
21
+ marker._mvtLabel = label;
22
+ if (marker._mvtLabelStyle === appearance) { rotateVectorLabel(owner._map, marker, label); return false; }
23
+ marker.setIcon(vectorLabelIcon(label, sheet));
24
+ } else {
25
+ const { pane } = vectorTileOptionsByLayer.get(owner);
26
+ marker = /* alloc */ new L.Marker(label.latlng, /* alloc */ {
27
+ icon: vectorLabelIcon(label, sheet), pane: `${pane}-${label.order}`, title: label.text,
28
+ alt: label.text, interactive: false, keyboard: false, rotateWithView: false,
29
+ }).on('error', forwardVectorTileError, owner).addTo(owner._map);
30
+ owner.labels.set(key, marker);
31
+ }
32
+ marker._mvtLabelStyle = appearance;
33
+ marker._mvtLabel = label;
34
+ rotateVectorLabel(owner._map, marker, label);
35
+ return true;
36
+ }
@@ -1,14 +1,14 @@
1
- import { evaluateStyle } from '../vector-style/evaluateStyle.js';
2
-
3
- /**
4
- * Evaluate the text appearance of a label at the given zoom.
5
- *
6
- * @param {Object} label Label candidate.
7
- * @param {number} zoom Style zoom.
8
- */
9
- export function updateVectorLabelStyle(label, zoom) {
10
- label.size = evaluateStyle(label.entry.layout?.['text-size'] ?? 12, label.properties, zoom);
11
- label.color = evaluateStyle(label.entry.paint?.['text-color'] ?? '#000', label.properties, zoom);
12
- label.halo = evaluateStyle(label.entry.paint?.['text-halo-color'] ?? '#fff', label.properties, zoom);
13
- label.haloWidth = evaluateStyle(label.entry.paint?.['text-halo-width'] ?? 0, label.properties, zoom);
14
- }
1
+ import { evaluateStyle } from '../vector-style/evaluateStyle.js';
2
+
3
+ /**
4
+ * Evaluate the text appearance of a label at the given zoom.
5
+ *
6
+ * @param {Object} label Label candidate.
7
+ * @param {number} zoom Style zoom.
8
+ */
9
+ export function updateVectorLabelStyle(label, zoom) {
10
+ label.size = evaluateStyle(label.entry.layout?.['text-size'] ?? 12, label.properties, zoom);
11
+ label.color = evaluateStyle(label.entry.paint?.['text-color'] ?? '#000', label.properties, zoom);
12
+ label.halo = evaluateStyle(label.entry.paint?.['text-halo-color'] ?? '#fff', label.properties, zoom);
13
+ label.haloWidth = evaluateStyle(label.entry.paint?.['text-halo-width'] ?? 0, label.properties, zoom);
14
+ }
@@ -1,33 +1,33 @@
1
- import { vectorLabelCandidates } from './vectorLabelCandidates.js';
2
- import { vectorLabelCells } from './vectorLabelCells.js';
3
- import { reserveVectorLabelCells } from './reserveVectorLabelCells.js';
4
- import { updateVectorLabelMarker } from './updateVectorLabelMarker.js';
5
- import { vectorTilesIdle } from './vectorTilesIdle.js';
6
- import { yieldTask } from '../utils/yieldTask.js';
7
-
8
- /**
9
- * Place visible vector labels without overlapping occupied cells and remove stale markers.
10
- *
11
- * @returns {Promise<void>} Completion of the current placement revision.
12
- */
13
- export async function updateVectorTileLabels() {
14
- const session = this.session, revision = this.labelRevision = (this.labelRevision || 0) + 1;
15
- this.labelsReady = false;
16
- const candidates = vectorLabelCandidates(this), size = this._map.getSize();
17
- const occupied = /* alloc */ new Set(), retained = /* alloc */ new Set();
18
- let visited = 0, label, key, cells, marker;
19
- for (label of candidates) {
20
- if (++visited % 128 === 0) await yieldTask();
21
- if (!vectorTilesIdle(this, session) || this.labelRevision !== revision) return;
22
- cells = vectorLabelCells(this, label, size);
23
- if (!cells || !label.allowOverlap && !reserveVectorLabelCells(cells, occupied)) continue;
24
- key = `${label.text}${label.icon || ''}:${label.latlng.join(':')}`;
25
- retained.add(key);
26
- if (updateVectorLabelMarker(this, label, key)) await yieldTask();
27
- }
28
- for ([key, marker] of this.labels) {
29
- if (!vectorTilesIdle(this, session) || this.labelRevision !== revision) return;
30
- if (!retained.has(key)) { marker.remove(); this.labels.delete(key); await yieldTask(); }
31
- }
32
- this.labelsReady = true;
33
- }
1
+ import { vectorLabelCandidates } from './vectorLabelCandidates.js';
2
+ import { vectorLabelCells } from './vectorLabelCells.js';
3
+ import { reserveVectorLabelCells } from './reserveVectorLabelCells.js';
4
+ import { updateVectorLabelMarker } from './updateVectorLabelMarker.js';
5
+ import { vectorTilesIdle } from './vectorTilesIdle.js';
6
+ import { yieldTask } from '../utils/yieldTask.js';
7
+
8
+ /**
9
+ * Place visible vector labels without overlapping occupied cells and remove stale markers.
10
+ *
11
+ * @returns {Promise<void>} Completion of the current placement revision.
12
+ */
13
+ export async function updateVectorTileLabels() {
14
+ const session = this.session, revision = this.labelRevision = (this.labelRevision || 0) + 1;
15
+ this.labelsReady = false;
16
+ const candidates = vectorLabelCandidates(this), size = this._map.getSize();
17
+ const occupied = /* alloc */ new Set(), retained = /* alloc */ new Set();
18
+ let visited = 0, label, key, cells, marker;
19
+ for (label of candidates) {
20
+ if (++visited % 128 === 0) await yieldTask();
21
+ if (!vectorTilesIdle(this, session) || this.labelRevision !== revision) return;
22
+ cells = vectorLabelCells(this, label, size);
23
+ if (!cells || !label.allowOverlap && !reserveVectorLabelCells(cells, occupied)) continue;
24
+ key = `${label.text}${label.icon || ''}:${label.latlng.join(':')}`;
25
+ retained.add(key);
26
+ if (updateVectorLabelMarker(this, label, key)) await yieldTask();
27
+ }
28
+ for ([key, marker] of this.labels) {
29
+ if (!vectorTilesIdle(this, session) || this.labelRevision !== revision) return;
30
+ if (!retained.has(key)) { marker.remove(); this.labels.delete(key); await yieldTask(); }
31
+ }
32
+ this.labelsReady = true;
33
+ }
@@ -1,25 +1,25 @@
1
- import { paintVectorTileBatch } from './paintVectorTileBatch.js';
2
- import { vectorStyleZoom } from './vectorStyleZoom.js';
3
- import { vectorTilesIdle } from './vectorTilesIdle.js';
4
- import { yieldTask } from '../utils/yieldTask.js';
5
-
6
- /**
7
- * Update rendered tile paint incrementally while the zoom and session remain current.
8
- *
9
- * @returns {Promise<void>} Completion of the current paint revision.
10
- */
11
- export async function updateVectorTilePaint() {
12
- const zoom = vectorStyleZoom(this), session = this.session;
13
- if (this.paintZoom === zoom) return;
14
- const revision = this.paintRevision = (this.paintRevision || 0) + 1;
15
- let updated = 0, tile, batch;
16
- for (tile of this.tiles.values()) {
17
- if (!tile.rendered) continue;
18
- for (batch of tile.rendered) {
19
- if (!vectorTilesIdle(this, session) || this.paintRevision !== revision || vectorStyleZoom(this) !== zoom) return;
20
- paintVectorTileBatch(batch, zoom);
21
- if (++updated % 32 === 0) await yieldTask();
22
- }
23
- }
24
- this.paintZoom = zoom;
25
- }
1
+ import { paintVectorTileBatch } from './paintVectorTileBatch.js';
2
+ import { vectorStyleZoom } from './vectorStyleZoom.js';
3
+ import { vectorTilesIdle } from './vectorTilesIdle.js';
4
+ import { yieldTask } from '../utils/yieldTask.js';
5
+
6
+ /**
7
+ * Update rendered tile paint incrementally while the zoom and session remain current.
8
+ *
9
+ * @returns {Promise<void>} Completion of the current paint revision.
10
+ */
11
+ export async function updateVectorTilePaint() {
12
+ const zoom = vectorStyleZoom(this), session = this.session;
13
+ if (this.paintZoom === zoom) return;
14
+ const revision = this.paintRevision = (this.paintRevision || 0) + 1;
15
+ let updated = 0, tile, batch;
16
+ for (tile of this.tiles.values()) {
17
+ if (!tile.rendered) continue;
18
+ for (batch of tile.rendered) {
19
+ if (!vectorTilesIdle(this, session) || this.paintRevision !== revision || vectorStyleZoom(this) !== zoom) return;
20
+ paintVectorTileBatch(batch, zoom);
21
+ if (++updated % 32 === 0) await yieldTask();
22
+ }
23
+ }
24
+ this.paintZoom = zoom;
25
+ }
@@ -1,32 +1,32 @@
1
- import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.js';
2
- import { vectorStyleZoom } from './vectorStyleZoom.js';
3
- import { reportError } from '../scene/reportLayerError.js';
4
-
5
- /**
6
- * Update needed tiles for the map bounds, then schedule loading, paint and labels.
7
- */
8
- export function updateVectorTiles() {
9
- if (!this.session) return;
10
- const { minNativeZoom, maxNativeZoom } = vectorTileOptionsByLayer.get(this);
11
- const z = Math.max(minNativeZoom, Math.min(maxNativeZoom, Math.floor(vectorStyleZoom(this))));
12
- const bounds = this._map.getBounds(), count = 2 ** z;
13
- const nw = this._map.project(bounds.getNorthWest(), z).divideBy(256);
14
- const se = this._map.project(bounds.getSouthEast(), z).divideBy(256);
15
- let tile, x, y, key;
16
- for (tile of this.tiles.values()) tile.needed = false;
17
- for (x = Math.floor(nw.x); x <= Math.floor(se.x); x++) {
18
- for (y = Math.max(0, Math.floor(nw.y)); y <= Math.min(count - 1, Math.floor(se.y)); y++) {
19
- key = `${z}/${x}/${y}`;
20
- tile = this.tiles.get(key);
21
- if (!tile) {
22
- tile = /* alloc */ { key, coords: /* alloc */ { z, x, y }, controller: /* alloc */ new AbortController() };
23
- this.tiles.set(key, tile);
24
- }
25
- tile.needed = true;
26
- }
27
- }
28
- this.prune();
29
- this.pump();
30
- this.updatePaint().catch(reportError.bind(null, this));
31
- this.updateLabels().catch(reportError.bind(null, this));
32
- }
1
+ import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.js';
2
+ import { vectorStyleZoom } from './vectorStyleZoom.js';
3
+ import { reportError } from '../scene/reportLayerError.js';
4
+
5
+ /**
6
+ * Update needed tiles for the map bounds, then schedule loading, paint and labels.
7
+ */
8
+ export function updateVectorTiles() {
9
+ if (!this.session) return;
10
+ const { minNativeZoom, maxNativeZoom } = vectorTileOptionsByLayer.get(this);
11
+ const z = Math.max(minNativeZoom, Math.min(maxNativeZoom, Math.floor(vectorStyleZoom(this))));
12
+ const bounds = this._map.getBounds(), count = 2 ** z;
13
+ const nw = this._map.project(bounds.getNorthWest(), z).divideBy(256);
14
+ const se = this._map.project(bounds.getSouthEast(), z).divideBy(256);
15
+ let tile, x, y, key;
16
+ for (tile of this.tiles.values()) tile.needed = false;
17
+ for (x = Math.floor(nw.x); x <= Math.floor(se.x); x++) {
18
+ for (y = Math.max(0, Math.floor(nw.y)); y <= Math.min(count - 1, Math.floor(se.y)); y++) {
19
+ key = `${z}/${x}/${y}`;
20
+ tile = this.tiles.get(key);
21
+ if (!tile) {
22
+ tile = /* alloc */ { key, coords: /* alloc */ { z, x, y }, controller: /* alloc */ new AbortController() };
23
+ this.tiles.set(key, tile);
24
+ }
25
+ tile.needed = true;
26
+ }
27
+ }
28
+ this.prune();
29
+ this.pump();
30
+ this.updatePaint().catch(reportError.bind(null, this));
31
+ this.updateLabels().catch(reportError.bind(null, this));
32
+ }
@@ -1,15 +1,15 @@
1
- /**
2
- * Validate the native and map zoom limits for a vector tile source.
3
- *
4
- * @param {number} minNativeZoom Minimum native zoom.
5
- * @param {number} maxNativeZoom Maximum native zoom.
6
- * @param {number} maxZoom Maximum map zoom.
7
- *
8
- * @throws {Error} If the zoom limits are noninteger, unordered or outside the supported range.
9
- */
10
- export function validateVectorTileZooms(minNativeZoom, maxNativeZoom, maxZoom) {
11
- if (!Number.isInteger(minNativeZoom) || !Number.isInteger(maxNativeZoom) || !Number.isInteger(maxZoom) ||
12
- minNativeZoom < 0 || maxNativeZoom < minNativeZoom || maxZoom < maxNativeZoom || maxZoom > 24) {
13
- throw /* alloc */ new Error('Invalid vector tile zoom range');
14
- }
15
- }
1
+ /**
2
+ * Validate the native and map zoom limits for a vector tile source.
3
+ *
4
+ * @param {number} minNativeZoom Minimum native zoom.
5
+ * @param {number} maxNativeZoom Maximum native zoom.
6
+ * @param {number} maxZoom Maximum map zoom.
7
+ *
8
+ * @throws {Error} If the zoom limits are noninteger, unordered or outside the supported range.
9
+ */
10
+ export function validateVectorTileZooms(minNativeZoom, maxNativeZoom, maxZoom) {
11
+ if (!Number.isInteger(minNativeZoom) || !Number.isInteger(maxNativeZoom) || !Number.isInteger(maxZoom) ||
12
+ minNativeZoom < 0 || maxNativeZoom < minNativeZoom || maxZoom < maxNativeZoom || maxZoom > 24) {
13
+ throw /* alloc */ new Error('Invalid vector tile zoom range');
14
+ }
15
+ }
@@ -1,25 +1,25 @@
1
- import { vectorPaint } from '../vector-style/vectorPaint.js';
2
- import { visibleStyle } from '../vector-style/visibleStyle.js';
3
-
4
- /**
5
- * Find usable fill or line paint for a compatible vector feature.
6
- *
7
- * @param {Object} entry Style layer entry.
8
- * @param {Object} feature Decoded feature.
9
- * @param {number} sampleZoom Initial style zoom.
10
- * @param {number} maxZoom Maximum zoom to search for visible line paint.
11
- *
12
- * @returns {Object|null} Paint, or null if no compatible visible paint exists.
13
- */
14
- export function vectorFeaturePaint(entry, feature, sampleZoom, maxZoom) {
15
- if (entry.type === 'fill') return feature.type === 3 ? vectorPaint(entry, feature.properties, sampleZoom) : null;
16
- if (entry.type !== 'line' || feature.type !== 2) return null;
17
- let paint = vectorPaint(entry, feature.properties, sampleZoom), candidate;
18
- if (paint.weight > 0 && paint.opacity > 0) return paint;
19
- for (candidate = maxZoom; candidate >= 0; candidate--) {
20
- if (!visibleStyle(entry, feature.properties, candidate)) continue;
21
- paint = vectorPaint(entry, feature.properties, candidate);
22
- if (paint.weight > 0 && paint.opacity > 0) return paint;
23
- }
24
- return null;
25
- }
1
+ import { vectorPaint } from '../vector-style/vectorPaint.js';
2
+ import { visibleStyle } from '../vector-style/visibleStyle.js';
3
+
4
+ /**
5
+ * Find usable fill or line paint for a compatible vector feature.
6
+ *
7
+ * @param {Object} entry Style layer entry.
8
+ * @param {Object} feature Decoded feature.
9
+ * @param {number} sampleZoom Initial style zoom.
10
+ * @param {number} maxZoom Maximum zoom to search for visible line paint.
11
+ *
12
+ * @returns {Object|null} Paint, or null if no compatible visible paint exists.
13
+ */
14
+ export function vectorFeaturePaint(entry, feature, sampleZoom, maxZoom) {
15
+ if (entry.type === 'fill') return feature.type === 3 ? vectorPaint(entry, feature.properties, sampleZoom) : null;
16
+ if (entry.type !== 'line' || feature.type !== 2) return null;
17
+ let paint = vectorPaint(entry, feature.properties, sampleZoom), candidate;
18
+ if (paint.weight > 0 && paint.opacity > 0) return paint;
19
+ for (candidate = maxZoom; candidate >= 0; candidate--) {
20
+ if (!visibleStyle(entry, feature.properties, candidate)) continue;
21
+ paint = vectorPaint(entry, feature.properties, candidate);
22
+ if (paint.weight > 0 && paint.opacity > 0) return paint;
23
+ }
24
+ return null;
25
+ }
@@ -1,26 +1,26 @@
1
- import { projectVectorTriangles } from './projectVectorTriangles.js';
2
- import { projectVectorPaths } from './projectVectorPaths.js';
3
- import { vectorTolerance } from './vectorTolerance.js';
4
-
5
- /**
6
- * Project and cache a feature's paths or fill triangles for the tile job.
7
- *
8
- * @param {Object} job Vector tile preparation job.
9
- * @param {Object} layer Decoded source layer.
10
- * @param {Object} entry Style layer entry.
11
- * @param {Object} feature Decoded feature.
12
- *
13
- * @returns {Array} Projected feature paths.
14
- */
15
- export function vectorFeaturePaths(job, layer, entry, feature) {
16
- const cache = entry.type === 'fill' ? job.triangles : job.projected;
17
- let paths = cache.get(feature);
18
- if (!paths) {
19
- const tolerance = vectorTolerance(job, layer);
20
- paths = entry.type === 'fill'
21
- ? projectVectorTriangles(feature.geometry, job.coords, layer.extent, tolerance)
22
- : projectVectorPaths(feature.geometry, job.coords, layer.extent, tolerance);
23
- cache.set(feature, paths);
24
- }
25
- return paths;
26
- }
1
+ import { projectVectorTriangles } from './projectVectorTriangles.js';
2
+ import { projectVectorPaths } from './projectVectorPaths.js';
3
+ import { vectorTolerance } from './vectorTolerance.js';
4
+
5
+ /**
6
+ * Project and cache a feature's paths or fill triangles for the tile job.
7
+ *
8
+ * @param {Object} job Vector tile preparation job.
9
+ * @param {Object} layer Decoded source layer.
10
+ * @param {Object} entry Style layer entry.
11
+ * @param {Object} feature Decoded feature.
12
+ *
13
+ * @returns {Array} Projected feature paths.
14
+ */
15
+ export function vectorFeaturePaths(job, layer, entry, feature) {
16
+ const cache = entry.type === 'fill' ? job.triangles : job.projected;
17
+ let paths = cache.get(feature);
18
+ if (!paths) {
19
+ const tolerance = vectorTolerance(job, layer);
20
+ paths = entry.type === 'fill'
21
+ ? projectVectorTriangles(feature.geometry, job.coords, layer.extent, tolerance)
22
+ : projectVectorPaths(feature.geometry, job.coords, layer.extent, tolerance);
23
+ cache.set(feature, paths);
24
+ }
25
+ return paths;
26
+ }
@@ -1,18 +1,18 @@
1
- import { visibleStyle } from '../vector-style/visibleStyle.js';
2
-
3
- /**
4
- * Find a zoom at which the style is visible for a feature.
5
- *
6
- * @param {Object} entry Style layer entry.
7
- * @param {Object} properties Feature properties.
8
- * @param {number} zoom Current style zoom.
9
- * @param {number} maxZoom Maximum fallback zoom.
10
- *
11
- * @returns {number} Visible zoom, or -1 if none is found.
12
- */
13
- export function vectorFeatureZoom(entry, properties, zoom, maxZoom) {
14
- if (visibleStyle(entry, properties, zoom)) return zoom;
15
- zoom = maxZoom;
16
- while (zoom >= 0 && !visibleStyle(entry, properties, zoom)) zoom--;
17
- return zoom;
18
- }
1
+ import { visibleStyle } from '../vector-style/visibleStyle.js';
2
+
3
+ /**
4
+ * Find a zoom at which the style is visible for a feature.
5
+ *
6
+ * @param {Object} entry Style layer entry.
7
+ * @param {Object} properties Feature properties.
8
+ * @param {number} zoom Current style zoom.
9
+ * @param {number} maxZoom Maximum fallback zoom.
10
+ *
11
+ * @returns {number} Visible zoom, or -1 if none is found.
12
+ */
13
+ export function vectorFeatureZoom(entry, properties, zoom, maxZoom) {
14
+ if (visibleStyle(entry, properties, zoom)) return zoom;
15
+ zoom = maxZoom;
16
+ while (zoom >= 0 && !visibleStyle(entry, properties, zoom)) zoom--;
17
+ return zoom;
18
+ }
@@ -1,31 +1,31 @@
1
- import { vectorStraightRun } from './vectorStraightRun.js';
2
-
3
- /**
4
- * Spread anchors along a path, recording segment ends and straight-run lengths.
5
- *
6
- * @param {Array} path Tile-coordinate points.
7
- * @param {number} spacing Desired anchor spacing.
8
- *
9
- * @returns {Array} Label anchors.
10
- */
11
- export function vectorLabelAnchors(path, spacing) {
12
- const anchors = /* alloc */ [];
13
- let length = 0, i, walked, target, count, k, segment, t, point;
14
- for (i = 1; i < path.length; i++) length += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);
15
- count = Math.max(1, Math.floor(length / spacing));
16
- i = 1; walked = 0;
17
- for (k = 0; k < count; k++) {
18
- target = (k + 0.5) * length / count;
19
- while (i < path.length - 1 && walked + Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]) < target) {
20
- walked += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]); i++;
21
- }
22
- segment = Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);
23
- t = segment ? Math.min(1, Math.max(0, (target - walked) / segment)) : 0;
24
- point = /* alloc */ [
25
- path[i - 1][0] + (path[i][0] - path[i - 1][0]) * t, path[i - 1][1] + (path[i][1] - path[i - 1][1]) * t,
26
- ];
27
- anchors.push(/* alloc */ { point, a: path[i - 1], b: path[i],
28
- length: vectorStraightRun(path, i, point, 1) + vectorStraightRun(path, i, point, -1) });
29
- }
30
- return anchors;
31
- }
1
+ import { vectorStraightRun } from './vectorStraightRun.js';
2
+
3
+ /**
4
+ * Spread anchors along a path, recording segment ends and straight-run lengths.
5
+ *
6
+ * @param {Array} path Tile-coordinate points.
7
+ * @param {number} spacing Desired anchor spacing.
8
+ *
9
+ * @returns {Array} Label anchors.
10
+ */
11
+ export function vectorLabelAnchors(path, spacing) {
12
+ const anchors = /* alloc */ [];
13
+ let length = 0, i, walked, target, count, k, segment, t, point;
14
+ for (i = 1; i < path.length; i++) length += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);
15
+ count = Math.max(1, Math.floor(length / spacing));
16
+ i = 1; walked = 0;
17
+ for (k = 0; k < count; k++) {
18
+ target = (k + 0.5) * length / count;
19
+ while (i < path.length - 1 && walked + Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]) < target) {
20
+ walked += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]); i++;
21
+ }
22
+ segment = Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);
23
+ t = segment ? Math.min(1, Math.max(0, (target - walked) / segment)) : 0;
24
+ point = /* alloc */ [
25
+ path[i - 1][0] + (path[i][0] - path[i - 1][0]) * t, path[i - 1][1] + (path[i][1] - path[i - 1][1]) * t,
26
+ ];
27
+ anchors.push(/* alloc */ { point, a: path[i - 1], b: path[i],
28
+ length: vectorStraightRun(path, i, point, 1) + vectorStraightRun(path, i, point, -1) });
29
+ }
30
+ return anchors;
31
+ }
@@ -1,18 +1,18 @@
1
- import { compareVectorLabelPriority } from './compareVectorLabelPriority.js';
2
-
3
- /**
4
- * Collect candidates from needed tiles and sort them by label priority.
5
- *
6
- * @param {Object} layer Vector tile layer.
7
- *
8
- * @returns {Array} Sorted label candidates.
9
- */
10
- export function vectorLabelCandidates(layer) {
11
- const candidates = /* alloc */ [];
12
- let tile, label;
13
- for (tile of layer.tiles.values()) {
14
- if (!tile.needed || !tile.labelCandidates) continue;
15
- for (label of tile.labelCandidates) candidates.push(label);
16
- }
17
- return candidates.sort(compareVectorLabelPriority);
18
- }
1
+ import { compareVectorLabelPriority } from './compareVectorLabelPriority.js';
2
+
3
+ /**
4
+ * Collect candidates from needed tiles and sort them by label priority.
5
+ *
6
+ * @param {Object} layer Vector tile layer.
7
+ *
8
+ * @returns {Array} Sorted label candidates.
9
+ */
10
+ export function vectorLabelCandidates(layer) {
11
+ const candidates = /* alloc */ [];
12
+ let tile, label;
13
+ for (tile of layer.tiles.values()) {
14
+ if (!tile.needed || !tile.labelCandidates) continue;
15
+ for (label of tile.labelCandidates) candidates.push(label);
16
+ }
17
+ return candidates.sort(compareVectorLabelPriority);
18
+ }
@@ -1,32 +1,32 @@
1
- import { vectorStyleZoom } from './vectorStyleZoom.js';
2
- import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.js';
3
- import { visibleStyle } from '../vector-style/visibleStyle.js';
4
- import { updateVectorLabelStyle } from './updateVectorLabelStyle.js';
5
-
6
- /**
7
- * Compute screen cells occupied by a visible, placeable vector label.
8
- *
9
- * @param {Object} layer Vector tile layer.
10
- * @param {Object} label Label candidate.
11
- * @param {Object} size Map viewport size.
12
- *
13
- * @returns {Array<string>|null} Occupied cell keys, or null if the label cannot be placed.
14
- */
15
- export function vectorLabelCells(layer, label, size) {
16
- const map = layer._map, zoom = vectorStyleZoom(layer);
17
- if (!visibleStyle(label.entry, label.properties, zoom)) return null;
18
- updateVectorLabelStyle(label, zoom);
19
- if (!(label.size > 0)) return null;
20
- if (label.icon && !vectorTileOptionsByLayer.get(layer).spriteSheet?.index[label.icon]) return null;
21
- if (label.along && label.pixelBase * 2 ** map.getZoom() < label.text.length * label.size * 0.6) return null;
22
- const point = map.latLngToContainerPoint(label.latlng);
23
- if (point.x < 0 || point.y < 0 || point.x > size.x || point.y > size.y) return null;
24
- const width = label.text.length * label.size * 0.65 + 16, cells = /* alloc */ [];
25
- let x, y;
26
- for (x = Math.floor((point.x - width / 2) / 32); x <= Math.floor((point.x + width / 2) / 32); x++) {
27
- for (y = Math.floor((point.y - label.size) / 24); y <= Math.floor((point.y + label.size) / 24); y++) {
28
- cells.push(`${x}:${y}`);
29
- }
30
- }
31
- return cells;
32
- }
1
+ import { vectorStyleZoom } from './vectorStyleZoom.js';
2
+ import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.js';
3
+ import { visibleStyle } from '../vector-style/visibleStyle.js';
4
+ import { updateVectorLabelStyle } from './updateVectorLabelStyle.js';
5
+
6
+ /**
7
+ * Compute screen cells occupied by a visible, placeable vector label.
8
+ *
9
+ * @param {Object} layer Vector tile layer.
10
+ * @param {Object} label Label candidate.
11
+ * @param {Object} size Map viewport size.
12
+ *
13
+ * @returns {Array<string>|null} Occupied cell keys, or null if the label cannot be placed.
14
+ */
15
+ export function vectorLabelCells(layer, label, size) {
16
+ const map = layer._map, zoom = vectorStyleZoom(layer);
17
+ if (!visibleStyle(label.entry, label.properties, zoom)) return null;
18
+ updateVectorLabelStyle(label, zoom);
19
+ if (!(label.size > 0)) return null;
20
+ if (label.icon && !vectorTileOptionsByLayer.get(layer).spriteSheet?.index[label.icon]) return null;
21
+ if (label.along && label.pixelBase * 2 ** map.getZoom() < label.text.length * label.size * 0.6) return null;
22
+ const point = map.latLngToContainerPoint(label.latlng);
23
+ if (point.x < 0 || point.y < 0 || point.x > size.x || point.y > size.y) return null;
24
+ const width = label.text.length * label.size * 0.65 + 16, cells = /* alloc */ [];
25
+ let x, y;
26
+ for (x = Math.floor((point.x - width / 2) / 32); x <= Math.floor((point.x + width / 2) / 32); x++) {
27
+ for (y = Math.floor((point.y - label.size) / 24); y <= Math.floor((point.y + label.size) / 24); y++) {
28
+ cells.push(`${x}:${y}`);
29
+ }
30
+ }
31
+ return cells;
32
+ }