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 { mvtEdgeX } from './mvtEdgeX.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Add vertical levels where non-horizontal polygon edges cross.
|
|
5
|
-
*
|
|
6
|
-
* @param {Array} edges Ordered edge endpoints.
|
|
7
|
-
* @param {Set<number>} levels Destination set of vertical levels.
|
|
8
|
-
*/
|
|
9
|
-
export function addMvtCrossings(edges, levels) {
|
|
10
|
-
let i = 0, j, a, b, top, bottom, start, end;
|
|
11
|
-
for (; i < edges.length; i++) {
|
|
12
|
-
a = edges[i];
|
|
13
|
-
for (j = i + 1; j < edges.length; j++) {
|
|
14
|
-
b = edges[j];
|
|
15
|
-
top = Math.max(a[0][1], b[0][1]);
|
|
16
|
-
bottom = Math.min(a[1][1], b[1][1]);
|
|
17
|
-
if (top >= bottom) continue;
|
|
18
|
-
start = mvtEdgeX(a, top) - mvtEdgeX(b, top);
|
|
19
|
-
end = mvtEdgeX(a, bottom) - mvtEdgeX(b, bottom);
|
|
20
|
-
if (start * end < 0) levels.add(top + (bottom - top) * start / (start - end));
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
1
|
+
import { mvtEdgeX } from './mvtEdgeX.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Add vertical levels where non-horizontal polygon edges cross.
|
|
5
|
+
*
|
|
6
|
+
* @param {Array} edges Ordered edge endpoints.
|
|
7
|
+
* @param {Set<number>} levels Destination set of vertical levels.
|
|
8
|
+
*/
|
|
9
|
+
export function addMvtCrossings(edges, levels) {
|
|
10
|
+
let i = 0, j, a, b, top, bottom, start, end;
|
|
11
|
+
for (; i < edges.length; i++) {
|
|
12
|
+
a = edges[i];
|
|
13
|
+
for (j = i + 1; j < edges.length; j++) {
|
|
14
|
+
b = edges[j];
|
|
15
|
+
top = Math.max(a[0][1], b[0][1]);
|
|
16
|
+
bottom = Math.min(a[1][1], b[1][1]);
|
|
17
|
+
if (top >= bottom) continue;
|
|
18
|
+
start = mvtEdgeX(a, top) - mvtEdgeX(b, top);
|
|
19
|
+
end = mvtEdgeX(a, bottom) - mvtEdgeX(b, bottom);
|
|
20
|
+
if (start * end < 0) levels.add(top + (bottom - top) * start / (start - end));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import { mvtEdgeX } from './mvtEdgeX.js';
|
|
2
|
-
import { sortMvtActiveEdges } from './sortMvtActiveEdges.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Tessellate one vertical band using even-odd pairs of polygon edges.
|
|
6
|
-
*
|
|
7
|
-
* @param {Array} edges Polygon edges ordered by endpoint y.
|
|
8
|
-
* @param {number} top Band's upper y.
|
|
9
|
-
* @param {number} bottom Band's lower y.
|
|
10
|
-
* @param {Array} triangles Destination triangles.
|
|
11
|
-
*
|
|
12
|
-
* @throws {Error} If the band has an odd number of active edges.
|
|
13
|
-
* @throws {Error} If paired edges cross inside the band.
|
|
14
|
-
*/
|
|
15
|
-
export function appendMvtBandTriangles(edges, top, bottom, triangles) {
|
|
16
|
-
const mid = (top + bottom) / 2, active = /* alloc */ [];
|
|
17
|
-
let edge, i = 0, leftTop, leftBottom, rightTop, rightBottom;
|
|
18
|
-
for (edge of edges) {
|
|
19
|
-
if (edge[0][1] < mid && edge[1][1] > mid) {
|
|
20
|
-
active.push(/* alloc */ { edge, x: mvtEdgeX(edge, mid) });
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
sortMvtActiveEdges(active);
|
|
24
|
-
if (active.length % 2) throw /* alloc */ new Error('Unbalanced MVT polygon edges');
|
|
25
|
-
for (; i < active.length; i += 2) {
|
|
26
|
-
leftTop = mvtEdgeX(active[i].edge, top);
|
|
27
|
-
leftBottom = mvtEdgeX(active[i].edge, bottom);
|
|
28
|
-
rightTop = mvtEdgeX(active[i + 1].edge, top);
|
|
29
|
-
rightBottom = mvtEdgeX(active[i + 1].edge, bottom);
|
|
30
|
-
if (rightTop < leftTop - 1e-8 || rightBottom < leftBottom - 1e-8) {
|
|
31
|
-
throw /* alloc */ new Error('Crossing MVT polygon edges');
|
|
32
|
-
}
|
|
33
|
-
if ((rightTop - leftTop) * (bottom - top) > 1e-6) {
|
|
34
|
-
triangles.push(/* alloc */ [/* alloc */ [leftTop, top], /* alloc */ [rightTop, top],
|
|
35
|
-
/* alloc */ [leftBottom, bottom]]);
|
|
36
|
-
}
|
|
37
|
-
if ((rightBottom - leftBottom) * (bottom - top) > 1e-6) {
|
|
38
|
-
triangles.push(/* alloc */ [/* alloc */ [rightTop, top], /* alloc */ [rightBottom, bottom],
|
|
39
|
-
/* alloc */ [leftBottom, bottom]]);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
1
|
+
import { mvtEdgeX } from './mvtEdgeX.js';
|
|
2
|
+
import { sortMvtActiveEdges } from './sortMvtActiveEdges.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Tessellate one vertical band using even-odd pairs of polygon edges.
|
|
6
|
+
*
|
|
7
|
+
* @param {Array} edges Polygon edges ordered by endpoint y.
|
|
8
|
+
* @param {number} top Band's upper y.
|
|
9
|
+
* @param {number} bottom Band's lower y.
|
|
10
|
+
* @param {Array} triangles Destination triangles.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If the band has an odd number of active edges.
|
|
13
|
+
* @throws {Error} If paired edges cross inside the band.
|
|
14
|
+
*/
|
|
15
|
+
export function appendMvtBandTriangles(edges, top, bottom, triangles) {
|
|
16
|
+
const mid = (top + bottom) / 2, active = /* alloc */ [];
|
|
17
|
+
let edge, i = 0, leftTop, leftBottom, rightTop, rightBottom;
|
|
18
|
+
for (edge of edges) {
|
|
19
|
+
if (edge[0][1] < mid && edge[1][1] > mid) {
|
|
20
|
+
active.push(/* alloc */ { edge, x: mvtEdgeX(edge, mid) });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
sortMvtActiveEdges(active);
|
|
24
|
+
if (active.length % 2) throw /* alloc */ new Error('Unbalanced MVT polygon edges');
|
|
25
|
+
for (; i < active.length; i += 2) {
|
|
26
|
+
leftTop = mvtEdgeX(active[i].edge, top);
|
|
27
|
+
leftBottom = mvtEdgeX(active[i].edge, bottom);
|
|
28
|
+
rightTop = mvtEdgeX(active[i + 1].edge, top);
|
|
29
|
+
rightBottom = mvtEdgeX(active[i + 1].edge, bottom);
|
|
30
|
+
if (rightTop < leftTop - 1e-8 || rightBottom < leftBottom - 1e-8) {
|
|
31
|
+
throw /* alloc */ new Error('Crossing MVT polygon edges');
|
|
32
|
+
}
|
|
33
|
+
if ((rightTop - leftTop) * (bottom - top) > 1e-6) {
|
|
34
|
+
triangles.push(/* alloc */ [/* alloc */ [leftTop, top], /* alloc */ [rightTop, top],
|
|
35
|
+
/* alloc */ [leftBottom, bottom]]);
|
|
36
|
+
}
|
|
37
|
+
if ((rightBottom - leftBottom) * (bottom - top) > 1e-6) {
|
|
38
|
+
triangles.push(/* alloc */ [/* alloc */ [rightTop, top], /* alloc */ [rightBottom, bottom],
|
|
39
|
+
/* alloc */ [leftBottom, bottom]]);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Decode delta-encoded MVT coordinates into the current path.
|
|
3
|
-
*
|
|
4
|
-
* @param {Array<number>} commands Geometry command integers.
|
|
5
|
-
* @param {Object} state Mutable cursor, coordinate and path state.
|
|
6
|
-
* @param {number} count Number of coordinate pairs.
|
|
7
|
-
*
|
|
8
|
-
* @throws {Error} If a coordinate integer exceeds the MVT 32-bit range.
|
|
9
|
-
*/
|
|
10
|
-
export function appendMvtCoordinates(commands, state, count) {
|
|
11
|
-
let i = 0, dx, dy;
|
|
12
|
-
for (; i < count; i++) {
|
|
13
|
-
dx = commands[state.index++];
|
|
14
|
-
dy = commands[state.index++];
|
|
15
|
-
if (dx > 0xffffffff || dy > 0xffffffff) throw /* alloc */ new Error('Invalid MVT coordinate');
|
|
16
|
-
state.x += dx % 2 ? -(dx + 1) / 2 : dx / 2;
|
|
17
|
-
state.y += dy % 2 ? -(dy + 1) / 2 : dy / 2;
|
|
18
|
-
state.path.push(/* alloc */ [state.x, state.y]);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Decode delta-encoded MVT coordinates into the current path.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<number>} commands Geometry command integers.
|
|
5
|
+
* @param {Object} state Mutable cursor, coordinate and path state.
|
|
6
|
+
* @param {number} count Number of coordinate pairs.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If a coordinate integer exceeds the MVT 32-bit range.
|
|
9
|
+
*/
|
|
10
|
+
export function appendMvtCoordinates(commands, state, count) {
|
|
11
|
+
let i = 0, dx, dy;
|
|
12
|
+
for (; i < count; i++) {
|
|
13
|
+
dx = commands[state.index++];
|
|
14
|
+
dy = commands[state.index++];
|
|
15
|
+
if (dx > 0xffffffff || dy > 0xffffffff) throw /* alloc */ new Error('Invalid MVT coordinate');
|
|
16
|
+
state.x += dx % 2 ? -(dx + 1) / 2 : dx / 2;
|
|
17
|
+
state.y += dy % 2 ? -(dy + 1) / 2 : dy / 2;
|
|
18
|
+
state.path.push(/* alloc */ [state.x, state.y]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { tessellateVectorRings } from './tessellateVectorRings.js';
|
|
2
|
-
import { triangulate } from '../triangulation/triangulate.js';
|
|
3
|
-
import { isMvtFallbackError } from './isMvtFallbackError.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Triangulate a polygon, falling back to even-odd tessellation for recognized errors.
|
|
7
|
-
*
|
|
8
|
-
* @param {Array} rings Closed tile-coordinate rings.
|
|
9
|
-
* @param {Array} paths Rings converted to point objects.
|
|
10
|
-
* @param {Array} vertices Flattened path vertices.
|
|
11
|
-
* @param {Array} triangles Destination triangle coordinates.
|
|
12
|
-
*
|
|
13
|
-
* @throws {Error} If triangulation fails with an error not eligible for fallback.
|
|
14
|
-
*/
|
|
15
|
-
export function appendMvtPolygonTriangles(rings, paths, vertices, triangles) {
|
|
16
|
-
let indices, index, triangle, points, i = 0;
|
|
17
|
-
try {
|
|
18
|
-
indices = triangulate(paths[0], paths.slice(1));
|
|
19
|
-
for (triangle of indices) {
|
|
20
|
-
points = /* alloc */ [];
|
|
21
|
-
for (index of triangle) points.push(/* alloc */ [vertices[index].x, vertices[index].y]);
|
|
22
|
-
triangles.push(points);
|
|
23
|
-
}
|
|
24
|
-
} catch (error) {
|
|
25
|
-
if (!isMvtFallbackError(error)) throw error;
|
|
26
|
-
indices = tessellateVectorRings(rings);
|
|
27
|
-
for (; i < indices.length; i++) triangles.push(indices[i]);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
import { tessellateVectorRings } from './tessellateVectorRings.js';
|
|
2
|
+
import { triangulate } from '../triangulation/triangulate.js';
|
|
3
|
+
import { isMvtFallbackError } from './isMvtFallbackError.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Triangulate a polygon, falling back to even-odd tessellation for recognized errors.
|
|
7
|
+
*
|
|
8
|
+
* @param {Array} rings Closed tile-coordinate rings.
|
|
9
|
+
* @param {Array} paths Rings converted to point objects.
|
|
10
|
+
* @param {Array} vertices Flattened path vertices.
|
|
11
|
+
* @param {Array} triangles Destination triangle coordinates.
|
|
12
|
+
*
|
|
13
|
+
* @throws {Error} If triangulation fails with an error not eligible for fallback.
|
|
14
|
+
*/
|
|
15
|
+
export function appendMvtPolygonTriangles(rings, paths, vertices, triangles) {
|
|
16
|
+
let indices, index, triangle, points, i = 0;
|
|
17
|
+
try {
|
|
18
|
+
indices = triangulate(paths[0], paths.slice(1));
|
|
19
|
+
for (triangle of indices) {
|
|
20
|
+
points = /* alloc */ [];
|
|
21
|
+
for (index of triangle) points.push(/* alloc */ [vertices[index].x, vertices[index].y]);
|
|
22
|
+
triangles.push(points);
|
|
23
|
+
}
|
|
24
|
+
} catch (error) {
|
|
25
|
+
if (!isMvtFallbackError(error)) throw error;
|
|
26
|
+
indices = tessellateVectorRings(rings);
|
|
27
|
+
for (; i < indices.length; i++) triangles.push(indices[i]);
|
|
28
|
+
}
|
|
29
|
+
}
|
package/src/mvt/beginMvtPath.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { finishMvtPath } from './finishMvtPath.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Finish the previous geometry path and begin a new MoveTo path.
|
|
5
|
-
*
|
|
6
|
-
* @param {Object} state Mutable geometry decoding state.
|
|
7
|
-
* @param {Array} paths Destination paths.
|
|
8
|
-
* @param {number} type MVT geometry type.
|
|
9
|
-
* @param {number} count MoveTo coordinate count.
|
|
10
|
-
*
|
|
11
|
-
* @throws {Error} If a non-point MoveTo count is not one.
|
|
12
|
-
*/
|
|
13
|
-
export function beginMvtPath(state, paths, type, count) {
|
|
14
|
-
finishMvtPath(state.path, type, state.closed);
|
|
15
|
-
if (type !== 1 && count !== 1) throw /* alloc */ new Error('Invalid MVT MoveTo');
|
|
16
|
-
state.path = /* alloc */ [];
|
|
17
|
-
paths.push(state.path);
|
|
18
|
-
state.closed = false;
|
|
19
|
-
}
|
|
1
|
+
import { finishMvtPath } from './finishMvtPath.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Finish the previous geometry path and begin a new MoveTo path.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} state Mutable geometry decoding state.
|
|
7
|
+
* @param {Array} paths Destination paths.
|
|
8
|
+
* @param {number} type MVT geometry type.
|
|
9
|
+
* @param {number} count MoveTo coordinate count.
|
|
10
|
+
*
|
|
11
|
+
* @throws {Error} If a non-point MoveTo count is not one.
|
|
12
|
+
*/
|
|
13
|
+
export function beginMvtPath(state, paths, type, count) {
|
|
14
|
+
finishMvtPath(state.path, type, state.closed);
|
|
15
|
+
if (type !== 1 && count !== 1) throw /* alloc */ new Error('Invalid MVT MoveTo');
|
|
16
|
+
state.path = /* alloc */ [];
|
|
17
|
+
paths.push(state.path);
|
|
18
|
+
state.closed = false;
|
|
19
|
+
}
|
package/src/mvt/closeMvtPath.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Close a valid polygon path by repeating its first point.
|
|
3
|
-
*
|
|
4
|
-
* @param {Object} state Mutable geometry decoding state.
|
|
5
|
-
* @param {number} type MVT geometry type.
|
|
6
|
-
* @param {number} count ClosePath command count.
|
|
7
|
-
*
|
|
8
|
-
* @throws {Error} If the close command or path is invalid.
|
|
9
|
-
*/
|
|
10
|
-
export function closeMvtPath(state, type, count) {
|
|
11
|
-
if (type !== 3 || count !== 1 || !state.path || state.closed || state.path.length < 3) {
|
|
12
|
-
throw /* alloc */ new Error('Invalid MVT ClosePath');
|
|
13
|
-
}
|
|
14
|
-
state.path.push(/* alloc */ [...state.path[0]]);
|
|
15
|
-
state.closed = true;
|
|
16
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Close a valid polygon path by repeating its first point.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} state Mutable geometry decoding state.
|
|
5
|
+
* @param {number} type MVT geometry type.
|
|
6
|
+
* @param {number} count ClosePath command count.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If the close command or path is invalid.
|
|
9
|
+
*/
|
|
10
|
+
export function closeMvtPath(state, type, count) {
|
|
11
|
+
if (type !== 3 || count !== 1 || !state.path || state.closed || state.path.length < 3) {
|
|
12
|
+
throw /* alloc */ new Error('Invalid MVT ClosePath');
|
|
13
|
+
}
|
|
14
|
+
state.path.push(/* alloc */ [...state.path[0]]);
|
|
15
|
+
state.closed = true;
|
|
16
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Collect non-horizontal edges and vertical levels from closed MVT rings.
|
|
5
|
-
*
|
|
6
|
-
* @param {Array} rings Closed polygon rings.
|
|
7
|
-
* @param {Array} edges Destination edges.
|
|
8
|
-
* @param {Set<number>} levels Destination vertical levels.
|
|
9
|
-
*
|
|
10
|
-
* @throws {Error} If a ring is not closed or is too short.
|
|
11
|
-
* @throws {Error} If a ring coordinate is non-finite.
|
|
12
|
-
*/
|
|
13
|
-
export function collectMvtEdges(rings, edges, levels) {
|
|
14
|
-
let ring, i, a, b;
|
|
15
|
-
for (ring of rings) {
|
|
16
|
-
if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {
|
|
17
|
-
throw /* alloc */ new Error('MVT tessellation requires closed rings');
|
|
18
|
-
}
|
|
19
|
-
for (i = 1; i < ring.length; i++) {
|
|
20
|
-
a = ring[i - 1];
|
|
21
|
-
b = ring[i];
|
|
22
|
-
if (!finiteMvtCoordinate(a) || !finiteMvtCoordinate(b)) {
|
|
23
|
-
throw /* alloc */ new Error('Invalid MVT ring coordinate');
|
|
24
|
-
}
|
|
25
|
-
levels.add(a[1]);
|
|
26
|
-
if (a[1] !== b[1]) edges.push(/* alloc */ [a[1] < b[1] ? a : b, a[1] < b[1] ? b : a]);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Collect non-horizontal edges and vertical levels from closed MVT rings.
|
|
5
|
+
*
|
|
6
|
+
* @param {Array} rings Closed polygon rings.
|
|
7
|
+
* @param {Array} edges Destination edges.
|
|
8
|
+
* @param {Set<number>} levels Destination vertical levels.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If a ring is not closed or is too short.
|
|
11
|
+
* @throws {Error} If a ring coordinate is non-finite.
|
|
12
|
+
*/
|
|
13
|
+
export function collectMvtEdges(rings, edges, levels) {
|
|
14
|
+
let ring, i, a, b;
|
|
15
|
+
for (ring of rings) {
|
|
16
|
+
if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {
|
|
17
|
+
throw /* alloc */ new Error('MVT tessellation requires closed rings');
|
|
18
|
+
}
|
|
19
|
+
for (i = 1; i < ring.length; i++) {
|
|
20
|
+
a = ring[i - 1];
|
|
21
|
+
b = ring[i];
|
|
22
|
+
if (!finiteMvtCoordinate(a) || !finiteMvtCoordinate(b)) {
|
|
23
|
+
throw /* alloc */ new Error('Invalid MVT ring coordinate');
|
|
24
|
+
}
|
|
25
|
+
levels.add(a[1]);
|
|
26
|
+
if (a[1] !== b[1]) edges.push(/* alloc */ [a[1] < b[1] ? a : b, a[1] < b[1] ? b : a]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Create a protobuf reader over the supplied tile bytes.
|
|
3
|
-
*
|
|
4
|
-
* @param {Uint8Array} bytes Input bytes.
|
|
5
|
-
*
|
|
6
|
-
* @returns {Object} Reader with a data view and cursor.
|
|
7
|
-
*/
|
|
8
|
-
export function createMvtReader(bytes) {
|
|
9
|
-
return /* alloc */ {
|
|
10
|
-
bytes,
|
|
11
|
-
view: /* alloc */ new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),
|
|
12
|
-
pos: 0,
|
|
13
|
-
};
|
|
14
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Create a protobuf reader over the supplied tile bytes.
|
|
3
|
+
*
|
|
4
|
+
* @param {Uint8Array} bytes Input bytes.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Object} Reader with a data view and cursor.
|
|
7
|
+
*/
|
|
8
|
+
export function createMvtReader(bytes) {
|
|
9
|
+
return /* alloc */ {
|
|
10
|
+
bytes,
|
|
11
|
+
view: /* alloc */ new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),
|
|
12
|
+
pos: 0,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { createMvtReader } from './createMvtReader.js';
|
|
2
|
-
import { readMvtField } from './readMvtField.js';
|
|
3
|
-
import { readMvtLayer } from './readMvtLayer.js';
|
|
4
|
-
import { readMvtMessage } from './readMvtMessage.js';
|
|
5
|
-
import { skipMvtField } from './skipMvtField.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Decode an uncompressed MVT ArrayBuffer/Uint8Array into tile-local layers.
|
|
9
|
-
* Feature types: 0 unknown, 1 points, 2 lines, 3 polygon rings (including holes).
|
|
10
|
-
* Integers outside JavaScript's safe range are returned as decimal strings.
|
|
11
|
-
*
|
|
12
|
-
* @param {ArrayBuffer|Uint8Array} buffer Uncompressed tile data.
|
|
13
|
-
*
|
|
14
|
-
* @returns {Array<Object>} Decoded tile layers.
|
|
15
|
-
*
|
|
16
|
-
* @throws {TypeError} If the input is not a supported byte buffer.
|
|
17
|
-
* @throws {Error} If layer names are duplicated.
|
|
18
|
-
*/
|
|
19
|
-
export function decodeVectorTile(buffer) {
|
|
20
|
-
if (!(buffer instanceof ArrayBuffer) && !(buffer instanceof Uint8Array)) {
|
|
21
|
-
throw /* alloc */ new TypeError('MVT input must be an ArrayBuffer or Uint8Array');
|
|
22
|
-
}
|
|
23
|
-
const bytes = buffer instanceof Uint8Array ? buffer : /* alloc */ new Uint8Array(buffer);
|
|
24
|
-
const reader = createMvtReader(bytes);
|
|
25
|
-
const layers = /* alloc */ [], names = /* alloc */ new Set();
|
|
26
|
-
let field, wire, layer;
|
|
27
|
-
while (reader.pos < reader.bytes.length) {
|
|
28
|
-
[field, wire] = readMvtField(reader);
|
|
29
|
-
if (field !== 3) {
|
|
30
|
-
skipMvtField(reader, wire);
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
layer = readMvtLayer(readMvtMessage(reader, wire));
|
|
34
|
-
if (names.has(layer.name)) throw /* alloc */ new Error('Duplicate MVT layer name');
|
|
35
|
-
names.add(layer.name);
|
|
36
|
-
layers.push(layer);
|
|
37
|
-
}
|
|
38
|
-
return layers;
|
|
39
|
-
}
|
|
1
|
+
import { createMvtReader } from './createMvtReader.js';
|
|
2
|
+
import { readMvtField } from './readMvtField.js';
|
|
3
|
+
import { readMvtLayer } from './readMvtLayer.js';
|
|
4
|
+
import { readMvtMessage } from './readMvtMessage.js';
|
|
5
|
+
import { skipMvtField } from './skipMvtField.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Decode an uncompressed MVT ArrayBuffer/Uint8Array into tile-local layers.
|
|
9
|
+
* Feature types: 0 unknown, 1 points, 2 lines, 3 polygon rings (including holes).
|
|
10
|
+
* Integers outside JavaScript's safe range are returned as decimal strings.
|
|
11
|
+
*
|
|
12
|
+
* @param {ArrayBuffer|Uint8Array} buffer Uncompressed tile data.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Array<Object>} Decoded tile layers.
|
|
15
|
+
*
|
|
16
|
+
* @throws {TypeError} If the input is not a supported byte buffer.
|
|
17
|
+
* @throws {Error} If layer names are duplicated.
|
|
18
|
+
*/
|
|
19
|
+
export function decodeVectorTile(buffer) {
|
|
20
|
+
if (!(buffer instanceof ArrayBuffer) && !(buffer instanceof Uint8Array)) {
|
|
21
|
+
throw /* alloc */ new TypeError('MVT input must be an ArrayBuffer or Uint8Array');
|
|
22
|
+
}
|
|
23
|
+
const bytes = buffer instanceof Uint8Array ? buffer : /* alloc */ new Uint8Array(buffer);
|
|
24
|
+
const reader = createMvtReader(bytes);
|
|
25
|
+
const layers = /* alloc */ [], names = /* alloc */ new Set();
|
|
26
|
+
let field, wire, layer;
|
|
27
|
+
while (reader.pos < reader.bytes.length) {
|
|
28
|
+
[field, wire] = readMvtField(reader);
|
|
29
|
+
if (field !== 3) {
|
|
30
|
+
skipMvtField(reader, wire);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
layer = readMvtLayer(readMvtMessage(reader, wire));
|
|
34
|
+
if (names.has(layer.name)) throw /* alloc */ new Error('Duplicate MVT layer name');
|
|
35
|
+
names.add(layer.name);
|
|
36
|
+
layers.push(layer);
|
|
37
|
+
}
|
|
38
|
+
return layers;
|
|
39
|
+
}
|
package/src/mvt/expectMvtWire.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validate the protobuf wire type for an MVT field.
|
|
3
|
-
*
|
|
4
|
-
* @param {number} wire Actual wire type.
|
|
5
|
-
* @param {number} expected Expected wire type.
|
|
6
|
-
*
|
|
7
|
-
* @throws {Error} If the types differ.
|
|
8
|
-
*/
|
|
9
|
-
export function expectMvtWire(wire, expected) {
|
|
10
|
-
if (wire !== expected) throw /* alloc */ new Error('Invalid MVT wire type');
|
|
11
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Validate the protobuf wire type for an MVT field.
|
|
3
|
+
*
|
|
4
|
+
* @param {number} wire Actual wire type.
|
|
5
|
+
* @param {number} expected Expected wire type.
|
|
6
|
+
*
|
|
7
|
+
* @throws {Error} If the types differ.
|
|
8
|
+
*/
|
|
9
|
+
export function expectMvtWire(wire, expected) {
|
|
10
|
+
if (wire !== expected) throw /* alloc */ new Error('Invalid MVT wire type');
|
|
11
|
+
}
|
package/src/mvt/finishMvtPath.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validate a completed MVT line or polygon path.
|
|
3
|
-
*
|
|
4
|
-
* @param {Array|null} path Current path, if any.
|
|
5
|
-
* @param {number} type MVT geometry type.
|
|
6
|
-
* @param {boolean} closed Whether the polygon path is closed.
|
|
7
|
-
*
|
|
8
|
-
* @throws {Error} If a line is too short or a polygon path is open.
|
|
9
|
-
*/
|
|
10
|
-
export function finishMvtPath(path, type, closed) {
|
|
11
|
-
if (path && (type === 2 && path.length < 2 || type === 3 && !closed)) {
|
|
12
|
-
throw /* alloc */ new Error('Incomplete MVT geometry');
|
|
13
|
-
}
|
|
14
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Validate a completed MVT line or polygon path.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array|null} path Current path, if any.
|
|
5
|
+
* @param {number} type MVT geometry type.
|
|
6
|
+
* @param {boolean} closed Whether the polygon path is closed.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If a line is too short or a polygon path is open.
|
|
9
|
+
*/
|
|
10
|
+
export function finishMvtPath(path, type, closed) {
|
|
11
|
+
if (path && (type === 2 && path.length < 2 || type === 3 && !closed)) {
|
|
12
|
+
throw /* alloc */ new Error('Incomplete MVT geometry');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Check every component of a tile coordinate for finiteness.
|
|
3
|
-
*
|
|
4
|
-
* @param {Array<number>} point Tile coordinate.
|
|
5
|
-
*
|
|
6
|
-
* @returns {boolean} Whether all components are finite.
|
|
7
|
-
*/
|
|
8
|
-
export function finiteMvtCoordinate(point) {
|
|
9
|
-
let i = 0;
|
|
10
|
-
for (; i < point.length; i++) {
|
|
11
|
-
if (!Number.isFinite(point[i])) return false;
|
|
12
|
-
}
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Check every component of a tile coordinate for finiteness.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<number>} point Tile coordinate.
|
|
5
|
+
*
|
|
6
|
+
* @returns {boolean} Whether all components are finite.
|
|
7
|
+
*/
|
|
8
|
+
export function finiteMvtCoordinate(point) {
|
|
9
|
+
let i = 0;
|
|
10
|
+
for (; i < point.length; i++) {
|
|
11
|
+
if (!Number.isFinite(point[i])) return false;
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Group closed MVT rings into polygons according to exterior winding.
|
|
5
|
-
*
|
|
6
|
-
* @param {Array} rings Closed tile-coordinate rings.
|
|
7
|
-
*
|
|
8
|
-
* @returns {Array} Polygons containing exterior and following hole rings.
|
|
9
|
-
*
|
|
10
|
-
* @throws {Error} If a ring is not closed or is too short.
|
|
11
|
-
* @throws {Error} If a ring coordinate is non-finite.
|
|
12
|
-
*/
|
|
13
|
-
export function groupMvtPolygons(rings) {
|
|
14
|
-
const polygons = /* alloc */ [];
|
|
15
|
-
let polygon, exteriorSign, ring, area, i;
|
|
16
|
-
for (ring of rings) {
|
|
17
|
-
if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {
|
|
18
|
-
throw /* alloc */ new Error('MVT tessellation requires closed rings');
|
|
19
|
-
}
|
|
20
|
-
area = 0;
|
|
21
|
-
for (i = 1; i < ring.length; i++) {
|
|
22
|
-
if (!finiteMvtCoordinate(ring[i]) || !finiteMvtCoordinate(ring[i - 1])) {
|
|
23
|
-
throw /* alloc */ new Error('Invalid MVT ring coordinate');
|
|
24
|
-
}
|
|
25
|
-
area += ring[i - 1][0] * ring[i][1] - ring[i][0] * ring[i - 1][1];
|
|
26
|
-
}
|
|
27
|
-
if (!polygon || area && Math.sign(area) === exteriorSign) {
|
|
28
|
-
polygon = /* alloc */ [];
|
|
29
|
-
polygons.push(polygon);
|
|
30
|
-
exteriorSign = Math.sign(area);
|
|
31
|
-
}
|
|
32
|
-
polygon.push(ring);
|
|
33
|
-
}
|
|
34
|
-
return polygons;
|
|
35
|
-
}
|
|
1
|
+
import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Group closed MVT rings into polygons according to exterior winding.
|
|
5
|
+
*
|
|
6
|
+
* @param {Array} rings Closed tile-coordinate rings.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Array} Polygons containing exterior and following hole rings.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If a ring is not closed or is too short.
|
|
11
|
+
* @throws {Error} If a ring coordinate is non-finite.
|
|
12
|
+
*/
|
|
13
|
+
export function groupMvtPolygons(rings) {
|
|
14
|
+
const polygons = /* alloc */ [];
|
|
15
|
+
let polygon, exteriorSign, ring, area, i;
|
|
16
|
+
for (ring of rings) {
|
|
17
|
+
if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {
|
|
18
|
+
throw /* alloc */ new Error('MVT tessellation requires closed rings');
|
|
19
|
+
}
|
|
20
|
+
area = 0;
|
|
21
|
+
for (i = 1; i < ring.length; i++) {
|
|
22
|
+
if (!finiteMvtCoordinate(ring[i]) || !finiteMvtCoordinate(ring[i - 1])) {
|
|
23
|
+
throw /* alloc */ new Error('Invalid MVT ring coordinate');
|
|
24
|
+
}
|
|
25
|
+
area += ring[i - 1][0] * ring[i][1] - ring[i][0] * ring[i - 1][1];
|
|
26
|
+
}
|
|
27
|
+
if (!polygon || area && Math.sign(area) === exteriorSign) {
|
|
28
|
+
polygon = /* alloc */ [];
|
|
29
|
+
polygons.push(polygon);
|
|
30
|
+
exteriorSign = Math.sign(area);
|
|
31
|
+
}
|
|
32
|
+
polygon.push(ring);
|
|
33
|
+
}
|
|
34
|
+
return polygons;
|
|
35
|
+
}
|