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
package/src/camera/mapPanBy.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import { mapMethods } from '../globals/mapMethods.js';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { mapMethods } from '../globals/mapMethods.js';
|
|
2
|
+
import { project } from '../projections/projectCameraPoint.js';
|
|
3
|
+
import { pointOf } from '../projections/toPoint.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Convert a screen offset to ground pixels and pan this map.
|
|
7
|
+
*
|
|
8
|
+
* @param {L.Point|Array} offset Screen-space pan offset.
|
|
9
|
+
* @param {Object} options Leaflet pan options.
|
|
10
|
+
*
|
|
11
|
+
* @returns {L.Map} This map.
|
|
12
|
+
*/
|
|
6
13
|
export function mapPanBy(offset, options) {
|
|
7
14
|
const half = this.getSize().divideBy(2);
|
|
8
15
|
const ground = half.subtract(project(this, half.subtract(pointOf(offset)), true));
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { mapMethods } from '../globals/mapMethods.js';
|
|
2
2
|
import { cameraZeroPadding } from '../globals/cameraZeroPadding.js';
|
|
3
|
-
|
|
4
3
|
import { mapGetPitch } from './mapGetPitch.js';
|
|
5
4
|
import { mapGetBearing } from './mapGetBearing.js';
|
|
6
|
-
|
|
7
5
|
import { pointOf } from '../projections/toPoint.js';
|
|
8
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Pan this map until a location lies inside the padded camera viewport.
|
|
9
|
+
*
|
|
10
|
+
* @param {L.LatLng|Array} latlng Geographic location.
|
|
11
|
+
* @param {Object} [options] Padding and pan options.
|
|
12
|
+
*
|
|
13
|
+
* @returns {L.Map} This map.
|
|
14
|
+
*/
|
|
9
15
|
export function mapPanInside(latlng, options = /* alloc */ {}) {
|
|
10
16
|
if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.panInside.call(this, latlng, options);
|
|
11
17
|
const min = pointOf(options.paddingTopLeft || options.padding || cameraZeroPadding);
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { cameraAnimatedOptions } from '../globals/cameraAnimatedOptions.js';
|
|
2
2
|
import { mapSetBearing } from './mapSetBearing.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Reset a map's bearing to north.
|
|
6
|
+
*
|
|
7
|
+
* @param {L.Map} map Map to update.
|
|
8
|
+
* @param {Object} [options] Camera animation options.
|
|
9
|
+
*
|
|
10
|
+
* @returns {L.Map} The updated map.
|
|
11
|
+
*/
|
|
4
12
|
export function mapResetNorth(map, options = cameraAnimatedOptions) { return mapSetBearing(map, 0, options); }
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { cameraAnimatedOptions } from '../globals/cameraAnimatedOptions.js';
|
|
2
2
|
import { mapAnimateCamera } from '../animations/mapAnimateCamera.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Reset a map's bearing and pitch to zero.
|
|
6
|
+
*
|
|
7
|
+
* @param {L.Map} map Map to update.
|
|
8
|
+
* @param {Object} [options] Camera animation options.
|
|
9
|
+
*
|
|
10
|
+
* @returns {L.Map} The updated map.
|
|
11
|
+
*/
|
|
4
12
|
export function mapResetNorthPitch(map, options = cameraAnimatedOptions) { return mapAnimateCamera(map, 0, 0, options); }
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import { mapAnimateCamera } from '../animations/mapAnimateCamera.js';
|
|
2
2
|
import { mapGetPitch } from './mapGetPitch.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Set or animate a map's bearing while retaining its current pitch.
|
|
6
|
+
*
|
|
7
|
+
* @param {L.Map} map Map to update.
|
|
8
|
+
* @param {number} bearing Target bearing in degrees.
|
|
9
|
+
* @param {Object} [options] Camera animation options.
|
|
10
|
+
*
|
|
11
|
+
* @returns {L.Map} The updated map.
|
|
12
|
+
*/
|
|
3
13
|
export function mapSetBearing(map, bearing, options) { return mapAnimateCamera(map, mapGetPitch(map), bearing, options); }
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import { mapAnimateCamera } from '../animations/mapAnimateCamera.js';
|
|
2
2
|
import { mapGetBearing } from './mapGetBearing.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Set or animate a map's pitch while retaining its current bearing.
|
|
6
|
+
*
|
|
7
|
+
* @param {L.Map} map Map to update.
|
|
8
|
+
* @param {number} pitch Target pitch in degrees.
|
|
9
|
+
* @param {Object} [options] Camera animation options.
|
|
10
|
+
*
|
|
11
|
+
* @returns {L.Map} The updated map.
|
|
12
|
+
*/
|
|
3
13
|
export function mapSetPitch(map, pitch, options) { return mapAnimateCamera(map, pitch, mapGetBearing(map), options); }
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import { cameraBearingByMap } from '../weakmaps/cameraBearingByMap.js';
|
|
2
2
|
import { cameraPitchByMap } from '../weakmaps/cameraPitchByMap.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
3
|
import { mapGetPitch } from './mapGetPitch.js';
|
|
6
4
|
import { mapGetBearing } from './mapGetBearing.js';
|
|
7
|
-
|
|
8
5
|
import { updateSky } from './updateSky.js';
|
|
9
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Set validated camera angles immediately and notify listeners of changes.
|
|
9
|
+
*
|
|
10
|
+
* @param {L.Map} map Map to update.
|
|
11
|
+
* @param {number} pitch Pitch in degrees.
|
|
12
|
+
* @param {number} bearing Bearing in degrees.
|
|
13
|
+
*
|
|
14
|
+
* @returns {L.Map} The updated map.
|
|
15
|
+
*
|
|
16
|
+
* @throws {TypeError} If either angle is not finite.
|
|
17
|
+
* @throws {TypeError} If maxPitch is not finite or is outside 0 to 180 degrees.
|
|
18
|
+
*/
|
|
10
19
|
export function mapSetPitchAndBearing(map, pitch, bearing) {
|
|
11
20
|
if (!Number.isFinite(pitch) || !Number.isFinite(bearing)) throw /* alloc */ new TypeError('Camera angles must be finite numbers');
|
|
12
21
|
if (!Number.isFinite(map.options.maxPitch) || map.options.maxPitch < 0 || map.options.maxPitch > 180) {
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { L } from '../globals/L.js';
|
|
2
2
|
import { mapMethods } from '../globals/mapMethods.js';
|
|
3
|
-
|
|
4
3
|
import { mapGetPitch } from './mapGetPitch.js';
|
|
5
4
|
import { mapGetBearing } from './mapGetBearing.js';
|
|
6
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Zoom around a geographic location or screen point while preserving the camera anchor.
|
|
8
|
+
*
|
|
9
|
+
* @param {L.LatLng|L.Point} latlng Geographic location or container point.
|
|
10
|
+
* @param {number} zoom Target zoom.
|
|
11
|
+
* @param {Object} options Leaflet zoom options.
|
|
12
|
+
*
|
|
13
|
+
* @returns {L.Map} This map.
|
|
14
|
+
*/
|
|
7
15
|
export function mapSetZoomAround(latlng, zoom, options) {
|
|
8
16
|
if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.setZoomAround.call(this, latlng, zoom, options);
|
|
9
17
|
zoom = this._limitZoom(zoom);
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { mapMethods } from '../globals/mapMethods.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Attempt an animated pan to a center using Leaflet's ground-space offset.
|
|
5
|
+
*
|
|
6
|
+
* @param {L.LatLng} center Target center.
|
|
7
|
+
* @param {Object} [options] Leaflet pan options.
|
|
8
|
+
*
|
|
9
|
+
* @returns {boolean} Whether the pan was started.
|
|
10
|
+
*/
|
|
4
11
|
export function mapTryAnimatedPan(center, options) {
|
|
5
12
|
// Leaflet's geographic recentering already supplies ground pixels, not screen pixels.
|
|
6
13
|
const offset = this._getCenterOffset(center)._trunc();
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { L } from '../globals/L.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Refresh marker, popup and tooltip positions for a camera change.
|
|
5
|
+
*
|
|
6
|
+
* @param {L.Map} map Map containing the overlays.
|
|
7
|
+
*/
|
|
2
8
|
export function mapUpdateCameraOverlays(map) {
|
|
3
9
|
let layer;
|
|
4
10
|
for (layer of Object.values(map._layers)) {
|
package/src/camera/setBearing.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { mapSetBearing } from './mapSetBearing.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Set or animate this map's bearing.
|
|
5
|
+
*
|
|
6
|
+
* @param {number} bearing Target bearing in degrees.
|
|
7
|
+
* @param {Object} [options] Camera animation options.
|
|
8
|
+
*
|
|
9
|
+
* @returns {L.Map} This map.
|
|
10
|
+
*/
|
|
3
11
|
export function setBearing(bearing, options) {
|
|
4
12
|
return mapSetBearing(this, bearing, options);
|
|
5
13
|
}
|
package/src/camera/setPitch.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { mapSetPitch } from './mapSetPitch.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Set or animate this map's pitch.
|
|
5
|
+
*
|
|
6
|
+
* @param {number} pitch Target pitch in degrees.
|
|
7
|
+
* @param {Object} [options] Camera animation options.
|
|
8
|
+
*
|
|
9
|
+
* @returns {L.Map} This map.
|
|
10
|
+
*/
|
|
3
11
|
export function setPitch(pitch, options) {
|
|
4
12
|
return mapSetPitch(this, pitch, options);
|
|
5
13
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { cameraByLayer } from '../weakmaps/cameraByLayer.js';
|
|
2
2
|
import { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';
|
|
3
3
|
import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
4
|
import { radians } from '../globals/radians.js';
|
|
7
5
|
import { cameraFov } from '../globals/cameraFov.js';
|
|
8
6
|
import { earthCirc } from '../globals/earthCirc.js';
|
|
@@ -11,11 +9,15 @@ import { mapMethods } from '../globals/mapMethods.js';
|
|
|
11
9
|
import { walkByMap } from '../weakmaps/walkByMap.js';
|
|
12
10
|
import { mapGetPitch } from './mapGetPitch.js';
|
|
13
11
|
import { mapGetBearing } from './mapGetBearing.js';
|
|
14
|
-
|
|
15
12
|
import { updateCamera } from "./updateSceneCamera.js";
|
|
16
|
-
|
|
17
13
|
import { animationPoint } from '../projections/transformZoomAnimationPoint.js';
|
|
18
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Match the scene camera to the map view, terrain and active walker height.
|
|
17
|
+
*
|
|
18
|
+
* @param {L.Layer} layer Layer owning the camera and scene origin.
|
|
19
|
+
* @param {L.Point} size Viewport dimensions in pixels.
|
|
20
|
+
*/
|
|
19
21
|
export function updateMapCamera(layer, size) {
|
|
20
22
|
const map = layer._map;
|
|
21
23
|
// Match the map's perspective, including the intermediate view of an animated zoom.
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { halfRadians } from '../globals/halfRadians.js';
|
|
2
|
-
/** Orthonormal view basis plus perspective matrices, refreshed before projecting/drawing. */
|
|
3
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Refresh the camera's orthonormal view basis and perspective matrices.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} camera Camera position, target, up vector and matrix state.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If the view transform is singular.
|
|
9
|
+
*/
|
|
4
10
|
export function updateCamera(camera) {
|
|
5
11
|
camera.x ||= /* alloc */ [0, 0, 0];
|
|
6
12
|
camera.y ||= /* alloc */ [0, 0, 0];
|
package/src/camera/updateSky.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { pitchSkyByMap } from '../weakmaps/pitchSkyByMap.js';
|
|
2
|
-
|
|
3
2
|
import { L } from '../globals/L.js';
|
|
4
3
|
import { radians } from '../globals/radians.js';
|
|
5
|
-
|
|
6
4
|
import { mapGetPitch } from './mapGetPitch.js';
|
|
7
5
|
|
|
8
|
-
|
|
6
|
+
/** Update this map's sky element to match the pitched horizon. */
|
|
9
7
|
export function updateSky() {
|
|
10
8
|
const height = this.getSize().y, pitch = mapGetPitch(this) * radians;
|
|
11
9
|
const far = height * this.options.pitchMaxDistance, distance = height * 1.5;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Cloud Optimized GeoTIFF
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Reads supported GeoTIFF metadata and byte ranges and decodes color or elevation
|
|
6
|
+
tiles from COG sources. The same source can be used by raster and terrain paths.
|
|
7
|
+
|
|
8
|
+
## Adapting a COG to tiles
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
File["COG / PMTiles asset"] --> Open["Read TIFF directories"]
|
|
13
|
+
Open --> Adapter["Archive-compatible header + XYZ"]
|
|
14
|
+
Adapter --> Overview["Select zoom overview"]
|
|
15
|
+
Overview --> Color["Color blocks → image"]
|
|
16
|
+
Overview --> DEM["Elevation blocks → data"]
|
|
17
|
+
Color --> Raster["Raster"]
|
|
18
|
+
DEM --> Terrain["Terrain"]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Supports classic TIFF in EPSG:3857, not BigTIFF; requests outside coverage
|
|
22
|
+
return no tile. Raster initialization uses a
|
|
23
|
+
[worker-backed adapter](../workers/openCogInWorker.js).
|
|
24
|
+
|
|
25
|
+
- [getCogHeader.js](./getCogHeader.js): obtain COG metadata.
|
|
26
|
+
- [getColorTile.js](./getColorTile.js) and [getElevationTile.js](./getElevationTile.js): request tile data.
|
|
27
|
+
- [decodeCogTile.js](./decodeCogTile.js): decode compressed tile bytes.
|
|
28
|
+
|
|
29
|
+
Related: [archives](../archives/README.md), [terrain](../terrain/README.md), [workers](../workers/README.md).
|
package/src/cog/decodeCogTile.js
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decode an uncompressed or deflate-compressed COG tile to its expected byte length.
|
|
3
|
+
*
|
|
4
|
+
* @param {ArrayBuffer} data Encoded tile data.
|
|
5
|
+
* @param {number} length Expected decoded byte length.
|
|
6
|
+
* @param {number} compression TIFF compression code.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Promise<ArrayBuffer>} Decoded tile data.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If an uncompressed tile has the wrong size.
|
|
11
|
+
* @throws {Error} If decompressed data exceeds the expected size.
|
|
12
|
+
* @throws {Error} If decompressed data is shorter than expected.
|
|
13
|
+
*/
|
|
1
14
|
export async function decodeCogTile(data, length, compression) {
|
|
2
15
|
if (compression === 1) {
|
|
3
16
|
if (data.byteLength !== length) throw /* alloc */ new Error('Invalid uncompressed COG tile size');
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check whether all provided values are finite.
|
|
3
|
+
*
|
|
4
|
+
* @param {ArrayLike<number>} values Values to inspect, if present.
|
|
5
|
+
*
|
|
6
|
+
* @returns {boolean} Whether every value is finite.
|
|
7
|
+
*/
|
|
1
8
|
export function finiteCogValues(values) {
|
|
2
9
|
let value;
|
|
3
10
|
for (value of values || /* alloc */ []) if (!Number.isFinite(value)) return false;
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { decompress } from '../archives/decompress.js';
|
|
2
2
|
import { readCog } from './readCog.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Read and validate a named COG asset entry from PMTiles metadata.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} container Container byte source.
|
|
8
|
+
* @param {Object} header Decoded PMTiles header.
|
|
9
|
+
* @param {string} asset Asset name.
|
|
10
|
+
*
|
|
11
|
+
* @returns {Promise<Object>} Validated asset entry.
|
|
12
|
+
*
|
|
13
|
+
* @throws {Error} If metadata does not contain a valid bounded asset.
|
|
14
|
+
*/
|
|
4
15
|
export async function getCogAssetEntry(container, header, asset) {
|
|
5
16
|
const metadata = JSON.parse(/* alloc */ new TextDecoder().decode(await decompress(
|
|
6
17
|
await readCog(container, header.jsonMetadataOffset, header.jsonMetadataLength), header.internalCompression)));
|
package/src/cog/getCogBase.js
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { hasCogProjection } from './hasCogProjection.js';
|
|
2
2
|
import { validCogGeoArrays } from './validCogGeoArrays.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Extract the base image's north-up Web Mercator georeferencing.
|
|
6
|
+
*
|
|
7
|
+
* @param {Map} tags TIFF tags.
|
|
8
|
+
* @param {number} width Base image width.
|
|
9
|
+
* @param {number} height Base image height.
|
|
10
|
+
* @param {boolean} elevation Whether the image stores elevation.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Object} Base dimensions, resolution, origin and elevation flag.
|
|
13
|
+
*
|
|
14
|
+
* @throws {Error} If georeferencing is not north-up EPSG:3857 PixelIsArea.
|
|
15
|
+
*/
|
|
4
16
|
export function getCogBase(tags, width, height, elevation) {
|
|
5
17
|
const keys = tags.get(34735), scale = tags.get(33550), tie = tags.get(33922);
|
|
6
18
|
if (!validCogGeoArrays(keys, scale, tie) || !hasCogProjection(keys)) {
|
package/src/cog/getCogHeader.js
CHANGED
package/src/cog/getCogProfile.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { validCogDimensions } from './validCogDimensions.js';
|
|
2
2
|
import { validCogEncoding } from './validCogEncoding.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Extract and validate a supported tiled color or elevation TIFF profile.
|
|
6
|
+
*
|
|
7
|
+
* @param {Map} tags TIFF tags.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Object} Image dimensions, sample count and elevation flag.
|
|
10
|
+
*
|
|
11
|
+
* @throws {Error} If the TIFF dimensions or encoding are unsupported.
|
|
12
|
+
*/
|
|
4
13
|
export function getCogProfile(tags) {
|
|
5
14
|
const width = tags.get(256)?.[0], height = tags.get(257)?.[0], samples = tags.get(277)?.[0] ?? 1;
|
|
6
15
|
const bits = tags.get(258), format = tags.get(339) || /* alloc */ [1];
|
package/src/cog/getCogTile.js
CHANGED
|
@@ -2,6 +2,19 @@ import { getElevationTile } from './getElevationTile.js';
|
|
|
2
2
|
import { getColorTile } from './getColorTile.js';
|
|
3
3
|
import { validCogTileCoordinates } from './validCogTileCoordinates.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Read an XYZ color or elevation tile from an open COG, if covered by a level.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} source Open COG source.
|
|
9
|
+
* @param {number} z Tile zoom.
|
|
10
|
+
* @param {number} x Tile column.
|
|
11
|
+
* @param {number} y Tile row.
|
|
12
|
+
* @param {AbortSignal} [signal] Request cancellation signal.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Promise<Object|undefined>} Tile image or elevation data, if covered.
|
|
15
|
+
*
|
|
16
|
+
* @throws {Error} If tile coordinates are invalid.
|
|
17
|
+
*/
|
|
5
18
|
export async function getCogTile(source, z, x, y, signal) {
|
|
6
19
|
signal?.throwIfAborted();
|
|
7
20
|
if (!validCogTileCoordinates(z, x, y)) throw /* alloc */ new Error('Invalid COG tile coordinates');
|
package/src/cog/getColorTile.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { readCogBlock } from './readCogBlock.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Composite the COG color blocks overlapping an XYZ tile into an image bitmap.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} source Open COG source.
|
|
7
|
+
* @param {Object} level COG overview level.
|
|
8
|
+
* @param {number} x XYZ tile column.
|
|
9
|
+
* @param {number} y XYZ tile row.
|
|
10
|
+
* @param {AbortSignal} [signal] Request cancellation signal.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Promise<Object>} Object containing the resulting image bitmap.
|
|
13
|
+
*
|
|
14
|
+
* @throws {Error} If a 2D canvas context cannot be created.
|
|
15
|
+
*/
|
|
3
16
|
export async function getColorTile(source, level, x, y, signal) {
|
|
4
17
|
const canvas = /* alloc */ new OffscreenCanvas(256, 256), context = canvas.getContext('2d');
|
|
5
18
|
if (!context) throw /* alloc */ new Error('Unable to create COG tile canvas');
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { readCogBlock } from './readCogBlock.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Read and validate the Float32 elevation samples for an XYZ tile.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} source Open COG source.
|
|
7
|
+
* @param {Object} level COG elevation level.
|
|
8
|
+
* @param {number} x XYZ tile column.
|
|
9
|
+
* @param {number} y XYZ tile row.
|
|
10
|
+
* @param {AbortSignal} [signal] Request cancellation signal.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Promise<Object>} Object containing the elevation buffer.
|
|
13
|
+
*
|
|
14
|
+
* @throws {Error} If an elevation sample is non-finite or outside the supported range.
|
|
15
|
+
*/
|
|
3
16
|
export async function getElevationTile(source, level, x, y, signal) {
|
|
4
17
|
const data = await readCogBlock(source, level, x - level.x, y - level.y, signal);
|
|
5
18
|
signal?.throwIfAborted();
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check GeoTIFF keys for EPSG:3857 and PixelIsArea.
|
|
3
|
+
*
|
|
4
|
+
* @param {ArrayLike<number>} keys GeoKey directory values, if present.
|
|
5
|
+
*
|
|
6
|
+
* @returns {boolean} Whether both required keys are present.
|
|
7
|
+
*/
|
|
1
8
|
export function hasCogProjection(keys) {
|
|
2
9
|
let projected = false, area = false, i;
|
|
3
10
|
if (keys) for (i = 4; i < keys.length; i += 4) {
|
package/src/cog/initCog.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { initRaster } from '../raster/initRaster.js';
|
|
2
2
|
import { openCogInWorker } from '../workers/openCogInWorker.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Initialize a raster layer backed by a COG archive or a worker-opened COG source.
|
|
6
|
+
*
|
|
7
|
+
* @param {L.Layer} layer Raster layer to initialize.
|
|
8
|
+
* @param {Object} options Layer and COG source options.
|
|
9
|
+
*/
|
|
4
10
|
export function initCog(layer, options) {
|
|
5
11
|
initRaster(layer, /* alloc */ { ariaLabel: 'COG raster', ...options,
|
|
6
12
|
archive: options.archive || openCogInWorker(layer, options) });
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check whether a non-range COG response has an unsupported status or declared size.
|
|
3
|
+
*
|
|
4
|
+
* @param {Response} response HTTP response.
|
|
5
|
+
*
|
|
6
|
+
* @returns {boolean} Whether the full response is unacceptable.
|
|
7
|
+
*/
|
|
1
8
|
export function invalidCogFullResponse(response) {
|
|
2
9
|
return response.status !== 200 || Number(response.headers.get('Content-Length')) > 32000000;
|
|
3
10
|
}
|
package/src/cog/openCog.js
CHANGED
|
@@ -4,7 +4,17 @@ import { getCogTile } from './getCogTile.js';
|
|
|
4
4
|
import { getCogHeader } from './getCogHeader.js';
|
|
5
5
|
import { openCogAsset } from './openCogAsset.js';
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Open an EPSG:3857 COG, standalone or as a named asset in a PMTiles container.
|
|
9
|
+
*
|
|
10
|
+
* @param {string} url COG or container URL.
|
|
11
|
+
* @param {string} [asset] Named COG asset in the container.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Promise<Object>} Archive-compatible header and XYZ tile methods.
|
|
14
|
+
*
|
|
15
|
+
* @throws {Error} If TIFF byte order is invalid.
|
|
16
|
+
* @throws {Error} If the file is not classic TIFF.
|
|
17
|
+
*/
|
|
8
18
|
export async function openCog(url, asset) {
|
|
9
19
|
const source = asset === undefined ? /* alloc */ { url } : await openCogAsset(url, asset);
|
|
10
20
|
source.levels = /* alloc */ new Map();
|
package/src/cog/openCogAsset.js
CHANGED
|
@@ -3,6 +3,14 @@ import { readCog } from './readCog.js';
|
|
|
3
3
|
import { validateCogContainer } from './validateCogContainer.js';
|
|
4
4
|
import { getCogAssetEntry } from './getCogAssetEntry.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Open a named COG asset within a PMTiles container as a bounded byte source.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} url Container URL.
|
|
10
|
+
* @param {string} asset Asset name.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Promise<Object>} COG source with container offset and size.
|
|
13
|
+
*/
|
|
6
14
|
export async function openCogAsset(url, asset) {
|
|
7
15
|
const container = /* alloc */ { url };
|
|
8
16
|
const header = decodeHeader(await readCog(container, 0, 127));
|
package/src/cog/readCog.js
CHANGED
|
@@ -2,6 +2,20 @@ import { validateCogRange } from './validateCogRange.js';
|
|
|
2
2
|
import { validateCogResponse } from './validateCogResponse.js';
|
|
3
3
|
import { readCogBody } from './readCogBody.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Read a validated byte range from a COG source, caching an accepted full response.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} source COG byte source and response state.
|
|
9
|
+
* @param {number} offset Byte offset relative to the source.
|
|
10
|
+
* @param {number} length Number of bytes to read.
|
|
11
|
+
* @param {AbortSignal} [signal] Request cancellation signal.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Promise<ArrayBuffer>} Requested bytes.
|
|
14
|
+
*
|
|
15
|
+
* @throws {Error} If the HTTP response is unsuccessful.
|
|
16
|
+
* @throws {Error} If a full PMTiles container response is truncated.
|
|
17
|
+
* @throws {Error} If the resulting byte range is truncated.
|
|
18
|
+
*/
|
|
5
19
|
export async function readCog(source, offset, length, signal) {
|
|
6
20
|
signal?.throwIfAborted();
|
|
7
21
|
validateCogRange(source, offset, length);
|
package/src/cog/readCogBlock.js
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { readCog } from './readCog.js';
|
|
2
2
|
import { decodeCogTile } from './decodeCogTile.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Read and decode one TIFF tile block from a COG level.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} source Open COG byte source.
|
|
8
|
+
* @param {Object} level COG level with block offsets and lengths.
|
|
9
|
+
* @param {number} x Block column within the level.
|
|
10
|
+
* @param {number} y Block row within the level.
|
|
11
|
+
* @param {AbortSignal} [signal] Request cancellation signal.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Promise<ArrayBuffer>} Decoded block data.
|
|
14
|
+
*/
|
|
4
15
|
export async function readCogBlock(source, level, x, y, signal) {
|
|
5
16
|
const index = y * level.columns + x;
|
|
6
17
|
return decodeCogTile(await readCog(source, level.offsets[index], level.lengths[index], signal),
|
package/src/cog/readCogBody.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a COG HTTP body while enforcing the range or full-response size limit.
|
|
3
|
+
*
|
|
4
|
+
* @param {Response} response HTTP response with a readable body.
|
|
5
|
+
* @param {number} length Expected byte length for a range response.
|
|
6
|
+
*
|
|
7
|
+
* @returns {Promise<Uint8Array>} Response bytes.
|
|
8
|
+
*
|
|
9
|
+
* @throws {Error} If the response exceeds its permitted size.
|
|
10
|
+
*/
|
|
1
11
|
export async function readCogBody(response, length) {
|
|
2
12
|
const reader = response.body.getReader(), chunks = /* alloc */ [];
|
|
3
13
|
let total = 0, part;
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { readCogDirectory } from './readCogDirectory.js';
|
|
2
2
|
import { readCogLevel } from './readCogLevel.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Read TIFF image directories and register contiguous COG zoom levels.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} source Open COG byte source.
|
|
8
|
+
* @param {number} offset First TIFF directory offset.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Promise<Object>} Base image and minimum and maximum zoom.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If directories are cyclic or exceed the supported count.
|
|
13
|
+
* @throws {Error} If there is no image directory.
|
|
14
|
+
* @throws {Error} If overview zoom levels are not contiguous.
|
|
15
|
+
*/
|
|
4
16
|
export async function readCogDirectories(source, offset) {
|
|
5
17
|
const state = /* alloc */ { base: null, minZoom: Infinity, maxZoom: -Infinity };
|
|
6
18
|
const seen = /* alloc */ new Set();
|
|
@@ -2,6 +2,19 @@ import { readCog } from './readCog.js';
|
|
|
2
2
|
import { cogTags } from '../globals/cogTags.js';
|
|
3
3
|
import { readCogTag } from './readCogTag.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Read supported TIFF tags from one image directory.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} source Open COG byte source.
|
|
9
|
+
* @param {number} offset Directory byte offset.
|
|
10
|
+
*
|
|
11
|
+
* @returns {Promise<Object>} Tag map and next directory offset.
|
|
12
|
+
*
|
|
13
|
+
* @throws {Error} If the directory size is invalid.
|
|
14
|
+
* @throws {Error} If a nodata tag is present.
|
|
15
|
+
* @throws {Error} If an affine transformation tag is present.
|
|
16
|
+
* @throws {Error} If a supported tag is duplicated.
|
|
17
|
+
*/
|
|
5
18
|
export async function readCogDirectory(source, offset) {
|
|
6
19
|
const little = source.little;
|
|
7
20
|
const count = /* alloc */ new DataView(await readCog(source, offset, 2)).getUint16(0, little);
|
package/src/cog/readCogLevel.js
CHANGED
|
@@ -3,6 +3,15 @@ import { getCogBase } from './getCogBase.js';
|
|
|
3
3
|
import { validCogGrid } from './validCogGrid.js';
|
|
4
4
|
import { validateCogOffsets } from './validateCogOffsets.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Validate and register one TIFF directory as a COG XYZ level.
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} source Open COG source and level map.
|
|
10
|
+
* @param {Object} directory TIFF directory with parsed tags.
|
|
11
|
+
* @param {Object} state Mutable base image and zoom range.
|
|
12
|
+
*
|
|
13
|
+
* @throws {Error} If the level does not align with the supported Web Mercator grid.
|
|
14
|
+
*/
|
|
6
15
|
export function readCogLevel(source, directory, state) {
|
|
7
16
|
const tags = directory.tags, profile = getCogProfile(tags);
|
|
8
17
|
if (!state.base) state.base = getCogBase(tags, profile.width, profile.height, profile.elevation);
|
package/src/cog/readCogTag.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { readCog } from './readCog.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Read the numeric values of a supported TIFF directory entry.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} source Open COG byte source.
|
|
7
|
+
* @param {DataView} entries Directory entry data.
|
|
8
|
+
* @param {number} i Entry index.
|
|
9
|
+
* @param {number} tag TIFF tag number.
|
|
10
|
+
* @param {boolean} little Whether the TIFF uses little-endian byte order.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Promise<Array<number>>} Decoded tag values.
|
|
13
|
+
*
|
|
14
|
+
* @throws {Error} If the tag type or value count is unsupported.
|
|
15
|
+
*/
|
|
3
16
|
export async function readCogTag(source, entries, i, tag, little) {
|
|
4
17
|
const type = entries.getUint16(i * 12 + 2, little);
|
|
5
18
|
const size = type === 3 ? 2 : type === 4 ? 4 : type === 12 ? 8 : 0;
|