leaflet-city-mapper 0.0.9 → 0.1.0
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.
- package/README.md +6 -46
- package/dist/README.md +18 -0
- package/dist/leaflet-city-mapper-src.js +279 -110
- package/dist/leaflet-city-mapper-src.js.map +4 -4
- package/dist/leaflet-city-mapper-worker-src.js.map +2 -2
- package/dist/leaflet-city-mapper-worker.js.map +2 -2
- package/dist/leaflet-city-mapper.js +5 -5
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/libs/README.md +18 -0
- package/libs/leaflet.js +1 -1
- package/package.json +1 -1
- package/src/README.md +148 -0
- package/src/animations/README.md +30 -0
- package/src/animations/cancelCameraAnimation.js +11 -9
- package/src/animations/cancelGridFade.js +5 -3
- package/src/animations/endZoom.js +0 -5
- package/src/animations/mapAnimateCamera.js +13 -3
- package/src/animations/mapStopPitchBearingAnimation.js +9 -2
- package/src/animations/onZoomAnim.js +5 -4
- package/src/animations/renderPendingZoomAnimation.js +1 -4
- package/src/animations/runCameraAnimations.js +7 -4
- package/src/animations/runGridFades.js +1 -4
- package/src/animations/runMarkerPanFrame.js +1 -1
- package/src/animations/scheduleCameraAnimation.js +11 -9
- package/src/animations/scheduleGridFade.js +5 -4
- package/src/animations/scheduleMarkerPan.js +10 -6
- package/src/animations/startZoom.js +0 -3
- package/src/animations/synchronizeZoomView.js +6 -1
- package/src/animations/updateZoomCamera.js +9 -5
- package/src/archives/README.md +28 -0
- package/src/archives/decodeDirectory.js +13 -2
- package/src/archives/decodeHeader.js +9 -2
- package/src/archives/decompress.js +10 -0
- package/src/archives/findDirectoryEntry.js +8 -0
- package/src/archives/findTile.js +14 -0
- package/src/archives/getDirectoryEntries.js +13 -2
- package/src/archives/getHeader.js +7 -2
- package/src/archives/getTileData.js +13 -0
- package/src/archives/getZxy.js +11 -3
- package/src/archives/loadDirectory.js +10 -0
- package/src/archives/loadSource.js +12 -3
- package/src/archives/readArchiveRange.js +18 -4
- package/src/archives/readVarint.js +11 -2
- package/src/archives/tileId.js +11 -2
- package/src/astronomy/README.md +25 -0
- package/src/astronomy/horizontalPosition.js +11 -0
- package/src/astronomy/moonPosition.js +9 -2
- package/src/astronomy/solarPosition.js +9 -2
- package/src/astronomy/solarTime.js +11 -1
- package/src/camera/README.md +30 -0
- package/src/camera/cameraMapReady.js +4 -6
- package/src/camera/cleanupCameraMap.js +6 -8
- package/src/camera/constrainCameraToBounds.js +1 -0
- package/src/camera/createSceneCamera.js +5 -1
- package/src/camera/fitCameraBounds.js +9 -1
- package/src/camera/getBearing.js +5 -0
- package/src/camera/getPitch.js +5 -0
- package/src/camera/initializeCameraMap.js +1 -3
- package/src/camera/mapCamera.js +0 -2
- package/src/camera/mapContainerPointToLayerPoint.js +7 -2
- package/src/camera/mapGetBearing.js +7 -2
- package/src/camera/mapGetBounds.js +5 -2
- package/src/camera/mapGetBoundsCenterZoom.js +13 -6
- package/src/camera/mapGetBoundsZoom.js +9 -2
- package/src/camera/mapGetCenterLayerPoint.js +5 -1
- package/src/camera/mapGetPitch.js +7 -2
- package/src/camera/mapLayerPointToContainerPoint.js +7 -1
- package/src/camera/mapLimitCenter.js +9 -2
- package/src/camera/mapLimitOffset.js +13 -7
- package/src/camera/mapPanBy.js +12 -5
- package/src/camera/mapPanInside.js +8 -2
- package/src/camera/mapResetNorth.js +8 -0
- package/src/camera/mapResetNorthPitch.js +8 -0
- package/src/camera/mapSetBearing.js +10 -0
- package/src/camera/mapSetPitch.js +10 -0
- package/src/camera/mapSetPitchAndBearing.js +12 -3
- package/src/camera/mapSetZoomAround.js +9 -1
- package/src/camera/mapTryAnimatedPan.js +8 -1
- package/src/camera/mapUpdateCameraOverlays.js +6 -0
- package/src/camera/setBearing.js +8 -0
- package/src/camera/setPitch.js +8 -0
- package/src/camera/updateMapCamera.js +6 -4
- package/src/camera/updateSceneCamera.js +7 -1
- package/src/camera/updateSky.js +1 -3
- package/src/cog/README.md +29 -0
- package/src/cog/decodeCogTile.js +13 -0
- package/src/cog/finiteCogValues.js +7 -0
- package/src/cog/getCogAssetEntry.js +11 -0
- package/src/cog/getCogBase.js +12 -0
- package/src/cog/getCogHeader.js +7 -0
- package/src/cog/getCogProfile.js +9 -0
- package/src/cog/getCogTile.js +13 -0
- package/src/cog/getColorTile.js +13 -0
- package/src/cog/getElevationTile.js +13 -0
- package/src/cog/hasCogProjection.js +7 -0
- package/src/cog/initCog.js +6 -0
- package/src/cog/invalidCogFullResponse.js +7 -0
- package/src/cog/openCog.js +11 -1
- package/src/cog/openCogAsset.js +8 -0
- package/src/cog/readCog.js +14 -0
- package/src/cog/readCogBlock.js +11 -0
- package/src/cog/readCogBody.js +10 -0
- package/src/cog/readCogDirectories.js +12 -0
- package/src/cog/readCogDirectory.js +13 -0
- package/src/cog/readCogLevel.js +9 -0
- package/src/cog/readCogTag.js +13 -0
- package/src/cog/validCogDimensions.js +9 -0
- package/src/cog/validCogEncoding.js +13 -0
- package/src/cog/validCogGeoArrays.js +9 -0
- package/src/cog/validCogGrid.js +13 -0
- package/src/cog/validCogTileCoordinates.js +9 -0
- package/src/cog/validateCogContainer.js +8 -0
- package/src/cog/validateCogContentRange.js +10 -0
- package/src/cog/validateCogOffsets.js +9 -0
- package/src/cog/validateCogRange.js +9 -0
- package/src/cog/validateCogResponse.js +11 -0
- package/src/collision/README.md +28 -0
- package/src/collision/advanceFeature.js +13 -0
- package/src/collision/boxNormal.js +29 -0
- package/src/collision/cachedCollider.js +18 -0
- package/src/collision/collectIntersections.js +28 -3
- package/src/collision/collectMeshes.js +6 -0
- package/src/collision/collideTrip.js +56 -0
- package/src/collision/collider.js +28 -18
- package/src/collision/countCrossings.js +35 -15
- package/src/collision/enclosesOrigin.js +13 -0
- package/src/collision/flipsNormal.js +15 -0
- package/src/collision/hiddenLightHit.js +11 -0
- package/src/collision/horizontalRay.js +13 -1
- package/src/collision/indexTriangle.js +7 -0
- package/src/collision/insideMesh.js +16 -2
- package/src/collision/insideWalker.js +7 -1
- package/src/collision/intersectMeshes.js +9 -1
- package/src/collision/localRay.js +10 -0
- package/src/collision/mergeHits.js +8 -0
- package/src/collision/missesBox.js +13 -0
- package/src/collision/rayBounds.js +9 -0
- package/src/collision/readTriangle.js +9 -0
- package/src/collision/slabDistance.js +14 -0
- package/src/collision/slabMiss.js +14 -0
- package/src/collision/sortCrossings.js +17 -0
- package/src/collision/sortHits.js +9 -1
- package/src/collision/trafficBounds.js +24 -0
- package/src/collision/trafficCollision.js +24 -49
- package/src/collision/trafficRay.js +21 -0
- package/src/collision/transformTriangle.js +9 -0
- package/src/collision/transformVertices.js +18 -0
- package/src/collision/triangleDistance.js +14 -1
- package/src/collision/vertexCount.js +8 -0
- package/src/collision/worldHit.js +12 -0
- package/src/colors/README.md +25 -0
- package/src/colors/formatRGB.js +7 -0
- package/src/colors/hslChannel.js +10 -0
- package/src/colors/mixColor.js +10 -0
- package/src/colors/parseColor.js +4 -1
- package/src/colors/toSRGB.js +7 -0
- package/src/controls/README.md +26 -0
- package/src/controls/acceptPitchDrag.js +7 -0
- package/src/controls/acceptRotateDrag.js +7 -0
- package/src/controls/addCameraHandler.js +7 -0
- package/src/controls/adjustCameraDrag.js +6 -8
- package/src/controls/cameraControls.js +5 -4
- package/src/controls/cameraDragClick.js +5 -1
- package/src/controls/cameraDragContextMenu.js +7 -3
- package/src/controls/cameraDragDown.js +5 -2
- package/src/controls/cameraDragEnd.js +8 -4
- package/src/controls/cameraDragMove.js +12 -8
- package/src/controls/changeCameraTouch.js +6 -8
- package/src/controls/cleanupCameraTouch.js +1 -4
- package/src/controls/compassAddHooks.js +1 -0
- package/src/controls/compassOrientation.js +7 -1
- package/src/controls/compassRemoveHooks.js +1 -0
- package/src/controls/containerResizeAddHooks.js +1 -0
- package/src/controls/containerResizeRemoveHooks.js +1 -0
- package/src/controls/dragCamera.js +11 -2
- package/src/controls/endAllCameraDrags.js +1 -2
- package/src/controls/endAllCameraTouches.js +1 -2
- package/src/controls/endCameraTouch.js +6 -0
- package/src/controls/endCameraTouchEvent.js +5 -2
- package/src/controls/failCompassPermission.js +6 -0
- package/src/controls/finishCameraDrag.js +6 -0
- package/src/controls/finishCompassPermission.js +7 -0
- package/src/controls/isEditableTarget.js +7 -0
- package/src/controls/loadCameraControls.js +9 -0
- package/src/controls/moveCameraTouch.js +9 -6
- package/src/controls/notifyCameraTouchChange.js +1 -0
- package/src/controls/pitchDragAddHooks.js +1 -1
- package/src/controls/pitchDragRemoveHooks.js +1 -0
- package/src/controls/refreshRotateControl.js +2 -0
- package/src/controls/refreshRotateFocus.js +3 -2
- package/src/controls/removeCameraDrag.js +15 -12
- package/src/controls/resizeMap.js +5 -0
- package/src/controls/rotateButtonClick.js +6 -1
- package/src/controls/rotateButtonKeydown.js +10 -4
- package/src/controls/rotateControl.js +9 -1
- package/src/controls/rotateOnAdd.js +7 -1
- package/src/controls/rotateOnRemove.js +5 -0
- package/src/controls/shiftRotateAddHooks.js +1 -1
- package/src/controls/shiftRotateRemoveHooks.js +1 -0
- package/src/controls/shiftRotateWheel.js +9 -4
- package/src/controls/startCameraTouch.js +5 -2
- package/src/core/README.md +28 -0
- package/src/core/adjustCameraMarkerPan.js +7 -2
- package/src/core/cameraCircleBounds.js +5 -1
- package/src/core/cameraMarkerDrag.js +1 -2
- package/src/core/cameraMarkerOnDrag.js +7 -4
- package/src/core/closestCameraLayerPoint.js +7 -1
- package/src/core/constructLayer.js +7 -0
- package/src/core/extendLeafletClass.js +7 -0
- package/src/core/extendTerrainPixelBounds.js +10 -0
- package/src/core/fireRasterLoad.js +1 -1
- package/src/core/gridlayerGetEvents.js +5 -2
- package/src/core/gridlayerGetTiledPixelBounds.js +7 -1
- package/src/core/initializeGridContainer.js +1 -1
- package/src/core/initializeNativeLayer.js +1 -4
- package/src/core/layerAddInitHook.js +5 -0
- package/src/core/layerCallInitHooks.js +1 -2
- package/src/core/layerMergeOptions.js +7 -0
- package/src/core/markerGetEvents.js +5 -2
- package/src/core/markerInitInteraction.js +8 -5
- package/src/core/markerSetIcon.js +11 -6
- package/src/core/markerSetPos.js +5 -2
- package/src/core/markerSetRotation.js +10 -0
- package/src/core/markerUpdateZIndex.js +6 -4
- package/src/core/popupAdjustPan.js +5 -2
- package/src/core/popupGetEvents.js +5 -1
- package/src/core/popupUpdatePosition.js +1 -2
- package/src/core/projectNativePath.js +7 -0
- package/src/core/redrawPath.js +5 -0
- package/src/core/removeLayer.js +10 -7
- package/src/core/setRotation.js +7 -0
- package/src/core/tooltipGetEvents.js +5 -1
- package/src/core/tooltipSetPosition.js +5 -2
- package/src/core/updateGridOpacity.js +2 -1
- package/src/core/whenReady.js +9 -6
- package/src/geometry/README.md +29 -0
- package/src/geometry/addBridges.js +8 -6
- package/src/geometry/addGeneratedTriangle.js +8 -4
- package/src/geometry/appendAreaTriangle.js +15 -0
- package/src/geometry/appendNativeTriangle.js +14 -0
- package/src/geometry/appendRouteDash.js +18 -0
- package/src/geometry/appendRouteSegment.js +13 -0
- package/src/geometry/assembleAreaGeometry.js +7 -0
- package/src/geometry/boundsQuad.js +8 -0
- package/src/geometry/box.js +10 -0
- package/src/geometry/bridgeEdge.js +7 -0
- package/src/geometry/bridgeElevation.js +8 -1
- package/src/geometry/bridgeFaces.js +7 -0
- package/src/geometry/bridgePaths.js +8 -0
- package/src/geometry/bridgePolygon.js +6 -0
- package/src/geometry/bridgeSides.js +7 -0
- package/src/geometry/buildGeometryParts.js +7 -0
- package/src/geometry/buildProjectedPoint.js +11 -0
- package/src/geometry/buildProjectedPolygon.js +9 -0
- package/src/geometry/circleAt.js +15 -2
- package/src/geometry/circleGeometry.js +6 -0
- package/src/geometry/clipLine.js +8 -1
- package/src/geometry/clipSegment.js +9 -0
- package/src/geometry/computeBounds.js +5 -2
- package/src/geometry/conformModelToTerrain.js +6 -3
- package/src/geometry/createLampRing.js +8 -0
- package/src/geometry/createModelGeometry.js +11 -1
- package/src/geometry/createRasterQuadGeometry.js +7 -1
- package/src/geometry/createTreeRing.js +8 -1
- package/src/geometry/crossVector.js +8 -0
- package/src/geometry/dashValues.js +9 -0
- package/src/geometry/dashedSegment.js +12 -0
- package/src/geometry/disk.js +9 -0
- package/src/geometry/diskAt.js +14 -2
- package/src/geometry/emitter.js +10 -0
- package/src/geometry/fillNativePolygon.js +8 -0
- package/src/geometry/generateTreeGeometry.js +11 -5
- package/src/geometry/indexBridge.js +8 -2
- package/src/geometry/instanceAreaGeometry.js +7 -1
- package/src/geometry/interpolateRoute.js +10 -2
- package/src/geometry/lampPostGeometry.js +9 -2
- package/src/geometry/lightGeometry.js +9 -2
- package/src/geometry/line.js +7 -0
- package/src/geometry/lineJoin.js +9 -0
- package/src/geometry/markerImageBounds.js +9 -0
- package/src/geometry/markerQuadCorners.js +9 -3
- package/src/geometry/meshShadowBounds.js +9 -0
- package/src/geometry/nativeGeometry.js +9 -1
- package/src/geometry/offsetBelowGround.js +7 -0
- package/src/geometry/polygon.js +7 -0
- package/src/geometry/quad.js +14 -0
- package/src/geometry/restoreGeometry.js +6 -0
- package/src/geometry/roofCoverage.js +12 -5
- package/src/geometry/roofFootprint.js +12 -4
- package/src/geometry/routeGeometry.js +7 -2
- package/src/geometry/samePoint.js +8 -0
- package/src/geometry/segment.js +9 -0
- package/src/geometry/setVertexColor.js +1 -1
- package/src/geometry/shadowBounds.js +8 -0
- package/src/geometry/subtractRoofTile.js +9 -0
- package/src/geometry/subtractVector.js +8 -0
- package/src/geometry/surface.js +11 -1
- package/src/geometry/terrainBuffers.js +10 -3
- package/src/geometry/terrainGrid.js +7 -2
- package/src/geometry/terrainTileGeometry.js +13 -4
- package/src/geometry/treeGeometry.js +7 -4
- package/src/geometry/triangle.js +11 -0
- package/src/geometry/validateTree.js +12 -0
- package/src/geometry/vertexNormals.js +8 -2
- package/src/geometry/visitNativeCoordinates.js +7 -0
- package/src/globals/CELL.js +6 -2
- package/src/globals/Compass.js +5 -0
- package/src/globals/ContainerResize.js +5 -0
- package/src/globals/HEIGHT.js +5 -0
- package/src/globals/L.js +5 -0
- package/src/globals/PitchDrag.js +5 -0
- package/src/globals/README.md +28 -0
- package/src/globals/ShiftRotate.js +5 -0
- package/src/globals/TILE_RADIUS.js +5 -0
- package/src/globals/TILE_SIZE.js +5 -0
- package/src/globals/TouchMode.js +5 -0
- package/src/globals/alphaBlend.js +5 -0
- package/src/globals/archiveDecoder.js +5 -0
- package/src/globals/archiveNorthWest.js +5 -0
- package/src/globals/archiveSouthEast.js +5 -0
- package/src/globals/atmosphereColor.js +5 -0
- package/src/globals/atmosphereStops.js +5 -0
- package/src/globals/blobParts.js +5 -0
- package/src/globals/cameraAngles.js +5 -0
- package/src/globals/cameraAnimatedOptions.js +5 -0
- package/src/globals/cameraAnimationFrame.js +5 -0
- package/src/globals/cameraAnimations.js +5 -0
- package/src/globals/cameraBearingSensitivity.js +5 -0
- package/src/globals/cameraDragSensitivity.js +5 -0
- package/src/globals/cameraDrags.js +5 -0
- package/src/globals/cameraEmptyOptions.js +5 -0
- package/src/globals/cameraFocusOptions.js +5 -0
- package/src/globals/cameraFov.js +5 -0
- package/src/globals/cameraListenerOptions.js +5 -0
- package/src/globals/cameraTouchStates.js +5 -0
- package/src/globals/cameraZeroPadding.js +5 -0
- package/src/globals/cogTags.js +5 -0
- package/src/globals/colorLayout.js +5 -0
- package/src/globals/colorTexture.js +5 -0
- package/src/globals/coreEventTypes.js +5 -0
- package/src/globals/coreMatrixKeys.js +5 -0
- package/src/globals/coreQuadIndices.js +5 -0
- package/src/globals/coreQuadUV.js +5 -0
- package/src/globals/coreSampler.js +5 -0
- package/src/globals/coreWhite.js +5 -0
- package/src/globals/cosObliquity.js +5 -0
- package/src/globals/coverageTiles.js +5 -0
- package/src/globals/dark.js +5 -0
- package/src/globals/defaultMaterial.js +5 -0
- package/src/globals/degrees.js +5 -0
- package/src/globals/demBuffer.js +5 -0
- package/src/globals/demLayout.js +5 -0
- package/src/globals/demSize.js +5 -0
- package/src/globals/demTarget.js +5 -0
- package/src/globals/demTexture.js +5 -0
- package/src/globals/depthBindGroup.js +5 -0
- package/src/globals/depthTexture.js +5 -0
- package/src/globals/directoryReader.js +5 -0
- package/src/globals/disabledShadow.js +5 -0
- package/src/globals/drawEntries.js +5 -0
- package/src/globals/drawFrameEntry.js +5 -0
- package/src/globals/drawMeshEntry.js +5 -0
- package/src/globals/drawSamplerEntries.js +5 -0
- package/src/globals/drawTerrainEntry.js +5 -0
- package/src/globals/drawTextureEntries.js +5 -0
- package/src/globals/earthCirc.js +5 -0
- package/src/globals/elevationWGSL.js +2 -0
- package/src/globals/fragmentShader.js +5 -0
- package/src/globals/frameBuffer.js +5 -0
- package/src/globals/frameCommands.js +5 -0
- package/src/globals/frameLayoutEntry.js +5 -0
- package/src/globals/geometryDecoder.js +5 -0
- package/src/globals/geometryEmpty.js +5 -0
- package/src/globals/geometryImageOptions.js +5 -0
- package/src/globals/geometryPixelStates.js +5 -0
- package/src/globals/geometryQuaternion.js +5 -0
- package/src/globals/geometryScale.js +5 -0
- package/src/globals/geometrySemantics.js +5 -0
- package/src/globals/geometryTranslation.js +5 -0
- package/src/globals/geometryWorkerUrl.js +5 -0
- package/src/globals/glass.js +5 -0
- package/src/globals/gridEvents.js +5 -0
- package/src/globals/gridFadeFrame.js +5 -0
- package/src/globals/halfRadians.js +5 -0
- package/src/globals/headerBounds.js +5 -0
- package/src/globals/headerFlags.js +5 -0
- package/src/globals/headerOffsets.js +5 -0
- package/src/globals/headlight.js +5 -0
- package/src/globals/hull.js +5 -0
- package/src/globals/instanceLayout.js +5 -0
- package/src/globals/lampDirections.js +5 -0
- package/src/globals/layerControlAddItem.js +5 -0
- package/src/globals/layerProto.js +5 -0
- package/src/globals/leafletLayer.js +5 -0
- package/src/globals/lightScale.js +5 -0
- package/src/globals/limbs.js +5 -1
- package/src/globals/loading.js +5 -0
- package/src/globals/mapMethods.js +5 -0
- package/src/globals/markerMethods.js +5 -0
- package/src/globals/markerPanFrame.js +5 -0
- package/src/globals/meshBindGroup.js +5 -0
- package/src/globals/meshBuffer.js +5 -0
- package/src/globals/meshCopySize.js +5 -0
- package/src/globals/meshImage.js +5 -0
- package/src/globals/meshLayoutEntry.js +5 -0
- package/src/globals/meshOffsets.js +5 -0
- package/src/globals/meshPipeline.js +5 -0
- package/src/globals/meshStack.js +5 -0
- package/src/globals/meshTarget.js +5 -0
- package/src/globals/moves.js +5 -1
- package/src/globals/mvtTextDecoder.js +5 -0
- package/src/globals/nativeMethodHandlers.js +5 -0
- package/src/globals/nativeScalableStyleKeys.js +5 -0
- package/src/globals/nextId.js +5 -0
- package/src/globals/normalLayout.js +5 -0
- package/src/globals/paints.js +5 -0
- package/src/globals/parts.js +5 -0
- package/src/globals/pendingGridFades.js +5 -0
- package/src/globals/pendingInitializations.js +5 -0
- package/src/globals/pendingMapChanges.js +5 -0
- package/src/globals/pendingMarkerPan.js +5 -0
- package/src/globals/pendingPlacements.js +5 -0
- package/src/globals/pendingRasterLoads.js +5 -0
- package/src/globals/pendingUpdates.js +5 -0
- package/src/globals/pendingZoomAnimations.js +5 -0
- package/src/globals/pipelineLayout.js +5 -0
- package/src/globals/popupEvents.js +5 -0
- package/src/globals/popupPan.js +5 -0
- package/src/globals/popupPosition.js +5 -0
- package/src/globals/positionLayout.js +5 -0
- package/src/globals/programEntries.js +5 -0
- package/src/globals/programLayout.js +5 -0
- package/src/globals/radians.js +5 -0
- package/src/globals/rasterBuffer.js +5 -0
- package/src/globals/rasterIndices.js +5 -0
- package/src/globals/rasterNormals.js +5 -0
- package/src/globals/rasterPoint.js +5 -0
- package/src/globals/rasterPositions.js +5 -0
- package/src/globals/rasterSampler.js +5 -0
- package/src/globals/rasterTexture.js +5 -0
- package/src/globals/rasterUVs.js +5 -0
- package/src/globals/removeLayer.js +5 -0
- package/src/globals/renderEmpty.js +5 -0
- package/src/globals/ringDirections.js +5 -0
- package/src/globals/roofBindGroup.js +5 -0
- package/src/globals/roofBlitSampler.js +5 -0
- package/src/globals/roofBuffer.js +5 -0
- package/src/globals/roofCommands.js +5 -0
- package/src/globals/roofCopySize.js +5 -0
- package/src/globals/roofImage.js +5 -0
- package/src/globals/roofMin.js +5 -0
- package/src/globals/roofOpacities.js +5 -0
- package/src/globals/roofPass.js +5 -0
- package/src/globals/roofPipeline.js +5 -0
- package/src/globals/roofSampler.js +5 -0
- package/src/globals/roofShader.js +5 -0
- package/src/globals/roofSignatures.js +5 -0
- package/src/globals/roofSize.js +5 -0
- package/src/globals/roofTarget.js +5 -0
- package/src/globals/roofTexture.js +5 -0
- package/src/globals/roofTiles.js +5 -0
- package/src/globals/roundProfile.js +5 -0
- package/src/globals/samplerLayoutEntries.js +5 -0
- package/src/globals/sceneCleanupFields.js +5 -0
- package/src/globals/sceneEmptyOptions.js +5 -0
- package/src/globals/scenePass.js +5 -0
- package/src/globals/sceneSunlightUniforms.js +5 -0
- package/src/globals/sceneTransferFields.js +5 -0
- package/src/globals/sceneWalkHandlers.js +5 -0
- package/src/globals/shadowBindGroup.js +5 -0
- package/src/globals/shadowBounds.js +5 -0
- package/src/globals/shadowCamera.js +5 -0
- package/src/globals/shadowDepthLayout.js +5 -0
- package/src/globals/shadowHigh.js +5 -0
- package/src/globals/shadowInstanceLayouts.js +5 -0
- package/src/globals/shadowLayouts.js +5 -0
- package/src/globals/shadowLow.js +5 -0
- package/src/globals/shadowMeshLayout.js +5 -0
- package/src/globals/shadowOffsets.js +5 -0
- package/src/globals/shadowPass.js +5 -0
- package/src/globals/shadowPipeline.js +5 -0
- package/src/globals/shadowPipelineLayout.js +5 -0
- package/src/globals/shadowShader.js +5 -0
- package/src/globals/shadowTexture.js +5 -0
- package/src/globals/shadowValues.js +5 -0
- package/src/globals/shirt.js +5 -0
- package/src/globals/sinObliquity.js +5 -0
- package/src/globals/sizes.js +5 -0
- package/src/globals/skin.js +5 -0
- package/src/globals/speed.js +5 -1
- package/src/globals/sunBindGroup.js +5 -0
- package/src/globals/taillight.js +5 -0
- package/src/globals/tau.js +5 -0
- package/src/globals/terrainLayoutEntry.js +5 -0
- package/src/globals/textureLayoutEntries.js +5 -0
- package/src/globals/tiledBounds.js +5 -0
- package/src/globals/tooltipEvents.js +5 -0
- package/src/globals/tooltipPosition.js +5 -0
- package/src/globals/trafficClocks.js +5 -0
- package/src/globals/trafficEmptyList.js +5 -0
- package/src/globals/trafficEmptyOptions.js +5 -0
- package/src/globals/trafficRouteMaterial.js +5 -0
- package/src/globals/trafficShader.js +5 -1
- package/src/globals/triangleContexts.js +5 -0
- package/src/globals/trousers.js +5 -0
- package/src/globals/types.js +5 -0
- package/src/globals/tyre.js +5 -0
- package/src/globals/uVLayout.js +5 -0
- package/src/globals/vectorStyleNamedColors.js +5 -0
- package/src/globals/vectorTileEvents.js +5 -0
- package/src/globals/vehicles.js +2 -0
- package/src/globals/vertexShader.js +5 -0
- package/src/globals/wantedTiles.js +5 -0
- package/src/globals/white.js +5 -0
- package/src/globals/workerCogSource.js +5 -0
- package/src/gpu/README.md +29 -0
- package/src/gpu/initializeRendererResources.js +6 -1
- package/src/gpu/initializeSharedRenderer.js +15 -8
- package/src/gpu/mountRenderer.js +7 -1
- package/src/gpu/releaseRenderer.js +8 -0
- package/src/gpu/rendererDeviceError.js +5 -3
- package/src/gpu/rendererDeviceLost.js +5 -3
- package/src/gpu/reportShaderCompilation.js +8 -0
- package/src/gpu/requestAdapter.js +8 -0
- package/src/gpu/requestDevice.js +9 -0
- package/src/gpu/showWebGPUWarning.js +5 -0
- package/src/index.js +0 -2
- package/src/layer-controls/README.md +25 -0
- package/src/layer-controls/layerControlInputId.js +7 -0
- package/src/layer-controls/layerCountTitle.js +10 -0
- package/src/layer-controls/placeEntry.js +9 -0
- package/src/layer-controls/placeEntryElement.js +7 -0
- package/src/layer-controls/placeUnderEntry.js +7 -0
- package/src/layer-controls/removeEntry.js +1 -0
- package/src/layer-controls/renderLayerCount.js +9 -1
- package/src/layer-controls/replaceEntry.js +1 -2
- package/src/layer-controls/runPlacements.js +1 -2
- package/src/layer-controls/underEntry.js +6 -2
- package/src/layer-controls/updateLayerCount.js +5 -1
- package/src/lighting/README.md +28 -0
- package/src/lighting/cacheLightGrid.js +9 -1
- package/src/lighting/collectLightMeshes.js +7 -1
- package/src/lighting/lightGrid.js +10 -1
- package/src/lighting/updatePointLights.js +7 -3
- package/src/lighting/visitLightCells.js +14 -1
- package/src/lighting/visitLightGridCells.js +11 -0
- package/src/lighting/worldLights.js +8 -1
- package/src/lighting/writeLightCell.js +9 -0
- package/src/materials/README.md +28 -0
- package/src/materials/createProgram.js +8 -4
- package/src/materials/createProgramLayout.js +8 -0
- package/src/materials/createProgramUniforms.js +7 -0
- package/src/materials/modelMaterialFor.js +8 -0
- package/src/materials/prepareMeshCutout.js +9 -0
- package/src/materials/terrainRasterProgram.js +15 -8
- package/src/materials/validateRoofMaterial.js +7 -0
- package/src/models/README.md +27 -0
- package/src/models/applyModelTransform.js +6 -2
- package/src/models/buildModelNodes.js +10 -0
- package/src/models/createModelContext.js +9 -0
- package/src/models/decodeModel.js +13 -2
- package/src/models/hasUnsupportedPrimitives.js +7 -0
- package/src/models/loadBuffer.js +10 -0
- package/src/models/loadModel.js +10 -7
- package/src/models/loadModelResources.js +8 -0
- package/src/models/modelNode.js +11 -1
- package/src/models/normalizeAccessor.js +10 -0
- package/src/models/prepareModel.js +10 -0
- package/src/models/prepareModelGeometry.js +10 -0
- package/src/models/prepareModelPrimitive.js +8 -0
- package/src/models/readAccessor.js +10 -4
- package/src/models/readAccessorValue.js +9 -0
- package/src/models/readAccessorValues.js +17 -0
- package/src/models/readModelAttributes.js +12 -0
- package/src/models/readModelIndices.js +12 -0
- package/src/models/readSparseAccessor.js +12 -0
- package/src/models/releaseModelResources.js +5 -0
- package/src/mvt/README.md +28 -0
- package/src/mvt/addMvtCrossings.js +6 -0
- package/src/mvt/appendMvtBandTriangles.js +11 -0
- package/src/mvt/appendMvtCoordinates.js +9 -0
- package/src/mvt/appendMvtPolygonTriangles.js +10 -0
- package/src/mvt/beginMvtPath.js +10 -0
- package/src/mvt/closeMvtPath.js +9 -0
- package/src/mvt/collectMvtEdges.js +10 -0
- package/src/mvt/createMvtReader.js +7 -0
- package/src/mvt/decodeVectorTile.js +7 -0
- package/src/mvt/expectMvtWire.js +8 -0
- package/src/mvt/finishMvtPath.js +9 -0
- package/src/mvt/finiteMvtCoordinate.js +7 -0
- package/src/mvt/groupMvtPolygons.js +10 -0
- package/src/mvt/isMvtFallbackError.js +7 -0
- package/src/mvt/mergeMvtActiveEdges.js +9 -0
- package/src/mvt/mvtEdgeX.js +8 -0
- package/src/mvt/mvtPathsVertices.js +7 -0
- package/src/mvt/mvtPolygonPaths.js +7 -0
- package/src/mvt/numericMvtValue.js +7 -0
- package/src/mvt/readMvtFeature.js +12 -0
- package/src/mvt/readMvtField.js +9 -0
- package/src/mvt/readMvtGeometry.js +13 -0
- package/src/mvt/readMvtInteger.js +10 -0
- package/src/mvt/readMvtKnownValue.js +9 -0
- package/src/mvt/readMvtLayer.js +9 -0
- package/src/mvt/readMvtMessage.js +8 -0
- package/src/mvt/readMvtNumber.js +9 -0
- package/src/mvt/readMvtNumbers.js +7 -0
- package/src/mvt/readMvtString.js +8 -0
- package/src/mvt/readMvtValue.js +10 -0
- package/src/mvt/skipMvtField.js +8 -0
- package/src/mvt/sortMvtActiveEdges.js +5 -0
- package/src/mvt/sortedMvtLevels.js +7 -0
- package/src/mvt/takeMvtBytes.js +10 -0
- package/src/mvt/tessellateVectorRings.js +7 -0
- package/src/mvt/triangulateVectorRings.js +4 -0
- package/src/native/README.md +27 -0
- package/src/native/beforeNativeRender.js +5 -0
- package/src/native/bypassNativeEvent.js +10 -0
- package/src/native/canScaleNativeStyle.js +9 -0
- package/src/native/compareNativeHits.js +8 -0
- package/src/native/createNativeMesh.js +15 -0
- package/src/native/disposeNativeLayer.js +3 -2
- package/src/native/forwardNativeError.js +5 -0
- package/src/native/getGridTerrainTile.js +13 -0
- package/src/native/gridTerrainElevation.js +8 -0
- package/src/native/handleNativeMapEvent.js +9 -4
- package/src/native/hideTargets.js +6 -0
- package/src/native/initNativeGPU.js +6 -3
- package/src/native/isCurrentNativeLayer.js +9 -4
- package/src/native/loadGridTerrain.js +10 -0
- package/src/native/nativeAddLatLng.js +7 -0
- package/src/native/nativeBringToBack.js +7 -0
- package/src/native/nativeBringToFront.js +7 -0
- package/src/native/nativeEventSource.js +9 -0
- package/src/native/nativeEvents.js +5 -4
- package/src/native/nativeLayer.js +10 -6
- package/src/native/nativeLayerMethod.js +9 -2
- package/src/native/nativeProgram.js +8 -0
- package/src/native/nativeRedraw.js +7 -0
- package/src/native/nativeSetBounds.js +7 -0
- package/src/native/nativeSetIcon.js +7 -0
- package/src/native/nativeSetLatLng.js +7 -0
- package/src/native/nativeSetLatLngs.js +7 -0
- package/src/native/nativeSetOpacity.js +7 -0
- package/src/native/nativeSetRadius.js +7 -0
- package/src/native/nativeSetStyle.js +7 -0
- package/src/native/nativeSetUrl.js +7 -0
- package/src/native/nativeSetZIndex.js +7 -0
- package/src/native/nativeSetZIndexOffset.js +7 -0
- package/src/native/nativeTerrainElevation.js +11 -0
- package/src/native/nativeVectorGeometry.js +7 -0
- package/src/native/orderNativeGridLayer.js +6 -0
- package/src/native/prepareGridTerrainRequests.js +7 -0
- package/src/native/pruneNativeResources.js +5 -0
- package/src/native/putNativeMesh.js +14 -0
- package/src/native/quadNativeMesh.js +11 -1
- package/src/native/readyNativeGPU.js +10 -6
- package/src/native/refreshNativeEvent.js +5 -0
- package/src/native/refreshNativeLayer.js +5 -3
- package/src/native/refreshNativeLayerContract.js +5 -2
- package/src/native/rejectNativeReady.js +5 -0
- package/src/native/removeNativeEvents.js +7 -3
- package/src/native/removeTargets.js +5 -2
- package/src/native/reorderNativeLayer.js +5 -3
- package/src/native/resolveNativeReady.js +3 -0
- package/src/native/restoreNativeEvents.js +3 -0
- package/src/native/retainGridTerrain.js +5 -0
- package/src/native/styleNativeMesh.js +11 -5
- package/src/native/syncGridLayer.js +5 -1
- package/src/native/syncGridTile.js +10 -0
- package/src/native/syncImageOverlay.js +8 -3
- package/src/native/syncMarker.js +5 -0
- package/src/native/syncNativeStrokeAnchors.js +6 -0
- package/src/native/syncNativeStrokeZoom.js +5 -0
- package/src/native/syncTerrainGridTile.js +10 -0
- package/src/native/syncVectorLayer.js +5 -0
- package/src/native/synchronizeNativeLayer.js +5 -3
- package/src/native/terrainGridMesh.js +13 -0
- package/src/native/updateNativeHover.js +8 -0
- package/src/native/updateNativeLayerView.js +3 -3
- package/src/native/updateNativeStrokeRadius.js +5 -0
- package/src/picking/README.md +29 -0
- package/src/picking/collectVisibleMesh.js +8 -0
- package/src/picking/findFeature.js +4 -4
- package/src/picking/hit.js +14 -7
- package/src/picking/hitColliderCell.js +10 -0
- package/src/picking/hitMesh.js +8 -2
- package/src/picking/onClick.js +6 -5
- package/src/picking/onPointerLeave.js +5 -5
- package/src/picking/onPointerMove.js +6 -5
- package/src/picking/pointerClick.js +5 -0
- package/src/picking/pointerLeave.js +1 -0
- package/src/picking/pointerMove.js +5 -0
- package/src/picking/raycast.js +2 -4
- package/src/picking/setHighlight.js +6 -5
- package/src/picking/shouldSkipOther.js +8 -2
- package/src/picking/showFeature.js +7 -4
- package/src/picking/validateCameraInverse.js +7 -0
- package/src/projections/README.md +28 -0
- package/src/projections/cameraAngles.js +8 -1
- package/src/projections/displayContainerPoint.js +9 -0
- package/src/projections/groundBounds.js +9 -1
- package/src/projections/localPixel.js +8 -0
- package/src/projections/localPixelForGeometry.js +8 -1
- package/src/projections/localPosition.js +8 -2
- package/src/projections/markerCameraIconPoint.js +9 -1
- package/src/projections/projectBridgePoint.js +13 -1
- package/src/projections/projectCameraPoint.js +11 -1
- package/src/projections/projectCelestialBody.js +11 -2
- package/src/projections/projectRing.js +11 -1
- package/src/projections/projectTreePoint.js +9 -1
- package/src/projections/toPoint.js +9 -1
- package/src/projections/transformZoomAnimationPoint.js +12 -5
- package/src/projections/verticalGroundY.js +11 -0
- package/src/projections/walkerLocalPosition.js +7 -0
- package/src/raster/README.md +28 -0
- package/src/raster/addRasterTile.js +10 -2
- package/src/raster/comparePendingTiles.js +8 -0
- package/src/raster/createRasterMesh.js +6 -5
- package/src/raster/finishRasterAttachment.js +9 -4
- package/src/raster/finishRasterTile.js +11 -2
- package/src/raster/getRasterEvents.js +7 -0
- package/src/raster/getRasterTileSize.js +5 -1
- package/src/raster/initRaster.js +6 -3
- package/src/raster/isRasterLoading.js +7 -3
- package/src/raster/loadRasterTile.js +8 -3
- package/src/raster/onPMTileAdd.js +6 -3
- package/src/raster/onPMTileRemove.js +6 -3
- package/src/raster/pruneRasterTiles.js +7 -3
- package/src/raster/pumpRasterTiles.js +5 -4
- package/src/raster/rasterTileRange.js +9 -0
- package/src/raster/readyRaster.js +8 -3
- package/src/raster/registerTerrainTile.js +9 -3
- package/src/raster/releaseRasterTile.js +6 -3
- package/src/raster/releaseRasterTiles.js +5 -3
- package/src/raster/removeRasterTile.js +6 -3
- package/src/raster/reportRasterError.js +8 -0
- package/src/raster/retainRasterTiles.js +7 -2
- package/src/raster/setPMTileOpacity.js +8 -0
- package/src/raster/setPMTileZIndex.js +8 -0
- package/src/raster/setRasterOpacity.js +6 -3
- package/src/raster/setRasterTerrain.js +6 -3
- package/src/raster/setRasterZIndex.js +6 -3
- package/src/raster/updateAttachedTiles.js +9 -3
- package/src/raster/updateRasterTiles.js +5 -5
- package/src/rendering/README.md +32 -0
- package/src/rendering/collectFrameMeshes.js +7 -3
- package/src/rendering/collectMeshes.js +11 -0
- package/src/rendering/collectVisibleMesh.js +9 -0
- package/src/rendering/compareMeshDepth.js +8 -0
- package/src/rendering/compareMeshes.js +10 -1
- package/src/rendering/createMesh.js +8 -5
- package/src/rendering/disposeMesh.js +6 -0
- package/src/rendering/drawGeometry.js +9 -2
- package/src/rendering/drawPipeline.js +10 -0
- package/src/rendering/drawSceneMeshes.js +9 -3
- package/src/rendering/nativeStrokeExpansion.js +7 -0
- package/src/rendering/prepareFrameBuffer.js +8 -2
- package/src/rendering/prepareFrameMeshes.js +10 -3
- package/src/rendering/prepareFrameUniforms.js +8 -3
- package/src/rendering/prepareMeshUniforms.js +10 -1
- package/src/rendering/render.js +2 -5
- package/src/rendering/resizeRenderer.js +6 -3
- package/src/rendering/revealRoofMesh.js +10 -1
- package/src/scene/README.md +36 -0
- package/src/scene/addRegisteredLayer.js +5 -4
- package/src/scene/addSceneLayer.js +9 -3
- package/src/scene/attachLayer.js +8 -3
- package/src/scene/attachSharedScene.js +6 -1
- package/src/scene/callLayer.js +11 -5
- package/src/scene/cancelUpdate.js +5 -3
- package/src/scene/createLayer.js +8 -2
- package/src/scene/createSceneNode.js +5 -1
- package/src/scene/emptyEvents.js +5 -0
- package/src/scene/failAttachment.js +9 -3
- package/src/scene/get3DEvents.js +7 -3
- package/src/scene/getLocation.js +8 -4
- package/src/scene/init3D.js +6 -3
- package/src/scene/initializeLayer.js +9 -2
- package/src/scene/initializerFor.js +8 -0
- package/src/scene/isNativeLayer.js +8 -2
- package/src/scene/layerInitialize.js +7 -4
- package/src/scene/onAdd3DLayer.js +6 -4
- package/src/scene/onMapChange.js +0 -5
- package/src/scene/onRemove3DLayer.js +6 -5
- package/src/scene/ready3D.js +9 -3
- package/src/scene/releaseSharedScene.js +6 -2
- package/src/scene/removeLayerEvents.js +1 -3
- package/src/scene/removeSceneLayer.js +9 -3
- package/src/scene/renderPendingMapChange.js +1 -4
- package/src/scene/renderPendingUpdates.js +5 -4
- package/src/scene/reportLayerError.js +6 -0
- package/src/scene/resolveNextInitialization.js +5 -2
- package/src/scene/restoreObject.js +6 -3
- package/src/scene/scheduleSceneUpdate.js +7 -6
- package/src/scene/setParent.js +6 -2
- package/src/scene/traverse.js +7 -2
- package/src/shaders/README.md +29 -0
- package/src/shaders/materialBaseShader.js +9 -0
- package/src/shaders/materialShaders.js +9 -1
- package/src/shaders/materialSurfaceShader.js +13 -0
- package/src/shaders/materialVertexShader.js +22 -10
- package/src/shaders/nativeStrokeShader.js +7 -0
- package/src/shaders/roofVertexShader.js +7 -0
- package/src/shadows/README.md +28 -0
- package/src/shadows/bindSunlight.js +5 -3
- package/src/shadows/drawShadowMeshes.js +7 -2
- package/src/shadows/ensureShadowPipeline.js +7 -0
- package/src/shadows/renderSunlight.js +8 -4
- package/src/shadows/resizeSunlight.js +6 -3
- package/src/shadows/shadowCacheMatches.js +11 -1
- package/src/shadows/shadowMatrix.js +8 -1
- package/src/shadows/shadowMeshMatches.js +8 -0
- package/src/sources/README.md +33 -0
- package/src/sources/attachAreaMesh.js +5 -4
- package/src/sources/buildArea.js +13 -2
- package/src/sources/buildAreaFeature.js +7 -1
- package/src/sources/buildAreaFeatures.js +9 -0
- package/src/sources/compareAreaDistance.js +8 -0
- package/src/sources/extrusionStyle.js +11 -0
- package/src/sources/featureAnchor.js +12 -0
- package/src/sources/groundOffset.js +7 -0
- package/src/sources/initVectorTiles.js +6 -0
- package/src/sources/initializeGeoJSON.js +6 -3
- package/src/sources/isVectorTileSource.js +7 -0
- package/src/sources/matchesAreaTile.js +10 -0
- package/src/sources/pendingSourceAreas.js +9 -2
- package/src/sources/prepareAreaGeometryJob.js +10 -0
- package/src/sources/projectAreaPolygons.js +10 -0
- package/src/sources/pumpSourceAreas.js +6 -6
- package/src/sources/readyVectorTiles.js +7 -0
- package/src/sources/releaseArea.js +6 -4
- package/src/sources/setGeoJSONData.js +8 -3
- package/src/sources/setGeoJSONLayerData.js +7 -0
- package/src/sources/sourceAreaContext.js +9 -2
- package/src/sources/updateArea.js +5 -5
- package/src/sources/updateSourceStatus.js +6 -3
- package/src/sunlight/README.md +28 -0
- package/src/sunlight/addTimeControlToMap.js +8 -1
- package/src/sunlight/addTimeLayer.js +9 -4
- package/src/sunlight/atmosphere.js +9 -2
- package/src/sunlight/createSun.js +7 -0
- package/src/sunlight/initSunlight.js +5 -0
- package/src/sunlight/initializeTimeControl.js +8 -6
- package/src/sunlight/onAddSun.js +11 -2
- package/src/sunlight/onAddTimeControl.js +7 -0
- package/src/sunlight/onRemoveSun.js +1 -1
- package/src/sunlight/removeSun.js +7 -5
- package/src/sunlight/removeTimeControl.js +7 -1
- package/src/sunlight/removeTimeLayer.js +8 -5
- package/src/sunlight/requestSunlightRender.js +6 -3
- package/src/sunlight/styleTimeControl.js +6 -0
- package/src/sunlight/tickSun.js +5 -0
- package/src/sunlight/updateCelestialDisc.js +11 -0
- package/src/sunlight/updateSky.js +5 -3
- package/src/sunlight/updateSun.js +6 -4
- package/src/sunlight/useLiveTime.js +5 -0
- package/src/sunlight/useSelectedTime.js +6 -4
- package/src/terrain/README.md +30 -0
- package/src/terrain/applyTerrain.js +10 -4
- package/src/terrain/clearLayerTerrain.js +5 -3
- package/src/terrain/copyTerrainTile.js +8 -0
- package/src/terrain/getElevation.js +8 -5
- package/src/terrain/initTerrain.js +5 -3
- package/src/terrain/loadReadyTerrain.js +1 -0
- package/src/terrain/loadTerrain.js +10 -2
- package/src/terrain/loadTerrainTiles.js +10 -3
- package/src/terrain/mapElevationOf.js +8 -0
- package/src/terrain/onTerrainAdd.js +8 -4
- package/src/terrain/onTerrainChange.js +5 -5
- package/src/terrain/onTerrainRemove.js +6 -3
- package/src/terrain/readBridges.js +9 -0
- package/src/terrain/readyTerrainOf.js +7 -0
- package/src/terrain/sampleTerrainTile.js +9 -0
- package/src/terrain/setLayerTerrain.js +5 -3
- package/src/terrain/setTerrainHeight.js +5 -4
- package/src/terrain/terrainAtlas.js +8 -2
- package/src/terrain/terrainElevation.js +8 -2
- package/src/terrain/terrainTileQueue.js +10 -3
- package/src/textures/README.md +29 -0
- package/src/textures/addImageState.js +7 -2
- package/src/textures/attachRasterImage.js +1 -2
- package/src/textures/bindMeshTextures.js +7 -0
- package/src/textures/collectRoofTiles.js +9 -2
- package/src/textures/compareRoofTiles.js +8 -0
- package/src/textures/composeRoofAtlas.js +11 -3
- package/src/textures/destroyTexture.js +6 -4
- package/src/textures/destroyTextureAfterSubmission.js +9 -0
- package/src/textures/ensureRoofBlit.js +5 -0
- package/src/textures/loadModelImage.js +12 -2
- package/src/textures/modelTextureFor.js +12 -4
- package/src/textures/modelTextureSampler.js +7 -2
- package/src/textures/nativeImageError.js +5 -1
- package/src/textures/nativeImageRefresh.js +5 -2
- package/src/textures/nativeTextureFor.js +11 -3
- package/src/textures/prepareMeshTextures.js +8 -0
- package/src/textures/rebuildRoofAtlas.js +8 -3
- package/src/textures/removeImageState.js +8 -3
- package/src/textures/resizeRoofTexture.js +9 -2
- package/src/textures/restoreMaterialTextures.js +6 -0
- package/src/textures/textureBinding.js +9 -0
- package/src/textures/updateRoofAtlas.js +10 -4
- package/src/textures/updateRoofRaster.js +8 -0
- package/src/textures/uploadCanvasTexture.js +15 -0
- package/src/textures/uploadMeshTexture.js +6 -0
- package/src/textures/uploadNativeImage.js +13 -0
- package/src/textures/uploadRoofTile.js +6 -0
- package/src/traffic/README.md +30 -0
- package/src/traffic/addTraffic.js +5 -2
- package/src/traffic/clockMinutes.js +7 -0
- package/src/traffic/compareDepartures.js +8 -0
- package/src/traffic/createTrafficMesh.js +13 -2
- package/src/traffic/destroyTrafficGpu.js +5 -0
- package/src/traffic/disposeTrafficObject.js +13 -10
- package/src/traffic/drawTrafficRoute.js +5 -1
- package/src/traffic/failTraffic.js +6 -0
- package/src/traffic/failedTrafficLoad.js +10 -3
- package/src/traffic/featuresToTrafficLanes.js +8 -0
- package/src/traffic/fetchTrafficLanes.js +11 -0
- package/src/traffic/groundTraffic.js +5 -1
- package/src/traffic/initTraffic.js +17 -15
- package/src/traffic/loadTraffic.js +5 -0
- package/src/traffic/loadedTrafficLanes.js +11 -4
- package/src/traffic/locateTraffic.js +9 -0
- package/src/traffic/moveTraffic.js +6 -0
- package/src/traffic/placeTraffic.js +5 -0
- package/src/traffic/prepareTraffic.js +5 -3
- package/src/traffic/readyTraffic.js +7 -2
- package/src/traffic/rebaseTraffic.js +5 -3
- package/src/traffic/rebuildTrafficMesh.js +5 -1
- package/src/traffic/refreshTrafficTrips.js +10 -0
- package/src/traffic/removeTraffic.js +5 -2
- package/src/traffic/routeColor.js +7 -0
- package/src/traffic/scheduledTrips.js +5 -2
- package/src/traffic/startTraffic.js +7 -2
- package/src/traffic/tickTraffic.js +5 -3
- package/src/traffic/trafficBounds.js +5 -0
- package/src/traffic/trafficNow.js +9 -4
- package/src/traffic/trafficStatusText.js +8 -0
- package/src/traffic/trafficStorage.js +8 -0
- package/src/traffic/trafficTooltip.js +7 -0
- package/src/traffic/tripsAt.js +9 -2
- package/src/traffic/updateTraffic.js +10 -7
- package/src/traffic/updateTrafficLights.js +5 -0
- package/src/traffic/updateTrafficPose.js +7 -0
- package/src/traffic/updateTrafficTerrain.js +10 -5
- package/src/traffic/uploadTrafficLanes.js +6 -0
- package/src/traffic/vehicleOffsets.js +9 -3
- package/src/transforms/README.md +27 -0
- package/src/transforms/composeLocalTransform.js +7 -0
- package/src/transforms/modelNodeMatrix.js +7 -2
- package/src/transforms/transformNativePoint.js +12 -0
- package/src/transforms/updateWorldMatrix.js +5 -2
- package/src/transforms/worldMatrixChanged.js +8 -0
- package/src/triangulation/README.md +26 -0
- package/src/triangulation/area.js +7 -0
- package/src/triangulation/clean.js +9 -0
- package/src/triangulation/clipEars.js +9 -0
- package/src/triangulation/connectHole.js +12 -0
- package/src/triangulation/containsVertex.js +10 -0
- package/src/triangulation/cross.js +9 -0
- package/src/triangulation/crossesBoundary.js +10 -0
- package/src/triangulation/crossesRing.js +9 -0
- package/src/triangulation/equal.js +8 -0
- package/src/triangulation/inside.js +8 -0
- package/src/triangulation/insideHole.js +8 -0
- package/src/triangulation/intersects.js +10 -0
- package/src/triangulation/isClockWise.js +4 -1
- package/src/triangulation/mergeHoles.js +8 -0
- package/src/triangulation/minimumX.js +7 -0
- package/src/triangulation/on.js +9 -0
- package/src/triangulation/polygonRings.js +8 -0
- package/src/triangulation/sortHoles.js +7 -0
- package/src/triangulation/triangulate.js +3 -2
- package/src/triangulation/validateArea.js +9 -0
- package/src/utils/README.md +16 -0
- package/src/utils/compareDistance.js +8 -0
- package/src/utils/noOperation.js +1 -0
- package/src/utils/wrap.js +7 -0
- package/src/utils/yieldTask.js +7 -0
- package/src/vector-style/README.md +27 -0
- package/src/vector-style/appendQuotedStyleCharacter.js +8 -0
- package/src/vector-style/arrayContainsRange.js +10 -0
- package/src/vector-style/evaluateBoolean.js +13 -0
- package/src/vector-style/evaluateCoalesceOrCase.js +13 -0
- package/src/vector-style/evaluateComparison.js +13 -0
- package/src/vector-style/evaluateIExpression.js +13 -0
- package/src/vector-style/evaluateInput.js +10 -0
- package/src/vector-style/evaluateInterpolate.js +9 -0
- package/src/vector-style/evaluateMatch.js +9 -0
- package/src/vector-style/evaluateMath.js +12 -0
- package/src/vector-style/evaluateMembership.js +11 -0
- package/src/vector-style/evaluateNegation.js +13 -0
- package/src/vector-style/evaluatePrimitive.js +12 -0
- package/src/vector-style/evaluateStep.js +9 -0
- package/src/vector-style/evaluateStyle.js +10 -0
- package/src/vector-style/evaluateToExpression.js +13 -0
- package/src/vector-style/fillVectorPaint.js +9 -0
- package/src/vector-style/lineVectorPaint.js +10 -0
- package/src/vector-style/parseFunctionalColor.js +9 -0
- package/src/vector-style/parseHexColor.js +7 -0
- package/src/vector-style/parseVectorStyle.js +7 -0
- package/src/vector-style/readPaintValue.js +11 -0
- package/src/vector-style/removeTrailingCommas.js +7 -0
- package/src/vector-style/scaleDashArray.js +12 -0
- package/src/vector-style/skipStyleComment.js +11 -0
- package/src/vector-style/stripStyleComments.js +7 -0
- package/src/vector-style/styleColor.js +7 -0
- package/src/vector-style/validateVectorLayers.js +8 -0
- package/src/vector-style/vectorPaint.js +9 -0
- package/src/vector-style/visibleStyle.js +9 -0
- package/src/vector-tiles/README.md +30 -0
- package/src/vector-tiles/appendVectorBatch.js +12 -0
- package/src/vector-tiles/attachVectorTileBatch.js +8 -0
- package/src/vector-tiles/attachVectorTileBatches.js +11 -0
- package/src/vector-tiles/compareVectorLabelPriority.js +8 -0
- package/src/vector-tiles/compareVectorTileDistance.js +8 -0
- package/src/vector-tiles/configureVectorTileLayer.js +8 -0
- package/src/vector-tiles/createVectorLabel.js +15 -0
- package/src/vector-tiles/forwardVectorTileError.js +5 -0
- package/src/vector-tiles/loadVectorSprite.js +9 -0
- package/src/vector-tiles/loadVectorTile.js +9 -0
- package/src/vector-tiles/onVectorTileAdd.js +5 -0
- package/src/vector-tiles/onVectorTileMessage.js +5 -0
- package/src/vector-tiles/onVectorTileRemove.js +5 -0
- package/src/vector-tiles/onVectorTileWorkerError.js +5 -0
- package/src/vector-tiles/paintVectorTileBatch.js +6 -0
- package/src/vector-tiles/prepareVectorLabel.js +9 -0
- package/src/vector-tiles/prepareVectorStyleLayer.js +8 -0
- package/src/vector-tiles/prepareVectorTile.js +13 -0
- package/src/vector-tiles/projectVectorPaths.js +10 -0
- package/src/vector-tiles/projectVectorPoint.js +9 -0
- package/src/vector-tiles/projectVectorTriangles.js +10 -0
- package/src/vector-tiles/pruneVectorTiles.js +3 -0
- package/src/vector-tiles/pumpVectorTiles.js +3 -0
- package/src/vector-tiles/readTileJSON.js +10 -0
- package/src/vector-tiles/readVectorStyle.js +11 -0
- package/src/vector-tiles/refreshVectorTiles.js +3 -0
- package/src/vector-tiles/reserveVectorLabelCells.js +8 -0
- package/src/vector-tiles/retireVectorTileGroup.js +7 -0
- package/src/vector-tiles/revokeVectorWorkerUrl.js +5 -0
- package/src/vector-tiles/rotateVectorLabel.js +7 -0
- package/src/vector-tiles/rotateVectorLabels.js +3 -0
- package/src/vector-tiles/simplifyVectorPath.js +8 -0
- package/src/vector-tiles/updateVectorLabelMarker.js +9 -0
- package/src/vector-tiles/updateVectorLabelStyle.js +6 -0
- package/src/vector-tiles/updateVectorTileLabels.js +5 -0
- package/src/vector-tiles/updateVectorTilePaint.js +5 -0
- package/src/vector-tiles/updateVectorTiles.js +3 -0
- package/src/vector-tiles/validateVectorTileZooms.js +9 -0
- package/src/vector-tiles/vectorFeaturePaint.js +10 -0
- package/src/vector-tiles/vectorFeaturePaths.js +10 -0
- package/src/vector-tiles/vectorFeatureZoom.js +10 -0
- package/src/vector-tiles/vectorLabelAnchors.js +8 -1
- package/src/vector-tiles/vectorLabelCandidates.js +7 -0
- package/src/vector-tiles/vectorLabelCells.js +9 -0
- package/src/vector-tiles/vectorLabelIcon.js +8 -0
- package/src/vector-tiles/vectorLabelProperty.js +9 -0
- package/src/vector-tiles/vectorLabelText.js +9 -0
- package/src/vector-tiles/vectorSpriteIcon.js +8 -0
- package/src/vector-tiles/vectorStraightRun.js +10 -1
- package/src/vector-tiles/vectorStyleDependencies.js +7 -0
- package/src/vector-tiles/vectorStyleValue.js +11 -0
- package/src/vector-tiles/vectorStyleZoom.js +7 -1
- package/src/vector-tiles/vectorTileAwaited.js +8 -0
- package/src/vector-tiles/vectorTileOverlaps.js +8 -0
- package/src/vector-tiles/vectorTilePaint.js +8 -0
- package/src/vector-tiles/vectorTileSettings.js +10 -0
- package/src/vector-tiles/vectorTilesIdle.js +8 -0
- package/src/vector-tiles/vectorTolerance.js +8 -1
- package/src/vector-tiles/wrapVectorLabel.js +7 -1
- package/src/vehicles/README.md +27 -0
- package/src/vehicles/bicycleModel.js +7 -1
- package/src/vehicles/boatBenches.js +5 -0
- package/src/vehicles/boatModel.js +8 -8
- package/src/vehicles/buildCarriage.js +9 -1
- package/src/vehicles/busModel.js +11 -3
- package/src/vehicles/carModel.js +12 -11
- package/src/vehicles/metroModel.js +8 -0
- package/src/vehicles/mirrorVehiclePart.js +11 -0
- package/src/vehicles/pedestrianModel.js +7 -1
- package/src/vehicles/tramModel.js +8 -0
- package/src/walk/README.md +30 -0
- package/src/walk/animateWalker.js +5 -4
- package/src/walk/createWalk.js +6 -3
- package/src/walk/initWalk.js +5 -0
- package/src/walk/initializeWalkControl.js +6 -1
- package/src/walk/isWalkBlocked.js +9 -0
- package/src/walk/landWalker.js +12 -8
- package/src/walk/moveWalker.js +17 -4
- package/src/walk/onAddWalkControl.js +9 -0
- package/src/walk/onRemoveWalkControl.js +5 -0
- package/src/walk/onWalkBlur.js +1 -0
- package/src/walk/onWalkKey.js +5 -2
- package/src/walk/onWalkPointer.js +6 -0
- package/src/walk/onWalkTerrain.js +4 -3
- package/src/walk/placeWalker.js +1 -2
- package/src/walk/resolveWalkerPosition.js +5 -0
- package/src/walk/startWalking.js +1 -1
- package/src/walk/stepWalkerHeight.js +7 -0
- package/src/walk/stopWalking.js +1 -0
- package/src/walk/toggleWalking.js +5 -4
- package/src/walk/updateWalkerFrame.js +10 -0
- package/src/walk/updateWalkerView.js +9 -0
- package/src/weakmaps/README.md +33 -0
- package/src/weakmaps/addedByLayer.js +5 -0
- package/src/weakmaps/archiveHeaderByLayer.js +5 -0
- package/src/weakmaps/areasByLayer.js +5 -0
- package/src/weakmaps/boundsMethods.js +5 -0
- package/src/weakmaps/bridgeMeshByLayer.js +5 -0
- package/src/weakmaps/bridgesByLayer.js +5 -0
- package/src/weakmaps/cameraAnimationByMap.js +5 -0
- package/src/weakmaps/cameraBearingByMap.js +5 -0
- package/src/weakmaps/cameraByLayer.js +5 -0
- package/src/weakmaps/cameraDraggableByMap.js +5 -0
- package/src/weakmaps/cameraFields.js +5 -0
- package/src/weakmaps/cameraFrameByMap.js +5 -0
- package/src/weakmaps/cameraHandlersByMap.js +5 -0
- package/src/weakmaps/cameraMaps.js +5 -0
- package/src/weakmaps/cameraPitchByMap.js +5 -0
- package/src/weakmaps/cameraReadyByMap.js +5 -0
- package/src/weakmaps/cameraTouchStateByMap.js +5 -0
- package/src/weakmaps/cameraViewByMap.js +5 -0
- package/src/weakmaps/cameraZIndexOffsetByLayer.js +5 -0
- package/src/weakmaps/closestMethods.js +5 -0
- package/src/weakmaps/colliders.js +5 -0
- package/src/weakmaps/containerByLayer.js +5 -0
- package/src/weakmaps/controlByLayer.js +5 -0
- package/src/weakmaps/countStatusByLayer.js +5 -0
- package/src/weakmaps/cursorByLayer.js +5 -0
- package/src/weakmaps/demByLayer.js +5 -0
- package/src/weakmaps/directoriesByLayer.js +5 -0
- package/src/weakmaps/dragByHandler.js +5 -0
- package/src/weakmaps/dragStates.js +5 -0
- package/src/weakmaps/etagByLayer.js +5 -0
- package/src/weakmaps/eventMapByLayer.js +5 -0
- package/src/weakmaps/eventsByLayer.js +5 -0
- package/src/weakmaps/fadeFrameByLayer.js +5 -0
- package/src/weakmaps/fadeVersionByLayer.js +5 -0
- package/src/weakmaps/frameByLayer.js +5 -0
- package/src/weakmaps/geojsonByLayer.js +5 -0
- package/src/weakmaps/geometryWorkersByMap.js +5 -0
- package/src/weakmaps/gridInitializers.js +5 -0
- package/src/weakmaps/groupByLayer.js +5 -0
- package/src/weakmaps/headerByLayer.js +5 -0
- package/src/weakmaps/highlightedFeatureByLayer.js +5 -0
- package/src/weakmaps/hoveredFeatureByLayer.js +5 -0
- package/src/weakmaps/imageStates.js +5 -0
- package/src/weakmaps/inflightByLayer.js +5 -0
- package/src/weakmaps/kindByLayer.js +5 -0
- package/src/weakmaps/layersByLayer.js +5 -0
- package/src/weakmaps/loadingTilesByLayer.js +5 -0
- package/src/weakmaps/locationByLayer.js +5 -0
- package/src/weakmaps/modelByLayer.js +5 -0
- package/src/weakmaps/modelUrlByLayer.js +5 -0
- package/src/weakmaps/nativeEventMaps.js +5 -0
- package/src/weakmaps/nativeGPUBackByMap.js +5 -0
- package/src/weakmaps/nativeGPUByLayer.js +5 -0
- package/src/weakmaps/nativeGPUOrderByMap.js +5 -0
- package/src/weakmaps/nativeProgramsByRenderer.js +5 -0
- package/src/weakmaps/nativeRenderByLayer.js +5 -0
- package/src/weakmaps/pathProjectionByMap.js +5 -0
- package/src/weakmaps/pitchSkyByMap.js +5 -0
- package/src/weakmaps/pointerEventsByLayer.js +5 -0
- package/src/weakmaps/pruneAfterByLayer.js +5 -0
- package/src/weakmaps/pruneVersionByLayer.js +5 -0
- package/src/weakmaps/pruneWantedByLayer.js +5 -0
- package/src/weakmaps/queuedByLayer.js +5 -0
- package/src/weakmaps/rasterGeometryByLayer.js +5 -0
- package/src/weakmaps/rasterProgramByLayer.js +5 -0
- package/src/weakmaps/rasterTilesByLayer.js +5 -0
- package/src/weakmaps/rasterVersionByLayer.js +5 -0
- package/src/weakmaps/raycasterByLayer.js +5 -0
- package/src/weakmaps/readyByLayer.js +5 -0
- package/src/weakmaps/rendererByLayer.js +5 -0
- package/src/weakmaps/rendererDevices.js +5 -0
- package/src/weakmaps/rendererReadyByLayer.js +5 -0
- package/src/weakmaps/renderers.js +5 -0
- package/src/weakmaps/roofRasterByLayer.js +5 -0
- package/src/weakmaps/roofRastersByLayer.js +5 -0
- package/src/weakmaps/rootByLayer.js +5 -0
- package/src/weakmaps/rotateControlByMap.js +5 -0
- package/src/weakmaps/sceneByLayer.js +5 -0
- package/src/weakmaps/sceneFields.js +5 -0
- package/src/weakmaps/sceneLayers.js +5 -0
- package/src/weakmaps/sceneOriginByLayer.js +5 -0
- package/src/weakmaps/shadowMeshesByLayer.js +5 -0
- package/src/weakmaps/sharedByLayer.js +5 -0
- package/src/weakmaps/sizeByLayer.js +5 -0
- package/src/weakmaps/state3dByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByMap.js +5 -0
- package/src/weakmaps/sunByMap.js +5 -0
- package/src/weakmaps/sunlightByControl.js +5 -0
- package/src/weakmaps/sunlightByMap.js +5 -0
- package/src/weakmaps/terrain3DByLayer.js +5 -0
- package/src/weakmaps/terrain3DByMap.js +5 -0
- package/src/weakmaps/terrainArchiveByLayer.js +5 -0
- package/src/weakmaps/terrainBaseYByLayer.js +5 -0
- package/src/weakmaps/terrainBoundsByLayer.js +5 -0
- package/src/weakmaps/terrainControllerByLayer.js +5 -0
- package/src/weakmaps/terrainGridsByLayer.js +5 -0
- package/src/weakmaps/terrainLoadingByLayer.js +5 -0
- package/src/weakmaps/terrainOriginElevationByLayer.js +5 -0
- package/src/weakmaps/terrainPromiseByLayer.js +5 -0
- package/src/weakmaps/terrainReadyByLayer.js +5 -0
- package/src/weakmaps/terrainRequestByLayer.js +5 -0
- package/src/weakmaps/terrainSourceByLayer.js +5 -0
- package/src/weakmaps/terrainTilesByLayer.js +5 -0
- package/src/weakmaps/terrainZoomByLayer.js +5 -0
- package/src/weakmaps/tileZoomByLayer.js +5 -0
- package/src/weakmaps/timeControlByMap.js +5 -0
- package/src/weakmaps/tooltipByLayer.js +5 -0
- package/src/weakmaps/touchByContainer.js +5 -0
- package/src/weakmaps/touchPitchByMap.js +5 -0
- package/src/weakmaps/touchRotateByMap.js +5 -0
- package/src/weakmaps/trafficByLayer.js +5 -0
- package/src/weakmaps/typeByLayer.js +5 -0
- package/src/weakmaps/urlByLayer.js +5 -0
- package/src/weakmaps/vectorTileOptionsByLayer.js +5 -0
- package/src/weakmaps/vectorWorkerByLayer.js +5 -0
- package/src/weakmaps/visibleMeshesByLayer.js +5 -0
- package/src/weakmaps/walkByMap.js +5 -0
- package/src/weakmaps/walkerByLayer.js +5 -0
- package/src/weakmaps/wantedRasterTilesByLayer.js +5 -0
- package/src/weakmaps/workerMapByLayer.js +5 -0
- package/src/weakmaps/zoomLevelByLayer.js +5 -0
- package/src/weakmaps/zoomTransitionsByLayer.js +5 -0
- package/src/weakmaps/zoomViewByLayer.js +5 -0
- package/src/workers/README.md +33 -0
- package/src/workers/acquireGeometryWorker.js +10 -0
- package/src/workers/buildAreaInWorker.js +8 -0
- package/src/workers/closeGeometryWorkers.js +5 -0
- package/src/workers/cogWorker.js +7 -0
- package/src/workers/createGeometryWorker.js +10 -0
- package/src/workers/geometryWorker.js +5 -0
- package/src/workers/getCogInWorker.js +11 -0
- package/src/workers/modelWorker.js +7 -0
- package/src/workers/openCogInWorker.js +8 -0
- package/src/workers/runSourceWorker.js +12 -0
- package/src/workers/settleGeometryWorker.js +6 -0
- package/src/workers/startGeometryWorker.js +7 -0
- package/src/workers/vectorTileWorker.js +5 -0
- package/src/collision/setTrafficNormal.js +0 -9
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { evaluateStyle } from './evaluateStyle.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Check a style layer's zoom range, visibility and feature filter.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} layer Vector style layer.
|
|
7
|
+
* @param {Object} properties Feature properties.
|
|
8
|
+
* @param {number} zoom Current zoom.
|
|
9
|
+
*
|
|
10
|
+
* @returns {boolean} Whether the layer is visible for the feature.
|
|
11
|
+
*/
|
|
3
12
|
export function visibleStyle(layer, properties, zoom) {
|
|
4
13
|
return zoom >= (layer.minzoom ?? 0) && zoom < (layer.maxzoom ?? Infinity) &&
|
|
5
14
|
layer.layout?.visibility !== 'none' &&
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Vector tiles
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Configures vector tile layers, loads and prepares tiles, and manages their
|
|
6
|
+
paint, labels and lifecycle as the view changes.
|
|
7
|
+
|
|
8
|
+
## Tile and label lifecycle
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
Config["Vector source + style / sprite"] --> Needed["Select tiles for view"]
|
|
13
|
+
Needed --> Fetch["Fetch tile"]
|
|
14
|
+
Fetch --> Worker["Worker: decode + style + prepare"]
|
|
15
|
+
Worker --> Check{"Session current and not aborted?"}
|
|
16
|
+
Check -->|yes| Batches["Attach batches"]
|
|
17
|
+
Check -->|no| Drop["Discard"]
|
|
18
|
+
Batches --> Labels["Place labels using occupied cells"]
|
|
19
|
+
Labels --> Revision["Check session + revision after yielding"]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The public layer remains a `vector` source. Stale sessions must neither attach
|
|
23
|
+
results nor decrement a new session's in-flight count. Label revisions prevent
|
|
24
|
+
older placement work from replacing a newer view.
|
|
25
|
+
|
|
26
|
+
- [configureVectorTileLayer.js](./configureVectorTileLayer.js): configure layer lifecycle.
|
|
27
|
+
- [loadVectorTile.js](./loadVectorTile.js): fetch and attach a tile.
|
|
28
|
+
- [updateVectorTileLabels.js](./updateVectorTileLabels.js): update visible labels.
|
|
29
|
+
|
|
30
|
+
Related: [mvt](../mvt/README.md), [vector-style](../vector-style/README.md), [workers](../workers/README.md).
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { vectorFeaturePaths } from './vectorFeaturePaths.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Group feature paths by paint and style dependencies, splitting large batches.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} job Vector tile preparation job.
|
|
7
|
+
* @param {Object} layer Decoded source layer.
|
|
8
|
+
* @param {Object} entry Style layer entry.
|
|
9
|
+
* @param {Object} feature Decoded feature.
|
|
10
|
+
* @param {number} order Style layer order.
|
|
11
|
+
* @param {Map} batches Batches indexed by paint and property values.
|
|
12
|
+
* @param {Iterable<string>} dependencies Feature properties used by the style.
|
|
13
|
+
* @param {Object} paint Evaluated paint.
|
|
14
|
+
*/
|
|
3
15
|
export function appendVectorBatch(job, layer, entry, feature, order, batches, dependencies, paint) {
|
|
4
16
|
const values = /* alloc */ [];
|
|
5
17
|
let key, batch, path, count;
|
|
@@ -4,6 +4,14 @@ import { vectorStyleZoom } from './vectorStyleZoom.js';
|
|
|
4
4
|
import { vectorTilePaint } from './vectorTilePaint.js';
|
|
5
5
|
import { forwardVectorTileError } from './forwardVectorTileError.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Create and attach a rendered Leaflet layer for a prepared vector batch.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} owner Vector tile layer.
|
|
11
|
+
* @param {Object} tile Tile receiving the rendered batch.
|
|
12
|
+
* @param {Object} group Leaflet group receiving the layer.
|
|
13
|
+
* @param {Object} batch Prepared vector batch.
|
|
14
|
+
*/
|
|
7
15
|
export function attachVectorTileBatch(owner, tile, group, batch) {
|
|
8
16
|
const { pane } = vectorTileOptionsByLayer.get(owner);
|
|
9
17
|
const paint = vectorTilePaint(batch, vectorStyleZoom(owner));
|
|
@@ -2,6 +2,17 @@ import { attachVectorTileBatch } from './attachVectorTileBatch.js';
|
|
|
2
2
|
import { vectorTilesIdle } from './vectorTilesIdle.js';
|
|
3
3
|
import { yieldTask } from '../utils/yieldTask.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Attach vector batches incrementally while the tile session remains current.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} owner Vector tile layer.
|
|
9
|
+
* @param {Object} tile Tile receiving the batches.
|
|
10
|
+
* @param {Object} group Leaflet group receiving the layers.
|
|
11
|
+
* @param {Array} batches Prepared vector batches.
|
|
12
|
+
* @param {Object} session Session identity.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Promise<boolean>} Whether every batch was attached.
|
|
15
|
+
*/
|
|
5
16
|
export async function attachVectorTileBatches(owner, tile, group, batches, session) {
|
|
6
17
|
let batch, start = performance.now();
|
|
7
18
|
for (batch of batches) {
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order vector labels by ascending priority value.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} a First label.
|
|
5
|
+
* @param {Object} b Second label.
|
|
6
|
+
*
|
|
7
|
+
* @returns {number} Relative order of the labels.
|
|
8
|
+
*/
|
|
1
9
|
export function compareVectorLabelPriority(a, b) {
|
|
2
10
|
return a.priority - b.priority;
|
|
3
11
|
}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order vector tiles by ascending distance.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} a First tile.
|
|
5
|
+
* @param {Object} b Second tile.
|
|
6
|
+
*
|
|
7
|
+
* @returns {number} Relative order of the tiles.
|
|
8
|
+
*/
|
|
1
9
|
export function compareVectorTileDistance(a, b) {
|
|
2
10
|
return a.distance - b.distance;
|
|
3
11
|
}
|
|
@@ -12,6 +12,14 @@ import { retireVectorTileGroup } from './retireVectorTileGroup.js';
|
|
|
12
12
|
import { pumpVectorTiles } from './pumpVectorTiles.js';
|
|
13
13
|
import { loadVectorTile } from './loadVectorTile.js';
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Resolve vector tile settings and install the layer's lifecycle methods.
|
|
17
|
+
*
|
|
18
|
+
* @param {Object} layer Leaflet layer to configure.
|
|
19
|
+
* @param {Object} options Vector tile source options.
|
|
20
|
+
*
|
|
21
|
+
* @returns {Promise<Object>} The configured layer.
|
|
22
|
+
*/
|
|
15
23
|
export async function configureVectorTileLayer(layer, options) {
|
|
16
24
|
const settings = await vectorTileSettings(options);
|
|
17
25
|
if (typeof settings.sprite === 'string') settings.spriteSheet = await loadVectorSprite(settings.sprite);
|
|
@@ -2,6 +2,21 @@ import { evaluateStyle } from '../vector-style/evaluateStyle.js';
|
|
|
2
2
|
import { projectVectorPoint } from './projectVectorPoint.js';
|
|
3
3
|
import { vectorStyleValue } from './vectorStyleValue.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Construct a projected vector label candidate with evaluated style properties.
|
|
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} properties Feature properties.
|
|
12
|
+
* @param {number} order Style layer order.
|
|
13
|
+
* @param {string} text Label text.
|
|
14
|
+
* @param {Object} icon Sprite icon.
|
|
15
|
+
* @param {Object} anchor Label anchor and optional line endpoints.
|
|
16
|
+
* @param {number} size Text size.
|
|
17
|
+
*
|
|
18
|
+
* @returns {Object} Label candidate.
|
|
19
|
+
*/
|
|
5
20
|
export function createVectorLabel(job, layer, entry, properties, order, text, icon, anchor, size) {
|
|
6
21
|
return /* alloc */ {
|
|
7
22
|
text, latlng: projectVectorPoint(anchor.point, job.coords, layer.extent),
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { reportError } from '../scene/reportLayerError.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Report a rendered vector batch error on its owning layer.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} event Error event.
|
|
7
|
+
*/
|
|
3
8
|
export function forwardVectorTileError({ error }) {
|
|
4
9
|
reportError(this, error);
|
|
5
10
|
}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load the sprite index and derive the corresponding image URL.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} url Sprite URL without extension.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Promise<Object>} Sprite image URL and index.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If the sprite index request returns an unsuccessful status.
|
|
9
|
+
*/
|
|
1
10
|
export async function loadVectorSprite(url) {
|
|
2
11
|
const response = await fetch(`${url}.json`);
|
|
3
12
|
if (!response.ok) throw /* alloc */ new Error(`Sprite ${url}.json: HTTP ${response.status}`);
|
|
@@ -3,6 +3,15 @@ import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.j
|
|
|
3
3
|
import { vectorStyleZoom } from './vectorStyleZoom.js';
|
|
4
4
|
import { attachVectorTileBatches } from './attachVectorTileBatches.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Fetch, prepare and attach a vector tile while its session remains current.
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} tile Tile state and abort controller.
|
|
10
|
+
*
|
|
11
|
+
* @returns {Promise<void>} Completion of the load or error reporting.
|
|
12
|
+
*
|
|
13
|
+
* @throws {Error} HTTP errors are caught internally and emitted on the owning layer.
|
|
14
|
+
*/
|
|
6
15
|
export async function loadVectorTile(tile) {
|
|
7
16
|
const { coords, controller } = tile, session = this.session;
|
|
8
17
|
const { url, style, sourceId, maxZoom, maxNativeZoom } = vectorTileOptionsByLayer.get(this);
|
|
@@ -10,6 +10,11 @@ import { onVectorTileWorkerError } from './onVectorTileWorkerError.js';
|
|
|
10
10
|
import { createGeometryWorker } from '../workers/createGeometryWorker.js';
|
|
11
11
|
import { vectorWorkerByLayer } from '../weakmaps/vectorWorkerByLayer.js';
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Initialize vector tile panes, worker and map listeners when the layer is added.
|
|
15
|
+
*
|
|
16
|
+
* @param {Object} map Leaflet map.
|
|
17
|
+
*/
|
|
13
18
|
export function onVectorTileAdd(map) {
|
|
14
19
|
const { style, pane } = vectorTileOptionsByLayer.get(this);
|
|
15
20
|
let index, entry;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { revokeVectorWorkerUrl } from './revokeVectorWorkerUrl.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Resolve or reject the pending vector tile job for a worker response.
|
|
5
|
+
*
|
|
6
|
+
* @param {MessageEvent} event Worker message.
|
|
7
|
+
*/
|
|
3
8
|
export function onVectorTileMessage({ data }) {
|
|
4
9
|
revokeVectorWorkerUrl(this);
|
|
5
10
|
const pending = this.waiting.get(data.id);
|
|
@@ -2,6 +2,11 @@ import { vectorTileEvents } from '../globals/vectorTileEvents.js';
|
|
|
2
2
|
import { vectorWorkerByLayer } from '../weakmaps/vectorWorkerByLayer.js';
|
|
3
3
|
import { revokeVectorWorkerUrl } from './revokeVectorWorkerUrl.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Remove listeners, cancel pending work and dispose rendered vector tiles and labels.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} map Leaflet map.
|
|
9
|
+
*/
|
|
5
10
|
export function onVectorTileRemove(map) {
|
|
6
11
|
map.off(vectorTileEvents, this.refresh);
|
|
7
12
|
map.off('move rotate pitch', this.rotateLabels);
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { reportError } from '../scene/reportLayerError.js';
|
|
2
2
|
import { revokeVectorWorkerUrl } from './revokeVectorWorkerUrl.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Reject pending vector jobs and report a worker error to the layer.
|
|
6
|
+
*
|
|
7
|
+
* @param {ErrorEvent} event Worker error event.
|
|
8
|
+
*/
|
|
4
9
|
export function onVectorTileWorkerError(event) {
|
|
5
10
|
revokeVectorWorkerUrl(this);
|
|
6
11
|
const error = /* alloc */ new Error(`Worker MVT: ${event.message}`);
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { vectorTilePaint } from './vectorTilePaint.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Update a rendered vector batch's paint at the given zoom.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} batch Rendered batch and its style entry.
|
|
7
|
+
* @param {number} zoom Style zoom.
|
|
8
|
+
*/
|
|
3
9
|
export function paintVectorTileBatch(batch, zoom) {
|
|
4
10
|
const paint = vectorTilePaint(batch, zoom), { layer } = batch;
|
|
5
11
|
if (batch.kind === 'line') {
|
|
@@ -4,6 +4,15 @@ import { vectorLabelAnchors } from './vectorLabelAnchors.js';
|
|
|
4
4
|
import { vectorLabelText } from './vectorLabelText.js';
|
|
5
5
|
import { createVectorLabel } from './createVectorLabel.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Add in-tile label candidates for a styled vector feature.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} job Vector tile preparation job.
|
|
11
|
+
* @param {Object} layer Decoded source layer.
|
|
12
|
+
* @param {Object} entry Style layer entry.
|
|
13
|
+
* @param {Object} feature Decoded feature.
|
|
14
|
+
* @param {number} order Style layer order.
|
|
15
|
+
*/
|
|
7
16
|
export function prepareVectorLabel(job, layer, entry, feature, order) {
|
|
8
17
|
const { properties } = feature, { zoom } = job;
|
|
9
18
|
const text = vectorLabelText(entry, properties, zoom);
|
|
@@ -5,6 +5,14 @@ import { vectorFeaturePaint } from './vectorFeaturePaint.js';
|
|
|
5
5
|
import { vectorPaint } from '../vector-style/vectorPaint.js';
|
|
6
6
|
import { appendVectorBatch } from './appendVectorBatch.js';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Prepare labels or painted geometry batches for a vector style layer.
|
|
10
|
+
*
|
|
11
|
+
* @param {Object} job Vector tile preparation job.
|
|
12
|
+
* @param {Object} layer Decoded source layer.
|
|
13
|
+
* @param {Object} entry Style layer entry.
|
|
14
|
+
* @param {number} order Style layer order.
|
|
15
|
+
*/
|
|
8
16
|
export function prepareVectorStyleLayer(job, layer, entry, order) {
|
|
9
17
|
const batches = /* alloc */ new Map(), dependencies = vectorStyleDependencies(entry);
|
|
10
18
|
const outlineColor = entry.type === 'fill' ? entry.paint?.['fill-outline-color'] : null;
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { decodeVectorTile } from '../mvt/decodeVectorTile.js';
|
|
2
2
|
import { prepareVectorStyleLayer } from './prepareVectorStyleLayer.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Decode a vector tile and prepare its styled geometry and label candidates.
|
|
6
|
+
*
|
|
7
|
+
* @param {ArrayBuffer} buffer Encoded vector tile.
|
|
8
|
+
* @param {Object} coords Tile coordinates.
|
|
9
|
+
* @param {Array} style Style layer entries.
|
|
10
|
+
* @param {number} zoom Style zoom.
|
|
11
|
+
* @param {string} source Optional source identifier.
|
|
12
|
+
* @param {number} maxZoom Maximum map zoom for style evaluation.
|
|
13
|
+
* @param {number} mapZoom Current map zoom.
|
|
14
|
+
*
|
|
15
|
+
* @returns {Object} Prepared batches and labels.
|
|
16
|
+
*/
|
|
4
17
|
export function prepareVectorTile(buffer, coords, style, zoom, source, maxZoom = 19, mapZoom = zoom) {
|
|
5
18
|
const layers = decodeVectorTile(buffer), byName = /* alloc */ new Map();
|
|
6
19
|
const job = /* alloc */ { coords, zoom, mapZoom, maxZoom, output: /* alloc */ [], labels: /* alloc */ [],
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { projectVectorPoint } from './projectVectorPoint.js';
|
|
2
2
|
import { simplifyVectorPath } from './simplifyVectorPath.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Simplify and project tile geometry paths to geographic coordinates.
|
|
6
|
+
*
|
|
7
|
+
* @param {Array} geometry Tile coordinate paths.
|
|
8
|
+
* @param {Object} coords Tile coordinates.
|
|
9
|
+
* @param {number} extent Tile coordinate extent.
|
|
10
|
+
* @param {number} tolerance Simplification tolerance.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Array} Projected paths.
|
|
13
|
+
*/
|
|
4
14
|
export function projectVectorPaths(geometry, coords, extent, tolerance) {
|
|
5
15
|
const paths = /* alloc */ [];
|
|
6
16
|
let path, simplified, projected, point;
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project a vector tile point into latitude and longitude.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<number>} point Tile-local coordinates.
|
|
5
|
+
* @param {Object} coords Tile coordinates.
|
|
6
|
+
* @param {number} extent Tile coordinate extent.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Array<number>} Latitude and longitude.
|
|
9
|
+
*/
|
|
1
10
|
export function projectVectorPoint(point, coords, extent) {
|
|
2
11
|
const size = 2 ** coords.z;
|
|
3
12
|
const x = (coords.x + point[0] / extent) / size;
|
|
@@ -2,6 +2,16 @@ import { triangulateVectorRings } from '../mvt/triangulateVectorRings.js';
|
|
|
2
2
|
import { projectVectorPoint } from './projectVectorPoint.js';
|
|
3
3
|
import { simplifyVectorPath } from './simplifyVectorPath.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Simplify polygon rings, triangulate them and project their vertices.
|
|
7
|
+
*
|
|
8
|
+
* @param {Array} geometry Tile coordinate rings.
|
|
9
|
+
* @param {Object} coords Tile coordinates.
|
|
10
|
+
* @param {number} extent Tile coordinate extent.
|
|
11
|
+
* @param {number} tolerance Simplification tolerance.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Array} Projected triangle paths.
|
|
14
|
+
*/
|
|
5
15
|
export function projectVectorTriangles(geometry, coords, extent, tolerance) {
|
|
6
16
|
const paths = /* alloc */ [], rings = /* alloc */ [];
|
|
7
17
|
let triangle, projected, point, ring;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { reportError } from '../scene/reportLayerError.js';
|
|
2
2
|
import { vectorTileAwaited } from './vectorTileAwaited.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Cancel unneeded vector tiles and retire groups no longer needed as fallbacks.
|
|
6
|
+
*/
|
|
4
7
|
export function pruneVectorTiles() {
|
|
5
8
|
let tile, key;
|
|
6
9
|
for ([key, tile] of this.tiles) {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { compareVectorTileDistance } from './compareVectorTileDistance.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Start pending needed tiles nearest the map center, up to the concurrency limit.
|
|
5
|
+
*/
|
|
3
6
|
export function pumpVectorTiles() {
|
|
4
7
|
if (!this.session) return;
|
|
5
8
|
const center = this._map.getCenter(), pending = /* alloc */ [];
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch TileJSON metadata and merge its tile URL and defaults into source options.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} options Source options including the TileJSON URL.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Promise<Object>} Options with resolved tile URL and metadata.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If the metadata request returns an unsuccessful status.
|
|
9
|
+
* @throws {Error} If the metadata lacks a tile URL template.
|
|
10
|
+
*/
|
|
1
11
|
export async function readTileJSON(options) {
|
|
2
12
|
const url = /* alloc */ new URL(options.tileJSON, document.baseURI).href;
|
|
3
13
|
const response = await fetch(url);
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { parseVectorStyle } from '../vector-style/parseVectorStyle.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Load or extract vector style layers and validate their identifiers and types.
|
|
5
|
+
*
|
|
6
|
+
* @param {string|Object|Array} style Style URL, document or layer array.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Promise<Array>} Validated style layers.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If the style request returns an unsuccessful status.
|
|
11
|
+
* @throws {Error} If the style does not contain a layer array.
|
|
12
|
+
* @throws {Error} If a style layer lacks a string identifier or type.
|
|
13
|
+
*/
|
|
3
14
|
export async function readVectorStyle(style) {
|
|
4
15
|
if (typeof style === 'string') {
|
|
5
16
|
const response = await fetch(style);
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reserve label cells only if none are already occupied.
|
|
3
|
+
*
|
|
4
|
+
* @param {Iterable<string>} cells Cells required by the label.
|
|
5
|
+
* @param {Set<string>} occupied Previously occupied cells.
|
|
6
|
+
*
|
|
7
|
+
* @returns {boolean} Whether the cells were reserved.
|
|
8
|
+
*/
|
|
1
9
|
export function reserveVectorLabelCells(cells, occupied) {
|
|
2
10
|
let cell;
|
|
3
11
|
for (cell of cells) if (occupied.has(cell)) return false;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { yieldTask } from '../utils/yieldTask.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Remove a tile group's layers incrementally while its session remains current.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} group Leaflet layer group to retire.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Promise<void>} Completion of retirement.
|
|
9
|
+
*/
|
|
3
10
|
export async function retireVectorTileGroup(group) {
|
|
4
11
|
const session = this.session;
|
|
5
12
|
this.retiring.add(group);
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { vectorWorkerByLayer } from '../weakmaps/vectorWorkerByLayer.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Revoke a vector worker's temporary blob URL once it is no longer needed.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} layer Owning vector tile layer.
|
|
7
|
+
*/
|
|
3
8
|
export function revokeVectorWorkerUrl(layer) {
|
|
4
9
|
const entry = vectorWorkerByLayer.get(layer);
|
|
5
10
|
if (entry?.blobUrl) {
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { radians } from '../globals/radians.js';
|
|
2
2
|
import { markerSetRotation } from '../core/markerSetRotation.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Rotate a line label to follow its projected segment while keeping text upright.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} map Leaflet map.
|
|
8
|
+
* @param {Object} marker Label marker.
|
|
9
|
+
* @param {Object} label Label candidate with optional line endpoints.
|
|
10
|
+
*/
|
|
4
11
|
export function rotateVectorLabel(map, marker, label) {
|
|
5
12
|
if (!label.along) return;
|
|
6
13
|
const a = map.latLngToContainerPoint(label.along[0]), b = map.latLngToContainerPoint(label.along[1]);
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { rotateVectorLabel } from './rotateVectorLabel.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Update the rotation of the bound layer's line labels.
|
|
5
|
+
*/
|
|
3
6
|
export function rotateVectorLabels() {
|
|
4
7
|
let marker;
|
|
5
8
|
for (marker of this.labels.values()) if (marker._mvtLabel) rotateVectorLabel(this._map, marker, marker._mvtLabel);
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simplify a path with a distance tolerance while retaining its endpoints.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array} path Tile-coordinate points.
|
|
5
|
+
* @param {number} tolerance Maximum retained deviation.
|
|
6
|
+
*
|
|
7
|
+
* @returns {Array} Simplified path.
|
|
8
|
+
*/
|
|
1
9
|
export function simplifyVectorPath(path, tolerance) {
|
|
2
10
|
if (path.length < 3) return path;
|
|
3
11
|
const keep = /* alloc */ new Uint8Array(path.length);
|
|
@@ -4,6 +4,15 @@ import { vectorLabelIcon } from './vectorLabelIcon.js';
|
|
|
4
4
|
import { rotateVectorLabel } from './rotateVectorLabel.js';
|
|
5
5
|
import { forwardVectorTileError } from './forwardVectorTileError.js';
|
|
6
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
|
+
*/
|
|
7
16
|
export function updateVectorLabelMarker(owner, label, key) {
|
|
8
17
|
const appearance = JSON.stringify(/* alloc */ [label.size, label.color, label.halo, label.haloWidth, label.icon]);
|
|
9
18
|
const sheet = vectorTileOptionsByLayer.get(owner).spriteSheet;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { evaluateStyle } from '../vector-style/evaluateStyle.js';
|
|
2
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
|
+
*/
|
|
3
9
|
export function updateVectorLabelStyle(label, zoom) {
|
|
4
10
|
label.size = evaluateStyle(label.entry.layout?.['text-size'] ?? 12, label.properties, zoom);
|
|
5
11
|
label.color = evaluateStyle(label.entry.paint?.['text-color'] ?? '#000', label.properties, zoom);
|
|
@@ -5,6 +5,11 @@ import { updateVectorLabelMarker } from './updateVectorLabelMarker.js';
|
|
|
5
5
|
import { vectorTilesIdle } from './vectorTilesIdle.js';
|
|
6
6
|
import { yieldTask } from '../utils/yieldTask.js';
|
|
7
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
|
+
*/
|
|
8
13
|
export async function updateVectorTileLabels() {
|
|
9
14
|
const session = this.session, revision = this.labelRevision = (this.labelRevision || 0) + 1;
|
|
10
15
|
this.labelsReady = false;
|
|
@@ -3,6 +3,11 @@ import { vectorStyleZoom } from './vectorStyleZoom.js';
|
|
|
3
3
|
import { vectorTilesIdle } from './vectorTilesIdle.js';
|
|
4
4
|
import { yieldTask } from '../utils/yieldTask.js';
|
|
5
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
|
+
*/
|
|
6
11
|
export async function updateVectorTilePaint() {
|
|
7
12
|
const zoom = vectorStyleZoom(this), session = this.session;
|
|
8
13
|
if (this.paintZoom === zoom) return;
|
|
@@ -2,6 +2,9 @@ import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.j
|
|
|
2
2
|
import { vectorStyleZoom } from './vectorStyleZoom.js';
|
|
3
3
|
import { reportError } from '../scene/reportLayerError.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Update needed tiles for the map bounds, then schedule loading, paint and labels.
|
|
7
|
+
*/
|
|
5
8
|
export function updateVectorTiles() {
|
|
6
9
|
if (!this.session) return;
|
|
7
10
|
const { minNativeZoom, maxNativeZoom } = vectorTileOptionsByLayer.get(this);
|
|
@@ -1,3 +1,12 @@
|
|
|
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
|
+
*/
|
|
1
10
|
export function validateVectorTileZooms(minNativeZoom, maxNativeZoom, maxZoom) {
|
|
2
11
|
if (!Number.isInteger(minNativeZoom) || !Number.isInteger(maxNativeZoom) || !Number.isInteger(maxZoom) ||
|
|
3
12
|
minNativeZoom < 0 || maxNativeZoom < minNativeZoom || maxZoom < maxNativeZoom || maxZoom > 24) {
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { vectorPaint } from '../vector-style/vectorPaint.js';
|
|
2
2
|
import { visibleStyle } from '../vector-style/visibleStyle.js';
|
|
3
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
|
+
*/
|
|
4
14
|
export function vectorFeaturePaint(entry, feature, sampleZoom, maxZoom) {
|
|
5
15
|
if (entry.type === 'fill') return feature.type === 3 ? vectorPaint(entry, feature.properties, sampleZoom) : null;
|
|
6
16
|
if (entry.type !== 'line' || feature.type !== 2) return null;
|
|
@@ -2,6 +2,16 @@ import { projectVectorTriangles } from './projectVectorTriangles.js';
|
|
|
2
2
|
import { projectVectorPaths } from './projectVectorPaths.js';
|
|
3
3
|
import { vectorTolerance } from './vectorTolerance.js';
|
|
4
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
|
+
*/
|
|
5
15
|
export function vectorFeaturePaths(job, layer, entry, feature) {
|
|
6
16
|
const cache = entry.type === 'fill' ? job.triangles : job.projected;
|
|
7
17
|
let paths = cache.get(feature);
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { visibleStyle } from '../vector-style/visibleStyle.js';
|
|
2
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
|
+
*/
|
|
3
13
|
export function vectorFeatureZoom(entry, properties, zoom, maxZoom) {
|
|
4
14
|
if (visibleStyle(entry, properties, zoom)) return zoom;
|
|
5
15
|
zoom = maxZoom;
|