leaflet-city-mapper 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/leaflet-city-mapper-src.js.map +1 -1
- package/dist/leaflet-city-mapper-worker-src.js.map +1 -1
- package/dist/leaflet-city-mapper-worker.js.map +1 -1
- package/dist/leaflet-city-mapper.js.map +1 -1
- package/libs/leaflet-lens.js +151 -151
- package/libs/leaflet.js +3 -3
- package/libs/openlayers-bindings.js +1129 -1129
- package/libs/openlayers-bindings.min.js.map +1 -1
- package/package.json +2 -4
- package/src/animations/cancelCameraAnimation.js +19 -19
- package/src/animations/mapStopPitchBearingAnimation.js +10 -10
- package/src/animations/scheduleCameraAnimation.js +15 -15
- package/src/animations/scheduleMarkerPan.js +14 -14
- package/src/animations/updateZoomCamera.js +25 -25
- package/src/archives/findDirectoryEntry.js +17 -17
- package/src/archives/findTile.js +45 -45
- package/src/archives/getDirectoryEntries.js +30 -30
- package/src/archives/getTileData.js +26 -26
- package/src/archives/readArchiveRange.js +48 -48
- package/src/astronomy/solarTime.js +21 -21
- package/src/camera/cameraMapReady.js +9 -9
- package/src/camera/cleanupCameraMap.js +13 -13
- package/src/camera/constrainCameraToBounds.js +3 -3
- package/src/camera/createSceneCamera.js +25 -25
- package/src/camera/getBearing.js +10 -10
- package/src/camera/getPitch.js +10 -10
- package/src/camera/mapGetBoundsCenterZoom.js +14 -14
- package/src/camera/mapLimitOffset.js +17 -17
- package/src/camera/mapPanBy.js +14 -14
- package/src/camera/setBearing.js +13 -13
- package/src/camera/setPitch.js +13 -13
- package/src/cog/decodeCogTile.js +37 -37
- package/src/cog/finiteCogValues.js +12 -12
- package/src/cog/getCogAssetEntry.js +26 -26
- package/src/cog/getCogBase.js +22 -22
- package/src/cog/getCogHeader.js +10 -10
- package/src/cog/getCogProfile.js +25 -25
- package/src/cog/getCogTile.js +25 -25
- package/src/cog/getColorTile.js +38 -38
- package/src/cog/getElevationTile.js +29 -29
- package/src/cog/hasCogProjection.js +16 -16
- package/src/cog/initCog.js +13 -13
- package/src/cog/invalidCogFullResponse.js +10 -10
- package/src/cog/openCog.js +40 -40
- package/src/cog/openCogAsset.js +22 -22
- package/src/cog/readCog.js +39 -39
- package/src/cog/readCogBlock.js +19 -19
- package/src/cog/readCogBody.js +30 -30
- package/src/cog/readCogDirectories.js +32 -32
- package/src/cog/readCogDirectory.js +34 -34
- package/src/cog/readCogLevel.js +36 -36
- package/src/cog/readCogTag.js +28 -28
- package/src/cog/validCogDimensions.js +15 -15
- package/src/cog/validCogEncoding.js +18 -18
- package/src/cog/validCogGeoArrays.js +17 -17
- package/src/cog/validCogGrid.js +22 -22
- package/src/cog/validCogTileCoordinates.js +13 -13
- package/src/cog/validateCogContainer.js +17 -17
- package/src/cog/validateCogContentRange.js +18 -18
- package/src/cog/validateCogOffsets.js +19 -19
- package/src/cog/validateCogRange.js +16 -16
- package/src/cog/validateCogResponse.js +26 -26
- package/src/collision/collectIntersections.js +41 -41
- package/src/collision/hiddenLightHit.js +19 -19
- package/src/collision/indexTriangle.js +18 -18
- package/src/collision/insideMesh.js +47 -47
- package/src/collision/insideWalker.js +52 -52
- package/src/collision/intersectMeshes.js +40 -40
- package/src/collision/localRay.js +31 -31
- package/src/collision/mergeHits.js +19 -19
- package/src/collision/rayBounds.js +28 -28
- package/src/collision/readTriangle.js +32 -32
- package/src/collision/trafficCollision.js +23 -23
- package/src/collision/transformTriangle.js +18 -18
- package/src/collision/triangleDistance.js +34 -34
- package/src/collision/vertexCount.js +11 -11
- package/src/collision/worldHit.js +30 -30
- package/src/controls/acceptPitchDrag.js +10 -10
- package/src/controls/acceptRotateDrag.js +9 -9
- package/src/controls/addCameraHandler.js +18 -18
- package/src/controls/adjustCameraDrag.js +13 -13
- package/src/controls/cameraDragContextMenu.js +12 -12
- package/src/controls/cameraDragEnd.js +10 -10
- package/src/controls/cameraDragMove.js +31 -31
- package/src/controls/changeCameraTouch.js +17 -17
- package/src/controls/compassOrientation.js +12 -12
- package/src/controls/compassRemoveHooks.js +2 -2
- package/src/controls/containerResizeRemoveHooks.js +2 -2
- package/src/controls/endCameraTouch.js +18 -18
- package/src/controls/failCompassPermission.js +10 -10
- package/src/controls/finishCameraDrag.js +14 -14
- package/src/controls/finishCompassPermission.js +24 -24
- package/src/controls/isEditableTarget.js +9 -9
- package/src/controls/loadCameraControls.js +18 -18
- package/src/controls/moveCameraTouch.js +34 -34
- package/src/controls/refreshRotateFocus.js +5 -5
- package/src/controls/removeCameraDrag.js +28 -28
- package/src/controls/resizeMap.js +7 -7
- package/src/controls/rotateButtonClick.js +16 -16
- package/src/controls/rotateButtonKeydown.js +20 -20
- package/src/controls/rotateControl.js +12 -12
- package/src/controls/shiftRotateRemoveHooks.js +2 -2
- package/src/controls/shiftRotateWheel.js +15 -15
- package/src/core/cameraMarkerOnDrag.js +16 -16
- package/src/core/constructLayer.js +16 -16
- package/src/core/extendLeafletClass.js +12 -12
- package/src/core/extendTerrainPixelBounds.js +41 -41
- package/src/core/layerAddInitHook.js +12 -12
- package/src/core/layerMergeOptions.js +14 -14
- package/src/core/markerInitInteraction.js +10 -10
- package/src/core/markerSetIcon.js +14 -14
- package/src/core/markerSetRotation.js +19 -19
- package/src/core/projectNativePath.js +30 -30
- package/src/core/redrawPath.js +11 -11
- package/src/core/removeLayer.js +26 -26
- package/src/core/setRotation.js +12 -12
- package/src/core/whenReady.js +14 -14
- package/src/geometry/addBridges.js +36 -36
- package/src/geometry/addGeneratedTriangle.js +10 -10
- package/src/geometry/appendAreaTriangle.js +32 -32
- package/src/geometry/appendNativeTriangle.js +17 -17
- package/src/geometry/appendRouteDash.js +33 -33
- package/src/geometry/appendRouteSegment.js +28 -28
- package/src/geometry/assembleAreaGeometry.js +48 -48
- package/src/geometry/bridgeEdge.js +18 -18
- package/src/geometry/bridgeFaces.js +22 -22
- package/src/geometry/bridgePaths.js +19 -19
- package/src/geometry/bridgePolygon.js +37 -37
- package/src/geometry/bridgeSides.js +18 -18
- package/src/geometry/buildProjectedPoint.js +32 -32
- package/src/geometry/buildProjectedPolygon.js +34 -34
- package/src/geometry/circleAt.js +20 -20
- package/src/geometry/circleGeometry.js +41 -41
- package/src/geometry/createModelGeometry.js +44 -44
- package/src/geometry/crossVector.js +15 -15
- package/src/geometry/dashValues.js +23 -23
- package/src/geometry/dashedSegment.js +33 -33
- package/src/geometry/diskAt.js +18 -18
- package/src/geometry/emitter.js +18 -18
- package/src/geometry/fillNativePolygon.js +28 -28
- package/src/geometry/generateTreeGeometry.js +18 -18
- package/src/geometry/indexBridge.js +36 -36
- package/src/geometry/instanceAreaGeometry.js +37 -37
- package/src/geometry/line.js +28 -28
- package/src/geometry/lineJoin.js +35 -35
- package/src/geometry/markerImageBounds.js +20 -20
- package/src/geometry/meshShadowBounds.js +33 -33
- package/src/geometry/offsetBelowGround.js +10 -10
- package/src/geometry/quad.js +23 -23
- package/src/geometry/restoreGeometry.js +29 -29
- package/src/geometry/roofCoverage.js +33 -33
- package/src/geometry/roofFootprint.js +40 -40
- package/src/geometry/samePoint.js +11 -11
- package/src/geometry/segment.js +32 -32
- package/src/geometry/subtractRoofTile.js +28 -28
- package/src/geometry/terrainBuffers.js +36 -36
- package/src/geometry/terrainTileGeometry.js +28 -28
- package/src/geometry/validateTree.js +19 -19
- package/src/globals/L.js +6 -6
- package/src/globals/cameraFov.js +8 -8
- package/src/globals/cogTags.js +6 -6
- package/src/globals/colorTexture.js +11 -11
- package/src/globals/cosObliquity.js +8 -8
- package/src/globals/degrees.js +6 -6
- package/src/globals/earthCirc.js +6 -6
- package/src/globals/geometryWorkerUrl.js +8 -8
- package/src/globals/halfRadians.js +6 -6
- package/src/globals/lampDirections.js +13 -13
- package/src/globals/layerControlAddItem.js +8 -8
- package/src/globals/leafletLayer.js +8 -8
- package/src/globals/lightScale.js +6 -6
- package/src/globals/mvtTextDecoder.js +6 -6
- package/src/globals/nativeScalableStyleKeys.js +6 -6
- package/src/globals/sinObliquity.js +8 -8
- package/src/globals/tau.js +6 -6
- package/src/globals/vectorStyleNamedColors.js +13 -13
- package/src/globals/vectorTileEvents.js +6 -6
- package/src/globals/workerCogSource.js +6 -6
- package/src/gpu/initializeRendererResources.js +39 -39
- package/src/gpu/initializeSharedRenderer.js +59 -59
- package/src/gpu/mountRenderer.js +25 -25
- package/src/layer-controls/layerControlInputId.js +18 -18
- package/src/layer-controls/layerCountTitle.js +16 -16
- package/src/layer-controls/placeEntryElement.js +29 -29
- package/src/layer-controls/renderLayerCount.js +28 -28
- package/src/lighting/visitLightCells.js +26 -26
- package/src/lighting/writeLightCell.js +14 -14
- package/src/materials/createProgramLayout.js +44 -44
- package/src/materials/createProgramUniforms.js +25 -25
- package/src/materials/modelMaterialFor.js +29 -29
- package/src/materials/prepareMeshCutout.js +21 -21
- package/src/materials/terrainRasterProgram.js +65 -65
- package/src/materials/validateRoofMaterial.js +17 -17
- package/src/models/applyModelTransform.js +18 -18
- package/src/models/buildModelNodes.js +24 -24
- package/src/models/createModelContext.js +24 -24
- package/src/models/loadBuffer.js +16 -16
- package/src/models/loadModelResources.js +22 -22
- package/src/models/normalizeAccessor.js +21 -21
- package/src/models/prepareModel.js +29 -29
- package/src/models/prepareModelGeometry.js +35 -35
- package/src/models/prepareModelPrimitive.js +25 -25
- package/src/models/readAccessorValue.js +16 -16
- package/src/models/readModelAttributes.js +32 -32
- package/src/models/readModelIndices.js +28 -28
- package/src/models/readSparseAccessor.js +31 -31
- package/src/models/releaseModelResources.js +15 -15
- package/src/mvt/addMvtCrossings.js +23 -23
- package/src/mvt/appendMvtBandTriangles.js +42 -42
- package/src/mvt/appendMvtCoordinates.js +20 -20
- package/src/mvt/appendMvtPolygonTriangles.js +29 -29
- package/src/mvt/beginMvtPath.js +19 -19
- package/src/mvt/closeMvtPath.js +16 -16
- package/src/mvt/collectMvtEdges.js +29 -29
- package/src/mvt/createMvtReader.js +14 -14
- package/src/mvt/decodeVectorTile.js +39 -39
- package/src/mvt/expectMvtWire.js +11 -11
- package/src/mvt/finishMvtPath.js +14 -14
- package/src/mvt/finiteMvtCoordinate.js +14 -14
- package/src/mvt/groupMvtPolygons.js +35 -35
- package/src/mvt/isMvtFallbackError.js +13 -13
- package/src/mvt/mergeMvtActiveEdges.js +18 -18
- package/src/mvt/mvtEdgeX.js +12 -12
- package/src/mvt/mvtPathsVertices.js +15 -15
- package/src/mvt/mvtPolygonPaths.js +19 -19
- package/src/mvt/numericMvtValue.js +11 -11
- package/src/mvt/readMvtFeature.js +46 -46
- package/src/mvt/readMvtField.js +17 -17
- package/src/mvt/readMvtGeometry.js +42 -42
- package/src/mvt/readMvtInteger.js +22 -22
- package/src/mvt/readMvtKnownValue.js +30 -30
- package/src/mvt/readMvtLayer.js +40 -40
- package/src/mvt/readMvtMessage.js +18 -18
- package/src/mvt/readMvtNumber.js +18 -18
- package/src/mvt/readMvtNumbers.js +18 -18
- package/src/mvt/readMvtString.js +14 -14
- package/src/mvt/readMvtValue.js +29 -29
- package/src/mvt/skipMvtField.js +22 -22
- package/src/mvt/sortMvtActiveEdges.js +20 -20
- package/src/mvt/sortedMvtLevels.js +29 -29
- package/src/mvt/takeMvtBytes.js +18 -18
- package/src/mvt/tessellateVectorRings.js +26 -26
- package/src/mvt/triangulateVectorRings.js +23 -23
- package/src/native/beforeNativeRender.js +21 -21
- package/src/native/bypassNativeEvent.js +21 -21
- package/src/native/canScaleNativeStyle.js +26 -26
- package/src/native/compareNativeHits.js +10 -10
- package/src/native/createNativeMesh.js +46 -46
- package/src/native/forwardNativeError.js +8 -8
- package/src/native/getGridTerrainTile.js +47 -47
- package/src/native/gridTerrainElevation.js +34 -34
- package/src/native/isCurrentNativeLayer.js +11 -11
- package/src/native/loadGridTerrain.js +36 -36
- package/src/native/nativeEventSource.js +27 -27
- package/src/native/nativeProgram.js +28 -28
- package/src/native/nativeTerrainElevation.js +27 -27
- package/src/native/nativeVectorGeometry.js +30 -30
- package/src/native/orderNativeGridLayer.js +20 -20
- package/src/native/prepareGridTerrainRequests.js +23 -23
- package/src/native/pruneNativeResources.js +25 -25
- package/src/native/readyNativeGPU.js +13 -13
- package/src/native/rejectNativeReady.js +2 -2
- package/src/native/removeNativeEvents.js +20 -20
- package/src/native/resolveNativeReady.js +2 -2
- package/src/native/restoreNativeEvents.js +8 -8
- package/src/native/retainGridTerrain.js +15 -15
- package/src/native/styleNativeMesh.js +20 -20
- package/src/native/syncGridTile.js +28 -28
- package/src/native/syncImageOverlay.js +13 -13
- package/src/native/syncNativeStrokeAnchors.js +18 -18
- package/src/native/syncNativeStrokeZoom.js +34 -34
- package/src/native/syncTerrainGridTile.js +38 -38
- package/src/native/terrainGridMesh.js +47 -47
- package/src/native/updateNativeHover.js +15 -15
- package/src/native/updateNativeStrokeRadius.js +14 -14
- package/src/picking/hitColliderCell.js +29 -29
- package/src/picking/validateCameraInverse.js +15 -15
- package/src/projections/displayContainerPoint.js +32 -32
- package/src/projections/projectBridgePoint.js +17 -17
- package/src/projections/toPoint.js +13 -13
- package/src/projections/transformZoomAnimationPoint.js +8 -8
- package/src/projections/verticalGroundY.js +14 -14
- package/src/raster/rasterTileRange.js +32 -32
- package/src/raster/retainRasterTiles.js +21 -21
- package/src/rendering/collectVisibleMesh.js +48 -48
- package/src/rendering/compareMeshDepth.js +14 -14
- package/src/rendering/drawPipeline.js +44 -44
- package/src/rendering/nativeStrokeExpansion.js +11 -11
- package/src/rendering/prepareFrameBuffer.js +24 -24
- package/src/rendering/prepareMeshUniforms.js +36 -36
- package/src/rendering/revealRoofMesh.js +43 -43
- package/src/scene/addSceneLayer.js +24 -24
- package/src/scene/callLayer.js +34 -34
- package/src/scene/createLayer.js +13 -13
- package/src/scene/getLocation.js +12 -12
- package/src/scene/isNativeLayer.js +19 -19
- package/src/scene/removeSceneLayer.js +22 -22
- package/src/scene/reportLayerError.js +9 -9
- package/src/shaders/materialBaseShader.js +26 -26
- package/src/shaders/materialSurfaceShader.js +60 -60
- package/src/shaders/materialVertexShader.js +89 -89
- package/src/shaders/nativeStrokeShader.js +13 -13
- package/src/shaders/roofVertexShader.js +16 -16
- package/src/shadows/shadowMeshMatches.js +19 -19
- package/src/sources/buildAreaFeatures.js +23 -23
- package/src/sources/extrusionStyle.js +21 -21
- package/src/sources/featureAnchor.js +21 -21
- package/src/sources/groundOffset.js +9 -9
- package/src/sources/initVectorTiles.js +21 -21
- package/src/sources/isVectorTileSource.js +11 -11
- package/src/sources/matchesAreaTile.js +17 -17
- package/src/sources/pendingSourceAreas.js +28 -28
- package/src/sources/prepareAreaGeometryJob.js +34 -34
- package/src/sources/projectAreaPolygons.js +25 -25
- package/src/sources/readyVectorTiles.js +17 -17
- package/src/sunlight/addTimeControlToMap.js +18 -18
- package/src/sunlight/addTimeLayer.js +12 -12
- package/src/sunlight/initializeTimeControl.js +18 -18
- package/src/sunlight/onAddSun.js +37 -37
- package/src/sunlight/onAddTimeControl.js +12 -12
- package/src/sunlight/onRemoveSun.js +10 -10
- package/src/sunlight/removeSun.js +25 -25
- package/src/sunlight/removeTimeControl.js +14 -14
- package/src/sunlight/removeTimeLayer.js +11 -11
- package/src/sunlight/requestSunlightRender.js +12 -12
- package/src/sunlight/styleTimeControl.js +13 -13
- package/src/sunlight/tickSun.js +10 -10
- package/src/sunlight/updateCelestialDisc.js +23 -23
- package/src/sunlight/updateSun.js +44 -44
- package/src/sunlight/useLiveTime.js +11 -11
- package/src/sunlight/useSelectedTime.js +26 -26
- package/src/terrain/applyTerrain.js +30 -30
- package/src/terrain/copyTerrainTile.js +20 -20
- package/src/terrain/loadReadyTerrain.js +6 -6
- package/src/terrain/mapElevationOf.js +19 -19
- package/src/terrain/readBridges.js +13 -13
- package/src/terrain/readyTerrainOf.js +14 -14
- package/src/terrain/sampleTerrainTile.js +16 -16
- package/src/terrain/terrainTileQueue.js +34 -34
- package/src/textures/addImageState.js +13 -13
- package/src/textures/bindMeshTextures.js +57 -57
- package/src/textures/collectRoofTiles.js +23 -23
- package/src/textures/loadModelImage.js +29 -29
- package/src/textures/modelTextureFor.js +47 -47
- package/src/textures/prepareMeshTextures.js +31 -31
- package/src/textures/removeImageState.js +13 -13
- package/src/textures/resizeRoofTexture.js +32 -32
- package/src/textures/restoreMaterialTextures.js +22 -22
- package/src/textures/updateRoofAtlas.js +29 -29
- package/src/textures/uploadMeshTexture.js +32 -32
- package/src/textures/uploadNativeImage.js +26 -26
- package/src/textures/uploadRoofTile.js +29 -29
- package/src/traffic/createTrafficMesh.js +17 -17
- package/src/traffic/disposeTrafficObject.js +19 -19
- package/src/traffic/failTraffic.js +12 -12
- package/src/traffic/failedTrafficLoad.js +10 -10
- package/src/traffic/fetchTrafficLanes.js +21 -21
- package/src/traffic/loadedTrafficLanes.js +21 -21
- package/src/traffic/locateTraffic.js +20 -20
- package/src/traffic/moveTraffic.js +21 -21
- package/src/traffic/readyTraffic.js +10 -10
- package/src/traffic/refreshTrafficTrips.js +42 -42
- package/src/traffic/routeColor.js +13 -13
- package/src/traffic/startTraffic.js +12 -12
- package/src/traffic/trafficNow.js +15 -15
- package/src/traffic/trafficStatusText.js +13 -13
- package/src/traffic/trafficStorage.js +13 -13
- package/src/traffic/updateTraffic.js +13 -13
- package/src/traffic/updateTrafficLights.js +23 -23
- package/src/traffic/updateTrafficPose.js +15 -15
- package/src/traffic/updateTrafficTerrain.js +15 -15
- package/src/traffic/uploadTrafficLanes.js +27 -27
- package/src/transforms/composeLocalTransform.js +23 -23
- package/src/transforms/transformNativePoint.js +19 -19
- package/src/transforms/worldMatrixChanged.js +26 -26
- package/src/triangulation/clipEars.js +32 -32
- package/src/triangulation/connectHole.js +30 -30
- package/src/triangulation/cross.js +12 -12
- package/src/triangulation/equal.js +11 -11
- package/src/triangulation/intersects.js +21 -21
- package/src/triangulation/mergeHoles.js +19 -19
- package/src/triangulation/on.js +13 -13
- package/src/triangulation/polygonRings.js +22 -22
- package/src/triangulation/validateArea.js +19 -19
- package/src/utils/compareDistance.js +11 -11
- package/src/utils/yieldTask.js +12 -12
- package/src/vector-style/appendQuotedStyleCharacter.js +30 -30
- package/src/vector-style/arrayContainsRange.js +18 -18
- package/src/vector-style/evaluateBoolean.js +31 -31
- package/src/vector-style/evaluateCoalesceOrCase.js +34 -34
- package/src/vector-style/evaluateComparison.js +29 -29
- package/src/vector-style/evaluateIExpression.js +21 -21
- package/src/vector-style/evaluateInput.js +16 -16
- package/src/vector-style/evaluateInterpolate.js +36 -36
- package/src/vector-style/evaluateMatch.js +21 -21
- package/src/vector-style/evaluateMath.js +26 -26
- package/src/vector-style/evaluateMembership.js +29 -29
- package/src/vector-style/evaluateNegation.js +26 -26
- package/src/vector-style/evaluatePrimitive.js +21 -21
- package/src/vector-style/evaluateStep.js +20 -20
- package/src/vector-style/evaluateStyle.js +43 -43
- package/src/vector-style/evaluateToExpression.js +27 -27
- package/src/vector-style/fillVectorPaint.js +26 -26
- package/src/vector-style/lineVectorPaint.js +31 -31
- package/src/vector-style/parseFunctionalColor.js +23 -23
- package/src/vector-style/parseHexColor.js +20 -20
- package/src/vector-style/parseVectorStyle.js +20 -20
- package/src/vector-style/readPaintValue.js +17 -17
- package/src/vector-style/removeTrailingCommas.js +19 -19
- package/src/vector-style/scaleDashArray.js +25 -25
- package/src/vector-style/skipStyleComment.js +20 -20
- package/src/vector-style/stripStyleComments.js +28 -28
- package/src/vector-style/styleColor.js +18 -18
- package/src/vector-style/validateVectorLayers.js +18 -18
- package/src/vector-style/vectorPaint.js +17 -17
- package/src/vector-style/visibleStyle.js +16 -16
- package/src/vector-tiles/appendVectorBatch.js +34 -34
- package/src/vector-tiles/attachVectorTileBatch.js +25 -25
- package/src/vector-tiles/attachVectorTileBatches.js +26 -26
- package/src/vector-tiles/compareVectorLabelPriority.js +11 -11
- package/src/vector-tiles/compareVectorTileDistance.js +11 -11
- package/src/vector-tiles/createVectorLabel.js +37 -37
- package/src/vector-tiles/forwardVectorTileError.js +10 -10
- package/src/vector-tiles/loadVectorSprite.js +14 -14
- package/src/vector-tiles/loadVectorTile.js +45 -45
- package/src/vector-tiles/onVectorTileAdd.js +44 -44
- package/src/vector-tiles/onVectorTileMessage.js +15 -15
- package/src/vector-tiles/onVectorTileRemove.js +25 -25
- package/src/vector-tiles/onVectorTileWorkerError.js +16 -16
- package/src/vector-tiles/paintVectorTileBatch.js +18 -18
- package/src/vector-tiles/prepareVectorLabel.js +34 -34
- package/src/vector-tiles/prepareVectorStyleLayer.js +38 -38
- package/src/vector-tiles/prepareVectorTile.js +29 -29
- package/src/vector-tiles/projectVectorPaths.js +25 -25
- package/src/vector-tiles/projectVectorPoint.js +15 -15
- package/src/vector-tiles/projectVectorTriangles.js +28 -28
- package/src/vector-tiles/pruneVectorTiles.js +14 -14
- package/src/vector-tiles/pumpVectorTiles.js +21 -21
- package/src/vector-tiles/readTileJSON.js +27 -27
- package/src/vector-tiles/readVectorStyle.js +28 -28
- package/src/vector-tiles/refreshVectorTiles.js +8 -8
- package/src/vector-tiles/reserveVectorLabelCells.js +14 -14
- package/src/vector-tiles/retireVectorTileGroup.js +20 -20
- package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -14
- package/src/vector-tiles/rotateVectorLabel.js +19 -19
- package/src/vector-tiles/rotateVectorLabels.js +9 -9
- package/src/vector-tiles/simplifyVectorPath.js +29 -29
- package/src/vector-tiles/updateVectorLabelMarker.js +36 -36
- package/src/vector-tiles/updateVectorLabelStyle.js +14 -14
- package/src/vector-tiles/updateVectorTileLabels.js +33 -33
- package/src/vector-tiles/updateVectorTilePaint.js +25 -25
- package/src/vector-tiles/updateVectorTiles.js +32 -32
- package/src/vector-tiles/validateVectorTileZooms.js +15 -15
- package/src/vector-tiles/vectorFeaturePaint.js +25 -25
- package/src/vector-tiles/vectorFeaturePaths.js +26 -26
- package/src/vector-tiles/vectorFeatureZoom.js +18 -18
- package/src/vector-tiles/vectorLabelAnchors.js +31 -31
- package/src/vector-tiles/vectorLabelCandidates.js +18 -18
- package/src/vector-tiles/vectorLabelCells.js +32 -32
- package/src/vector-tiles/vectorLabelIcon.js +38 -38
- package/src/vector-tiles/vectorLabelProperty.js +12 -12
- package/src/vector-tiles/vectorLabelText.js +19 -19
- package/src/vector-tiles/vectorSpriteIcon.js +19 -19
- package/src/vector-tiles/vectorStraightRun.js +23 -23
- package/src/vector-tiles/vectorStyleDependencies.js +22 -22
- package/src/vector-tiles/vectorStyleValue.js +16 -16
- package/src/vector-tiles/vectorStyleZoom.js +12 -12
- package/src/vector-tiles/vectorTileAwaited.js +17 -17
- package/src/vector-tiles/vectorTileOverlaps.js +12 -12
- package/src/vector-tiles/vectorTilePaint.js +18 -18
- package/src/vector-tiles/vectorTileSettings.js +27 -27
- package/src/vector-tiles/vectorTilesIdle.js +11 -11
- package/src/vector-tiles/vectorTolerance.js +11 -11
- package/src/vector-tiles/wrapVectorLabel.js +17 -17
- package/src/vehicles/boatModel.js +35 -35
- package/src/vehicles/busModel.js +13 -13
- package/src/vehicles/carModel.js +39 -39
- package/src/walk/initializeWalkControl.js +12 -12
- package/src/walk/isWalkBlocked.js +15 -15
- package/src/walk/landWalker.js +41 -41
- package/src/walk/moveWalker.js +37 -37
- package/src/walk/onAddWalkControl.js +40 -40
- package/src/walk/onRemoveWalkControl.js +17 -17
- package/src/walk/onWalkBlur.js +3 -3
- package/src/walk/onWalkTerrain.js +3 -3
- package/src/walk/resolveWalkerPosition.js +33 -33
- package/src/walk/stepWalkerHeight.js +18 -18
- package/src/walk/toggleWalking.js +4 -4
- package/src/walk/updateWalkerFrame.js +29 -29
- package/src/walk/updateWalkerView.js +31 -31
- package/src/weakmaps/cameraHandlersByMap.js +6 -6
- package/src/weakmaps/geometryWorkersByMap.js +6 -6
- package/src/weakmaps/nativeProgramsByRenderer.js +6 -6
- package/src/weakmaps/pathProjectionByMap.js +6 -6
- package/src/weakmaps/streamTerrainByLayer.js +6 -6
- package/src/weakmaps/streamTerrainByMap.js +6 -6
- package/src/weakmaps/sunByMap.js +6 -6
- package/src/weakmaps/vectorTileOptionsByLayer.js +6 -6
- package/src/weakmaps/vectorWorkerByLayer.js +6 -6
- package/src/weakmaps/walkByMap.js +6 -6
- package/src/weakmaps/workerMapByLayer.js +6 -6
- package/src/workers/acquireGeometryWorker.js +39 -39
- package/src/workers/buildAreaInWorker.js +24 -24
- package/src/workers/closeGeometryWorkers.js +16 -16
- package/src/workers/cogWorker.js +27 -27
- package/src/workers/createGeometryWorker.js +30 -30
- package/src/workers/geometryWorker.js +34 -34
- package/src/workers/getCogInWorker.js +18 -18
- package/src/workers/modelWorker.js +17 -17
- package/src/workers/openCogInWorker.js +22 -22
- package/src/workers/runSourceWorker.js +44 -44
- package/src/workers/settleGeometryWorker.js +16 -16
- package/src/workers/startGeometryWorker.js +23 -23
- package/src/workers/vectorTileWorker.js +15 -15
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { streamTerrainByMap } from '../weakmaps/streamTerrainByMap.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Track the current terrain stream and discard requests for removed grid tiles.
|
|
5
|
-
*
|
|
6
|
-
* @param {Object} state Native grid layer state.
|
|
7
|
-
*
|
|
8
|
-
* @returns {Object|undefined} Current terrain stream.
|
|
9
|
-
*/
|
|
10
|
-
export function prepareGridTerrainRequests(state) {
|
|
11
|
-
const stream = streamTerrainByMap.get(state.map);
|
|
12
|
-
if (state.terrainStream !== stream) {
|
|
13
|
-
state.terrainStream = stream;
|
|
14
|
-
state.terrainRequests = stream ? /* alloc */ new Map() : null;
|
|
15
|
-
}
|
|
16
|
-
if (state.terrainRequests) {
|
|
17
|
-
let key;
|
|
18
|
-
for (key of state.terrainRequests.keys()) {
|
|
19
|
-
if (!state.source._tiles[key]) state.terrainRequests.delete(key);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return stream;
|
|
23
|
-
}
|
|
1
|
+
import { streamTerrainByMap } from '../weakmaps/streamTerrainByMap.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Track the current terrain stream and discard requests for removed grid tiles.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} state Native grid layer state.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Object|undefined} Current terrain stream.
|
|
9
|
+
*/
|
|
10
|
+
export function prepareGridTerrainRequests(state) {
|
|
11
|
+
const stream = streamTerrainByMap.get(state.map);
|
|
12
|
+
if (state.terrainStream !== stream) {
|
|
13
|
+
state.terrainStream = stream;
|
|
14
|
+
state.terrainRequests = stream ? /* alloc */ new Map() : null;
|
|
15
|
+
}
|
|
16
|
+
if (state.terrainRequests) {
|
|
17
|
+
let key;
|
|
18
|
+
for (key of state.terrainRequests.keys()) {
|
|
19
|
+
if (!state.source._tiles[key]) state.terrainRequests.delete(key);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return stream;
|
|
23
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { disposeMesh } from '../rendering/disposeMesh.js';
|
|
2
|
-
import { destroyTexture } from '../textures/destroyTexture.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Dispose meshes and textures not used by the latest native layer update.
|
|
6
|
-
*
|
|
7
|
-
* @param {Object} state Native layer state.
|
|
8
|
-
*/
|
|
9
|
-
export function pruneNativeResources(state) {
|
|
10
|
-
const { meshes, textures, backend: layer } = state;
|
|
11
|
-
let mesh, texture, key;
|
|
12
|
-
for ([key, mesh] of meshes) {
|
|
13
|
-
if (mesh._nativeUsed) continue;
|
|
14
|
-
disposeMesh(layer, mesh);
|
|
15
|
-
meshes.delete(key);
|
|
16
|
-
texture = textures.get(key);
|
|
17
|
-
if (texture) destroyTexture(layer, texture.texture);
|
|
18
|
-
textures.delete(key);
|
|
19
|
-
}
|
|
20
|
-
for ([key, texture] of textures) {
|
|
21
|
-
if (texture.used) continue;
|
|
22
|
-
destroyTexture(layer, texture.texture);
|
|
23
|
-
textures.delete(key);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
import { disposeMesh } from '../rendering/disposeMesh.js';
|
|
2
|
+
import { destroyTexture } from '../textures/destroyTexture.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Dispose meshes and textures not used by the latest native layer update.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} state Native layer state.
|
|
8
|
+
*/
|
|
9
|
+
export function pruneNativeResources(state) {
|
|
10
|
+
const { meshes, textures, backend: layer } = state;
|
|
11
|
+
let mesh, texture, key;
|
|
12
|
+
for ([key, mesh] of meshes) {
|
|
13
|
+
if (mesh._nativeUsed) continue;
|
|
14
|
+
disposeMesh(layer, mesh);
|
|
15
|
+
meshes.delete(key);
|
|
16
|
+
texture = textures.get(key);
|
|
17
|
+
if (texture) destroyTexture(layer, texture.texture);
|
|
18
|
+
textures.delete(key);
|
|
19
|
+
}
|
|
20
|
+
for ([key, texture] of textures) {
|
|
21
|
+
if (texture.used) continue;
|
|
22
|
+
destroyTexture(layer, texture.texture);
|
|
23
|
+
textures.delete(key);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';
|
|
2
|
-
import { nativeLayer } from './nativeLayer.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Start native rendering only if the layer state is still current.
|
|
6
|
-
*
|
|
7
|
-
* @param {Object} state Native layer state.
|
|
8
|
-
*
|
|
9
|
-
* @returns {Object|Promise<Object>} The source layer or its initialization promise.
|
|
10
|
-
*/
|
|
11
|
-
export function readyNativeGPU(state) {
|
|
12
|
-
if (nativeGPUByLayer.get(state.source) !== state) return state.source;
|
|
13
|
-
return nativeLayer(state);
|
|
1
|
+
import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';
|
|
2
|
+
import { nativeLayer } from './nativeLayer.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Start native rendering only if the layer state is still current.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} state Native layer state.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Object|Promise<Object>} The source layer or its initialization promise.
|
|
10
|
+
*/
|
|
11
|
+
export function readyNativeGPU(state) {
|
|
12
|
+
if (nativeGPUByLayer.get(state.source) !== state) return state.source;
|
|
13
|
+
return nativeLayer(state);
|
|
14
14
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { nativeEventMaps } from '../weakmaps/nativeEventMaps.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Unregister native layer event handling and restore map handling when unused.
|
|
5
|
-
*
|
|
6
|
-
* @param {Object} state Native layer state.
|
|
7
|
-
*/
|
|
8
|
-
export function removeNativeEvents(state) {
|
|
9
|
-
const context = state._nativeEventContext;
|
|
10
|
-
if (!context) return;
|
|
11
|
-
const { map } = context;
|
|
12
|
-
context.states.delete(state);
|
|
13
|
-
if (context.hovered === state.source) {
|
|
14
|
-
context.hovered = null;
|
|
15
|
-
map.getContainer().style.cursor = '';
|
|
16
|
-
}
|
|
17
|
-
state._nativeEventContext = null;
|
|
18
|
-
if (context.states.size) return;
|
|
19
|
-
context.restore();
|
|
20
|
-
nativeEventMaps.delete(map);
|
|
1
|
+
import { nativeEventMaps } from '../weakmaps/nativeEventMaps.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Unregister native layer event handling and restore map handling when unused.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} state Native layer state.
|
|
7
|
+
*/
|
|
8
|
+
export function removeNativeEvents(state) {
|
|
9
|
+
const context = state._nativeEventContext;
|
|
10
|
+
if (!context) return;
|
|
11
|
+
const { map } = context;
|
|
12
|
+
context.states.delete(state);
|
|
13
|
+
if (context.hovered === state.source) {
|
|
14
|
+
context.hovered = null;
|
|
15
|
+
map.getContainer().style.cursor = '';
|
|
16
|
+
}
|
|
17
|
+
state._nativeEventContext = null;
|
|
18
|
+
if (context.states.size) return;
|
|
19
|
+
context.restore();
|
|
20
|
+
nativeEventMaps.delete(map);
|
|
21
21
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Restore the map's original DOM event dispatcher if the native handler is still installed.
|
|
3
|
-
*/
|
|
4
|
-
export function restoreNativeEvents() {
|
|
5
|
-
const { map, descriptor, handle } = this;
|
|
6
|
-
if (map._fireDOMEvent !== handle) return;
|
|
7
|
-
if (descriptor) Object.defineProperty(map, '_fireDOMEvent', descriptor);
|
|
8
|
-
else delete map._fireDOMEvent;
|
|
1
|
+
/**
|
|
2
|
+
* Restore the map's original DOM event dispatcher if the native handler is still installed.
|
|
3
|
+
*/
|
|
4
|
+
export function restoreNativeEvents() {
|
|
5
|
+
const { map, descriptor, handle } = this;
|
|
6
|
+
if (map._fireDOMEvent !== handle) return;
|
|
7
|
+
if (descriptor) Object.defineProperty(map, '_fireDOMEvent', descriptor);
|
|
8
|
+
else delete map._fireDOMEvent;
|
|
9
9
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Retain terrain meshes and textures while replacement grid tiles are pending.
|
|
3
|
-
*
|
|
4
|
-
* @param {Object} state Native grid layer state.
|
|
5
|
-
*/
|
|
6
|
-
export function retainGridTerrain(state) {
|
|
7
|
-
let key, mesh, retained;
|
|
8
|
-
for ([key, mesh] of state.meshes) {
|
|
9
|
-
if (state.source._tiles[key] || !mesh._terrainRequest) continue;
|
|
10
|
-
retained = state.textures.get(key);
|
|
11
|
-
if (!retained) continue;
|
|
12
|
-
retained.used = true;
|
|
13
|
-
mesh._nativeUsed = true;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Retain terrain meshes and textures while replacement grid tiles are pending.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} state Native grid layer state.
|
|
5
|
+
*/
|
|
6
|
+
export function retainGridTerrain(state) {
|
|
7
|
+
let key, mesh, retained;
|
|
8
|
+
for ([key, mesh] of state.meshes) {
|
|
9
|
+
if (state.source._tiles[key] || !mesh._terrainRequest) continue;
|
|
10
|
+
retained = state.textures.get(key);
|
|
11
|
+
if (!retained) continue;
|
|
12
|
+
retained.used = true;
|
|
13
|
+
mesh._nativeUsed = true;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { cameraZIndexOffsetByLayer } from '../weakmaps/cameraZIndexOffsetByLayer.js';
|
|
2
|
-
import { L } from '../globals/L.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Apply color, opacity, ordering and source metadata to a native mesh.
|
|
6
|
-
*
|
|
7
|
-
* @param {Object} state Native layer state.
|
|
8
|
-
* @param {Object} mesh Mesh to update.
|
|
9
|
-
* @param {number|Array} color Material color.
|
|
10
|
-
* @param {number} opacity Material opacity.
|
|
11
|
-
*/
|
|
12
|
-
export function styleNativeMesh(state, mesh, color, opacity) {
|
|
13
|
-
const { source, marker, paneOrder, order } = state;
|
|
14
|
-
mesh.program.uniforms.baseColor.value = color;
|
|
15
|
-
mesh.program.uniforms.opacity.value = opacity;
|
|
16
|
-
if (source instanceof L.GridLayer) mesh.opacity = opacity;
|
|
17
|
-
const zIndex = marker ? source._zIndex + (cameraZIndexOffsetByLayer.get(source) || 0) : source.options.zIndex;
|
|
18
|
-
mesh.renderOrder = paneOrder * 1e6 + (zIndex || 0) * 1000 + order;
|
|
19
|
-
mesh._nativeSource = source;
|
|
20
|
-
mesh._nativeUsed = true;
|
|
1
|
+
import { cameraZIndexOffsetByLayer } from '../weakmaps/cameraZIndexOffsetByLayer.js';
|
|
2
|
+
import { L } from '../globals/L.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Apply color, opacity, ordering and source metadata to a native mesh.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} state Native layer state.
|
|
8
|
+
* @param {Object} mesh Mesh to update.
|
|
9
|
+
* @param {number|Array} color Material color.
|
|
10
|
+
* @param {number} opacity Material opacity.
|
|
11
|
+
*/
|
|
12
|
+
export function styleNativeMesh(state, mesh, color, opacity) {
|
|
13
|
+
const { source, marker, paneOrder, order } = state;
|
|
14
|
+
mesh.program.uniforms.baseColor.value = color;
|
|
15
|
+
mesh.program.uniforms.opacity.value = opacity;
|
|
16
|
+
if (source instanceof L.GridLayer) mesh.opacity = opacity;
|
|
17
|
+
const zIndex = marker ? source._zIndex + (cameraZIndexOffsetByLayer.get(source) || 0) : source.options.zIndex;
|
|
18
|
+
mesh.renderOrder = paneOrder * 1e6 + (zIndex || 0) * 1000 + order;
|
|
19
|
+
mesh._nativeSource = source;
|
|
20
|
+
mesh._nativeUsed = true;
|
|
21
21
|
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { L } from '../globals/L.js';
|
|
2
|
-
import { coreWhite } from '../globals/coreWhite.js';
|
|
3
|
-
import { styleNativeMesh } from './styleNativeMesh.js';
|
|
4
|
-
import { quadNativeMesh } from './quadNativeMesh.js';
|
|
5
|
-
import { boundsQuad } from '../geometry/boundsQuad.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Reuse or rebuild the textured mesh for a loaded grid tile.
|
|
9
|
-
*
|
|
10
|
-
* @param {Object} state Native grid layer state.
|
|
11
|
-
* @param {string} key Tile key.
|
|
12
|
-
* @param {Object} tile Loaded tile.
|
|
13
|
-
* @param {number} opacity Tile opacity.
|
|
14
|
-
*
|
|
15
|
-
* @returns {Object|undefined} Tile mesh, if available.
|
|
16
|
-
*/
|
|
17
|
-
export function syncGridTile(state, key, tile, opacity) {
|
|
18
|
-
const retained = state.textures.get(key), mesh = state.meshes.get(key);
|
|
19
|
-
if (mesh && !mesh._terrainRequest && retained?.image === tile.el &&
|
|
20
|
-
retained.url === (tile.el.currentSrc || tile.el.src)) {
|
|
21
|
-
retained.used = true;
|
|
22
|
-
styleNativeMesh(state, mesh, coreWhite, opacity);
|
|
23
|
-
return mesh;
|
|
24
|
-
}
|
|
25
|
-
const [nw, se] = state.source._tileCoordsToNwSe(tile.coords);
|
|
26
|
-
return quadNativeMesh(state, key, tile.el,
|
|
27
|
-
boundsQuad(state, /* alloc */ new L.LatLngBounds(nw, se)), opacity);
|
|
28
|
-
}
|
|
1
|
+
import { L } from '../globals/L.js';
|
|
2
|
+
import { coreWhite } from '../globals/coreWhite.js';
|
|
3
|
+
import { styleNativeMesh } from './styleNativeMesh.js';
|
|
4
|
+
import { quadNativeMesh } from './quadNativeMesh.js';
|
|
5
|
+
import { boundsQuad } from '../geometry/boundsQuad.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Reuse or rebuild the textured mesh for a loaded grid tile.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} state Native grid layer state.
|
|
11
|
+
* @param {string} key Tile key.
|
|
12
|
+
* @param {Object} tile Loaded tile.
|
|
13
|
+
* @param {number} opacity Tile opacity.
|
|
14
|
+
*
|
|
15
|
+
* @returns {Object|undefined} Tile mesh, if available.
|
|
16
|
+
*/
|
|
17
|
+
export function syncGridTile(state, key, tile, opacity) {
|
|
18
|
+
const retained = state.textures.get(key), mesh = state.meshes.get(key);
|
|
19
|
+
if (mesh && !mesh._terrainRequest && retained?.image === tile.el &&
|
|
20
|
+
retained.url === (tile.el.currentSrc || tile.el.src)) {
|
|
21
|
+
retained.used = true;
|
|
22
|
+
styleNativeMesh(state, mesh, coreWhite, opacity);
|
|
23
|
+
return mesh;
|
|
24
|
+
}
|
|
25
|
+
const [nw, se] = state.source._tileCoordsToNwSe(tile.coords);
|
|
26
|
+
return quadNativeMesh(state, key, tile.el,
|
|
27
|
+
boundsQuad(state, /* alloc */ new L.LatLngBounds(nw, se)), opacity);
|
|
28
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { quadNativeMesh } from './quadNativeMesh.js';
|
|
2
|
-
import { boundsQuad } from '../geometry/boundsQuad.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Synchronize a loaded image overlay as a textured quad.
|
|
6
|
-
*
|
|
7
|
-
* @param {Object} state Native layer state.
|
|
8
|
-
*/
|
|
9
|
-
export function syncImageOverlay(state) {
|
|
10
|
-
const { source } = state;
|
|
11
|
-
if (source._image?.complete && source._image.naturalWidth) {
|
|
12
|
-
quadNativeMesh(state, 'image', source._image, boundsQuad(state, source.getBounds()), source.options.opacity ?? 1);
|
|
13
|
-
}
|
|
1
|
+
import { quadNativeMesh } from './quadNativeMesh.js';
|
|
2
|
+
import { boundsQuad } from '../geometry/boundsQuad.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Synchronize a loaded image overlay as a textured quad.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} state Native layer state.
|
|
8
|
+
*/
|
|
9
|
+
export function syncImageOverlay(state) {
|
|
10
|
+
const { source } = state;
|
|
11
|
+
if (source._image?.complete && source._image.naturalWidth) {
|
|
12
|
+
quadNativeMesh(state, 'image', source._image, boundsQuad(state, source.getBounds()), source.options.opacity ?? 1);
|
|
13
|
+
}
|
|
14
14
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Retain stroke coordinates and anchors for subsequent zoom scaling.
|
|
3
|
-
*
|
|
4
|
-
* @param {Object} state Native layer state.
|
|
5
|
-
* @param {Array} stroke Stroke coordinates.
|
|
6
|
-
*/
|
|
7
|
-
export function syncNativeStrokeAnchors(state, stroke) {
|
|
8
|
-
const { source } = state;
|
|
9
|
-
if (state.strokeAnchors?.length === stroke.length && stroke.length) {
|
|
10
|
-
if (source.options.interactive === false) state.strokeCoordinates = stroke;
|
|
11
|
-
else {
|
|
12
|
-
state.strokeCoordinates = /* alloc */ new Float64Array(stroke);
|
|
13
|
-
state.strokeAnchors = /* alloc */ new Float64Array(state.strokeAnchors);
|
|
14
|
-
}
|
|
15
|
-
state.strokeZoom = state.map.getZoom();
|
|
16
|
-
state.strokeWeight = Number(source.options.weight);
|
|
17
|
-
} else state.strokeAnchors = null;
|
|
18
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Retain stroke coordinates and anchors for subsequent zoom scaling.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} state Native layer state.
|
|
5
|
+
* @param {Array} stroke Stroke coordinates.
|
|
6
|
+
*/
|
|
7
|
+
export function syncNativeStrokeAnchors(state, stroke) {
|
|
8
|
+
const { source } = state;
|
|
9
|
+
if (state.strokeAnchors?.length === stroke.length && stroke.length) {
|
|
10
|
+
if (source.options.interactive === false) state.strokeCoordinates = stroke;
|
|
11
|
+
else {
|
|
12
|
+
state.strokeCoordinates = /* alloc */ new Float64Array(stroke);
|
|
13
|
+
state.strokeAnchors = /* alloc */ new Float64Array(state.strokeAnchors);
|
|
14
|
+
}
|
|
15
|
+
state.strokeZoom = state.map.getZoom();
|
|
16
|
+
state.strokeWeight = Number(source.options.weight);
|
|
17
|
+
} else state.strokeAnchors = null;
|
|
18
|
+
}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { styleNativeMesh } from './styleNativeMesh.js';
|
|
2
|
-
import { parseColor } from '../colors/parseColor.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Rescale a native stroke for the current zoom and refresh stroke and fill styles.
|
|
6
|
-
*
|
|
7
|
-
* @param {Object} state Native vector layer state.
|
|
8
|
-
*/
|
|
9
|
-
export function syncNativeStrokeZoom(state) {
|
|
10
|
-
const { source, meshes, strokeCoordinates, strokeAnchors } = state;
|
|
11
|
-
const mesh = meshes.get('stroke');
|
|
12
|
-
let i, r, g, b, fill;
|
|
13
|
-
if (mesh) {
|
|
14
|
-
const factor = 2 ** (state.strokeZoom - state.map.getZoom()) *
|
|
15
|
-
Number(source.options.weight) / state.strokeWeight;
|
|
16
|
-
const attribute = mesh.geometry.attributes.position;
|
|
17
|
-
if (mesh.program.uniforms.strokeScale) {
|
|
18
|
-
mesh.program.uniforms.strokeScale.value = factor;
|
|
19
|
-
} else {
|
|
20
|
-
for (i = 0; i < strokeCoordinates.length; i++) {
|
|
21
|
-
attribute.data[i] = strokeAnchors[i] + (strokeCoordinates[i] - strokeAnchors[i]) * factor;
|
|
22
|
-
}
|
|
23
|
-
attribute.needsUpdate = true;
|
|
24
|
-
mesh.geometry.bounds = null;
|
|
25
|
-
}
|
|
26
|
-
({ r, g, b } = parseColor(source.options.color));
|
|
27
|
-
styleNativeMesh(state, mesh, /* alloc */ [r, g, b], source.options.opacity ?? 1);
|
|
28
|
-
}
|
|
29
|
-
fill = meshes.get('fill');
|
|
30
|
-
if (fill) {
|
|
31
|
-
({ r, g, b } = parseColor(source.options.fillColor || source.options.color));
|
|
32
|
-
styleNativeMesh(state, fill, /* alloc */ [r, g, b], source.options.fillOpacity ?? 1);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
1
|
+
import { styleNativeMesh } from './styleNativeMesh.js';
|
|
2
|
+
import { parseColor } from '../colors/parseColor.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Rescale a native stroke for the current zoom and refresh stroke and fill styles.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} state Native vector layer state.
|
|
8
|
+
*/
|
|
9
|
+
export function syncNativeStrokeZoom(state) {
|
|
10
|
+
const { source, meshes, strokeCoordinates, strokeAnchors } = state;
|
|
11
|
+
const mesh = meshes.get('stroke');
|
|
12
|
+
let i, r, g, b, fill;
|
|
13
|
+
if (mesh) {
|
|
14
|
+
const factor = 2 ** (state.strokeZoom - state.map.getZoom()) *
|
|
15
|
+
Number(source.options.weight) / state.strokeWeight;
|
|
16
|
+
const attribute = mesh.geometry.attributes.position;
|
|
17
|
+
if (mesh.program.uniforms.strokeScale) {
|
|
18
|
+
mesh.program.uniforms.strokeScale.value = factor;
|
|
19
|
+
} else {
|
|
20
|
+
for (i = 0; i < strokeCoordinates.length; i++) {
|
|
21
|
+
attribute.data[i] = strokeAnchors[i] + (strokeCoordinates[i] - strokeAnchors[i]) * factor;
|
|
22
|
+
}
|
|
23
|
+
attribute.needsUpdate = true;
|
|
24
|
+
mesh.geometry.bounds = null;
|
|
25
|
+
}
|
|
26
|
+
({ r, g, b } = parseColor(source.options.color));
|
|
27
|
+
styleNativeMesh(state, mesh, /* alloc */ [r, g, b], source.options.opacity ?? 1);
|
|
28
|
+
}
|
|
29
|
+
fill = meshes.get('fill');
|
|
30
|
+
if (fill) {
|
|
31
|
+
({ r, g, b } = parseColor(source.options.fillColor || source.options.color));
|
|
32
|
+
styleNativeMesh(state, fill, /* alloc */ [r, g, b], source.options.fillOpacity ?? 1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { coreWhite } from '../globals/coreWhite.js';
|
|
2
|
-
import { loadGridTerrain } from './loadGridTerrain.js';
|
|
3
|
-
import { styleNativeMesh } from './styleNativeMesh.js';
|
|
4
|
-
import { terrainGridMesh } from './terrainGridMesh.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Request terrain for a grid tile and reuse or build its draped mesh.
|
|
8
|
-
*
|
|
9
|
-
* @param {Object} state Native grid layer state.
|
|
10
|
-
* @param {string} key Tile key.
|
|
11
|
-
* @param {Object} tile Loaded tile.
|
|
12
|
-
* @param {number} opacity Tile opacity.
|
|
13
|
-
*
|
|
14
|
-
* @returns {Object|null|undefined} Mesh when available, otherwise null or undefined.
|
|
15
|
-
*/
|
|
16
|
-
export function syncTerrainGridTile(state, key, tile, opacity) {
|
|
17
|
-
const retained = state.textures.get(key), mesh = state.meshes.get(key);
|
|
18
|
-
let request = state.terrainRequests.get(key);
|
|
19
|
-
if (!request || request.tile !== tile) {
|
|
20
|
-
request = /* alloc */ { tile, stream: state.terrainStream };
|
|
21
|
-
state.terrainRequests.set(key, request);
|
|
22
|
-
loadGridTerrain(state, key, tile, request);
|
|
23
|
-
}
|
|
24
|
-
if (!request.tiles) {
|
|
25
|
-
if (mesh && retained?.image === tile.el) {
|
|
26
|
-
retained.used = true;
|
|
27
|
-
styleNativeMesh(state, mesh, coreWhite, opacity);
|
|
28
|
-
}
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
if (mesh && mesh._terrainRequest === request && retained?.image === tile.el &&
|
|
32
|
-
retained.url === (tile.el.currentSrc || tile.el.src)) {
|
|
33
|
-
retained.used = true;
|
|
34
|
-
styleNativeMesh(state, mesh, coreWhite, opacity);
|
|
35
|
-
return mesh;
|
|
36
|
-
}
|
|
37
|
-
return terrainGridMesh(state, key, tile, request, opacity);
|
|
38
|
-
}
|
|
1
|
+
import { coreWhite } from '../globals/coreWhite.js';
|
|
2
|
+
import { loadGridTerrain } from './loadGridTerrain.js';
|
|
3
|
+
import { styleNativeMesh } from './styleNativeMesh.js';
|
|
4
|
+
import { terrainGridMesh } from './terrainGridMesh.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Request terrain for a grid tile and reuse or build its draped mesh.
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} state Native grid layer state.
|
|
10
|
+
* @param {string} key Tile key.
|
|
11
|
+
* @param {Object} tile Loaded tile.
|
|
12
|
+
* @param {number} opacity Tile opacity.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Object|null|undefined} Mesh when available, otherwise null or undefined.
|
|
15
|
+
*/
|
|
16
|
+
export function syncTerrainGridTile(state, key, tile, opacity) {
|
|
17
|
+
const retained = state.textures.get(key), mesh = state.meshes.get(key);
|
|
18
|
+
let request = state.terrainRequests.get(key);
|
|
19
|
+
if (!request || request.tile !== tile) {
|
|
20
|
+
request = /* alloc */ { tile, stream: state.terrainStream };
|
|
21
|
+
state.terrainRequests.set(key, request);
|
|
22
|
+
loadGridTerrain(state, key, tile, request);
|
|
23
|
+
}
|
|
24
|
+
if (!request.tiles) {
|
|
25
|
+
if (mesh && retained?.image === tile.el) {
|
|
26
|
+
retained.used = true;
|
|
27
|
+
styleNativeMesh(state, mesh, coreWhite, opacity);
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
if (mesh && mesh._terrainRequest === request && retained?.image === tile.el &&
|
|
32
|
+
retained.url === (tile.el.currentSrc || tile.el.src)) {
|
|
33
|
+
retained.used = true;
|
|
34
|
+
styleNativeMesh(state, mesh, coreWhite, opacity);
|
|
35
|
+
return mesh;
|
|
36
|
+
}
|
|
37
|
+
return terrainGridMesh(state, key, tile, request, opacity);
|
|
38
|
+
}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { rootByLayer } from '../weakmaps/rootByLayer.js';
|
|
2
|
-
import { coreWhite } from '../globals/coreWhite.js';
|
|
3
|
-
import { textureFor } from '../textures/nativeTextureFor.js';
|
|
4
|
-
import { terrainElevation } from '../terrain/terrainElevation.js';
|
|
5
|
-
import { localPosition } from '../projections/localPosition.js';
|
|
6
|
-
import { putNativeMesh } from './putNativeMesh.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Build a textured grid tile mesh draped over sampled terrain.
|
|
10
|
-
*
|
|
11
|
-
* @param {Object} state Native grid layer state.
|
|
12
|
-
* @param {string} key Tile key.
|
|
13
|
-
* @param {Object} tile Loaded tile.
|
|
14
|
-
* @param {Object} request Terrain request containing elevation tiles.
|
|
15
|
-
* @param {number} opacity Tile opacity.
|
|
16
|
-
*
|
|
17
|
-
* @returns {Object|undefined} Terrain mesh, if its texture is available.
|
|
18
|
-
*
|
|
19
|
-
* @throws {Error} If an elevation sample is missing.
|
|
20
|
-
*/
|
|
21
|
-
export function terrainGridMesh(state, key, tile, request, opacity) {
|
|
22
|
-
const texture = textureFor(state, key, tile.el);
|
|
23
|
-
if (!texture) return;
|
|
24
|
-
const { x, y, z } = tile.coords, divisions = 32;
|
|
25
|
-
const northwest = localPosition(state, state.map.unproject(/* alloc */ [x * 256, y * 256], z));
|
|
26
|
-
const southeast = localPosition(state, state.map.unproject(/* alloc */ [(x + 1) * 256, (y + 1) * 256], z));
|
|
27
|
-
const vertices = /* alloc */ [], position = /* alloc */ [], uv = /* alloc */ [];
|
|
28
|
-
const base = rootByLayer.get(state.backend).position[1];
|
|
29
|
-
let row, col, u, v, elevation, a, b, c, d, index;
|
|
30
|
-
for (row = 0; row <= divisions; row++) for (col = 0; col <= divisions; col++) {
|
|
31
|
-
u = col / divisions; v = row / divisions;
|
|
32
|
-
elevation = terrainElevation(/* alloc */ { x: (x + u) * 256, y: (y + v) * 256 }, request.tiles);
|
|
33
|
-
if (!Number.isFinite(elevation)) throw /* alloc */ new Error(`Missing elevation sample in ${z}/${x}/${y}`);
|
|
34
|
-
vertices.push(/* alloc */ [northwest[0] + (southeast[0] - northwest[0]) * u, elevation - base,
|
|
35
|
-
northwest[2] + (southeast[2] - northwest[2]) * v, u, v]);
|
|
36
|
-
}
|
|
37
|
-
for (row = 0; row < divisions; row++) for (col = 0; col < divisions; col++) {
|
|
38
|
-
a = row * (divisions + 1) + col; b = a + 1; c = a + divisions + 1; d = c + 1;
|
|
39
|
-
for (index of /* alloc */ [a, c, b, b, c, d]) {
|
|
40
|
-
position.push(vertices[index][0], vertices[index][1], vertices[index][2]);
|
|
41
|
-
uv.push(vertices[index][3], vertices[index][4]);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const mesh = putNativeMesh(state, key, position, coreWhite, opacity, texture, uv, true);
|
|
45
|
-
mesh._terrainRequest = request;
|
|
46
|
-
return mesh;
|
|
47
|
-
}
|
|
1
|
+
import { rootByLayer } from '../weakmaps/rootByLayer.js';
|
|
2
|
+
import { coreWhite } from '../globals/coreWhite.js';
|
|
3
|
+
import { textureFor } from '../textures/nativeTextureFor.js';
|
|
4
|
+
import { terrainElevation } from '../terrain/terrainElevation.js';
|
|
5
|
+
import { localPosition } from '../projections/localPosition.js';
|
|
6
|
+
import { putNativeMesh } from './putNativeMesh.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Build a textured grid tile mesh draped over sampled terrain.
|
|
10
|
+
*
|
|
11
|
+
* @param {Object} state Native grid layer state.
|
|
12
|
+
* @param {string} key Tile key.
|
|
13
|
+
* @param {Object} tile Loaded tile.
|
|
14
|
+
* @param {Object} request Terrain request containing elevation tiles.
|
|
15
|
+
* @param {number} opacity Tile opacity.
|
|
16
|
+
*
|
|
17
|
+
* @returns {Object|undefined} Terrain mesh, if its texture is available.
|
|
18
|
+
*
|
|
19
|
+
* @throws {Error} If an elevation sample is missing.
|
|
20
|
+
*/
|
|
21
|
+
export function terrainGridMesh(state, key, tile, request, opacity) {
|
|
22
|
+
const texture = textureFor(state, key, tile.el);
|
|
23
|
+
if (!texture) return;
|
|
24
|
+
const { x, y, z } = tile.coords, divisions = 32;
|
|
25
|
+
const northwest = localPosition(state, state.map.unproject(/* alloc */ [x * 256, y * 256], z));
|
|
26
|
+
const southeast = localPosition(state, state.map.unproject(/* alloc */ [(x + 1) * 256, (y + 1) * 256], z));
|
|
27
|
+
const vertices = /* alloc */ [], position = /* alloc */ [], uv = /* alloc */ [];
|
|
28
|
+
const base = rootByLayer.get(state.backend).position[1];
|
|
29
|
+
let row, col, u, v, elevation, a, b, c, d, index;
|
|
30
|
+
for (row = 0; row <= divisions; row++) for (col = 0; col <= divisions; col++) {
|
|
31
|
+
u = col / divisions; v = row / divisions;
|
|
32
|
+
elevation = terrainElevation(/* alloc */ { x: (x + u) * 256, y: (y + v) * 256 }, request.tiles);
|
|
33
|
+
if (!Number.isFinite(elevation)) throw /* alloc */ new Error(`Missing elevation sample in ${z}/${x}/${y}`);
|
|
34
|
+
vertices.push(/* alloc */ [northwest[0] + (southeast[0] - northwest[0]) * u, elevation - base,
|
|
35
|
+
northwest[2] + (southeast[2] - northwest[2]) * v, u, v]);
|
|
36
|
+
}
|
|
37
|
+
for (row = 0; row < divisions; row++) for (col = 0; col < divisions; col++) {
|
|
38
|
+
a = row * (divisions + 1) + col; b = a + 1; c = a + divisions + 1; d = c + 1;
|
|
39
|
+
for (index of /* alloc */ [a, c, b, b, c, d]) {
|
|
40
|
+
position.push(vertices[index][0], vertices[index][1], vertices[index][2]);
|
|
41
|
+
uv.push(vertices[index][3], vertices[index][4]);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const mesh = putNativeMesh(state, key, position, coreWhite, opacity, texture, uv, true);
|
|
45
|
+
mesh._terrainRequest = request;
|
|
46
|
+
return mesh;
|
|
47
|
+
}
|