@sakuzu/maplibre-gl-draw 1.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1109 -2
- package/README.ja.md +83 -50
- package/README.md +89 -53
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/dist/api/datasets.d.ts +263 -0
- package/dist/api/document.d.ts +66 -0
- package/dist/api/draw.d.ts +137 -0
- package/dist/api/draw.js +20 -0
- package/dist/api/drawing.d.ts +87 -0
- package/dist/api/errors.d.ts +35 -0
- package/dist/api/errors.js +35 -0
- package/dist/api/events.d.ts +316 -0
- package/dist/api/extension/context.d.ts +247 -0
- package/dist/api/extension/feature-type.d.ts +129 -0
- package/dist/api/extension/mode.d.ts +123 -0
- package/dist/api/extension/plugin.d.ts +51 -0
- package/dist/api/extension/plugin.js +3 -0
- package/dist/api/extension/provider.d.ts +119 -0
- package/dist/api/extension/provider.js +3 -0
- package/dist/api/extension/render.d.ts +176 -0
- package/dist/api/extension/render.js +3 -0
- package/dist/api/extension/store.d.ts +190 -0
- package/dist/api/extension/store.js +3 -0
- package/dist/api/extensions.d.ts +306 -0
- package/dist/api/extensions.js +3 -0
- package/dist/api/features.d.ts +188 -0
- package/dist/api/features.js +3 -0
- package/dist/api/groups.d.ts +111 -0
- package/dist/api/groups.js +3 -0
- package/dist/api/hidden.d.ts +45 -0
- package/dist/api/hidden.js +3 -0
- package/dist/api/impl/adapters.js +463 -0
- package/dist/api/impl/contexts.js +466 -0
- package/dist/api/impl/create-draw.js +124 -0
- package/dist/api/impl/datasets.js +405 -0
- package/dist/api/impl/destroy-guard.js +74 -0
- package/dist/api/impl/document.js +280 -0
- package/dist/api/impl/drawing.js +180 -0
- package/dist/api/impl/engine-context.d.ts +7 -0
- package/dist/api/{context.js → impl/engine-context.js} +49 -38
- package/dist/{maplibre-gl-draw.js → api/impl/engine.js} +145 -177
- package/dist/api/impl/events.js +423 -0
- package/dist/api/impl/extension-host.js +364 -0
- package/dist/api/impl/extensions.js +229 -0
- package/dist/api/impl/features.js +445 -0
- package/dist/api/impl/geometry/apply.d.ts +32 -0
- package/dist/api/{geometry → impl/geometry}/apply.js +10 -27
- package/dist/api/{geometry → impl/geometry}/buffer.d.ts +4 -3
- package/dist/api/{geometry → impl/geometry}/buffer.js +12 -23
- package/dist/api/{geometry → impl/geometry}/split.d.ts +4 -3
- package/dist/api/{geometry → impl/geometry}/split.js +10 -21
- package/dist/api/{geometry → impl/geometry}/targets.d.ts +2 -20
- package/dist/api/{geometry → impl/geometry}/targets.js +8 -35
- package/dist/api/impl/geometry/types.js +3 -0
- package/dist/api/impl/groups.d.ts +3 -0
- package/dist/api/impl/groups.js +268 -0
- package/dist/api/impl/hidden.js +60 -0
- package/dist/api/impl/import-export/constants.d.ts +22 -0
- package/dist/api/impl/import-export/constants.js +24 -0
- package/dist/api/{import-export → impl/import-export}/embedded-file.js +2 -2
- package/dist/api/{import-export → impl/import-export}/format-detection.d.ts +1 -1
- package/dist/api/{import-export → impl/import-export}/format-detection.js +2 -1
- package/dist/api/impl/import-export/geojson-export.d.ts +19 -0
- package/dist/api/{import-export → impl/import-export}/geojson-export.js +71 -104
- package/dist/api/{import-export → impl/import-export}/geojson-import.d.ts +11 -7
- package/dist/api/{import-export → impl/import-export}/geojson-import.js +139 -97
- package/dist/api/{import-export → impl/import-export}/geometry-validation.d.ts +14 -0
- package/dist/api/{import-export → impl/import-export}/geometry-validation.js +45 -0
- package/dist/api/impl/import-export/image-import.d.ts +16 -0
- package/dist/api/impl/import-export/image-import.js +73 -0
- package/dist/api/impl/import-export/legacy-image-style.d.ts +16 -0
- package/dist/api/impl/import-export/legacy-image-style.js +49 -0
- package/dist/api/impl/import-export/native-format.d.ts +14 -0
- package/dist/api/{import-export → impl/import-export}/native-format.js +32 -22
- package/dist/api/impl/import-export/native-upgrade.d.ts +8 -0
- package/dist/api/impl/import-export/native-upgrade.js +139 -0
- package/dist/api/{import-export → impl/import-export}/native-validation.d.ts +1 -1
- package/dist/api/{import-export → impl/import-export}/native-validation.js +15 -14
- package/dist/api/impl/import-export/style-validation.d.ts +24 -0
- package/dist/api/impl/import-export/style-validation.js +86 -0
- package/dist/api/impl/import-export/types.d.ts +52 -0
- package/dist/api/impl/import-export/types.js +3 -0
- package/dist/api/impl/input.js +180 -0
- package/dist/api/impl/layers.js +307 -0
- package/dist/api/impl/metadata.d.ts +1 -0
- package/dist/api/impl/metadata.js +22 -0
- package/dist/api/impl/options.d.ts +1 -0
- package/dist/api/impl/options.js +851 -0
- package/dist/api/impl/placement.d.ts +1 -0
- package/dist/api/impl/placement.js +138 -0
- package/dist/api/impl/render-context.d.ts +13 -0
- package/dist/api/impl/render-context.js +272 -0
- package/dist/api/impl/rows.d.ts +1 -0
- package/dist/api/impl/rows.js +46 -0
- package/dist/api/impl/selection.d.ts +1 -0
- package/dist/api/impl/selection.js +186 -0
- package/dist/api/impl/shared.d.ts +64 -0
- package/dist/api/impl/shared.js +178 -0
- package/dist/api/impl/validate-extension.d.ts +1 -0
- package/dist/api/impl/validate-extension.js +159 -0
- package/dist/api/layers.d.ts +130 -0
- package/dist/api/layers.js +3 -0
- package/dist/api/metadata.d.ts +18 -0
- package/dist/api/metadata.js +3 -0
- package/dist/api/model.d.ts +487 -0
- package/dist/api/model.js +47 -0
- package/dist/api/options.d.ts +466 -0
- package/dist/api/options.js +3 -0
- package/dist/api/selection.d.ts +94 -0
- package/dist/api/selection.js +3 -0
- package/dist/api/state.d.ts +155 -0
- package/dist/api/state.js +12 -0
- package/dist/{display → dataset}/chunk.d.ts +1 -1
- package/dist/{display → dataset}/chunk.js +4 -3
- package/dist/{display → dataset}/dataset.js +21 -21
- package/dist/dataset/interaction.d.ts +1 -0
- package/dist/{display → dataset}/interaction.js +18 -6
- package/dist/dataset/manager.d.ts +1 -0
- package/dist/dataset/provider.d.ts +1 -0
- package/dist/{display → dataset}/retained.d.ts +1 -1
- package/dist/{display → dataset}/retained.js +8 -7
- package/dist/dataset/source.d.ts +1 -0
- package/dist/{display → dataset}/source.js +17 -4
- package/dist/dataset/spatial.d.ts +1 -0
- package/dist/{display → dataset}/spatial.js +1 -1
- package/dist/dataset/style.d.ts +1 -0
- package/dist/{display → dataset}/style.js +1 -1
- package/dist/dataset/table-source.d.ts +1 -0
- package/dist/{display/columnar/source.js → dataset/table-source.js} +53 -25
- package/dist/{display → dataset}/thinning.d.ts +0 -10
- package/dist/{display → dataset}/thinning.js +3 -2
- package/dist/dataset/triangulation.d.ts +1 -0
- package/dist/{display → dataset}/triangulation.js +0 -0
- package/dist/{display → dataset}/types.d.ts +84 -121
- package/dist/dataset/types.js +61 -0
- package/dist/dispatcher/hit-test/box-strategies.js +13 -13
- package/dist/dispatcher/hit-test/box-strategy.d.ts +2 -15
- package/dist/dispatcher/hit-test/globe-shape.js +5 -4
- package/dist/dispatcher/hit-test/service.d.ts +17 -0
- package/dist/dispatcher/hit-test/service.js +80 -16
- package/dist/dispatcher/hit-test/strategies/base.d.ts +13 -19
- package/dist/dispatcher/hit-test/strategies/circle.js +3 -2
- package/dist/dispatcher/hit-test/strategies/image.js +6 -18
- package/dist/dispatcher/hit-test/strategies/line.d.ts +0 -6
- package/dist/dispatcher/hit-test/strategies/line.js +9 -2
- package/dist/dispatcher/hit-test/strategies/multi.d.ts +0 -8
- package/dist/dispatcher/hit-test/strategies/multi.js +17 -8
- package/dist/dispatcher/hit-test/strategies/point.d.ts +9 -7
- package/dist/dispatcher/hit-test/strategies/point.js +8 -4
- package/dist/dispatcher/hit-test/strategies/polygon.d.ts +0 -7
- package/dist/dispatcher/hit-test/strategies/polygon.js +11 -3
- package/dist/dispatcher/hit-test/topmost.d.ts +1 -1
- package/dist/dispatcher/input-router.js +154 -70
- package/dist/dispatcher/normalizer.js +25 -4
- package/dist/dispatcher/types.d.ts +6 -1
- package/dist/extension/feature-handler.d.ts +1 -182
- package/dist/extension/index.d.ts +4 -7
- package/dist/extension/renderers.d.ts +1 -208
- package/dist/geometry/angle.d.ts +0 -8
- package/dist/geometry/angle.js +0 -8
- package/dist/geometry/bbox.d.ts +4 -12
- package/dist/geometry/bbox.js +4 -12
- package/dist/geometry/boolean.d.ts +0 -51
- package/dist/geometry/boolean.js +0 -51
- package/dist/geometry/buffer.d.ts +0 -26
- package/dist/geometry/buffer.js +0 -26
- package/dist/geometry/circle.d.ts +0 -9
- package/dist/geometry/circle.js +0 -9
- package/dist/geometry/coords.d.ts +0 -16
- package/dist/geometry/coords.js +0 -16
- package/dist/geometry/distance.d.ts +0 -24
- package/dist/geometry/distance.js +0 -24
- package/dist/geometry/errors.d.ts +21 -36
- package/dist/geometry/errors.js +49 -29
- package/dist/geometry/geojson.d.ts +85 -0
- package/dist/geometry/geojson.js +173 -0
- package/dist/geometry/index.d.ts +38 -23
- package/dist/geometry/index.js +43 -31
- package/dist/geometry/measure.d.ts +0 -27
- package/dist/geometry/measure.js +0 -27
- package/dist/geometry/predicates.d.ts +0 -9
- package/dist/geometry/predicates.js +0 -9
- package/dist/geometry/public-bounds.d.ts +26 -0
- package/dist/geometry/public-bounds.js +30 -0
- package/dist/geometry/public-combine.d.ts +78 -0
- package/dist/geometry/public-combine.js +82 -0
- package/dist/geometry/public-create.d.ts +54 -0
- package/dist/geometry/public-create.js +70 -0
- package/dist/geometry/public-measure.d.ts +170 -0
- package/dist/geometry/public-measure.js +283 -0
- package/dist/geometry/public-predicates.d.ts +54 -0
- package/dist/geometry/public-predicates.js +144 -0
- package/dist/geometry/public-repair.d.ts +75 -0
- package/dist/geometry/public-repair.js +77 -0
- package/dist/geometry/simplify.d.ts +0 -7
- package/dist/geometry/simplify.js +0 -7
- package/dist/geometry/split.d.ts +0 -20
- package/dist/geometry/split.js +0 -20
- package/dist/geometry/units.d.ts +20 -12
- package/dist/geometry/units.js +20 -12
- package/dist/index.d.ts +66 -66
- package/dist/index.js +6 -18
- package/dist/messages.d.ts +7 -7
- package/dist/modes/draw/circle.js +83 -207
- package/dist/modes/draw/commit-layer.d.ts +5 -16
- package/dist/modes/draw/commit-layer.js +2 -13
- package/dist/modes/draw/freehand.js +108 -246
- package/dist/modes/draw/image.js +4 -2
- package/dist/modes/draw/index.d.ts +5 -5
- package/dist/modes/draw/index.js +5 -5
- package/dist/modes/draw/line.js +18 -354
- package/dist/modes/draw/point.js +29 -78
- package/dist/modes/draw/polygon.js +23 -368
- package/dist/modes/draw/trace-support.d.ts +43 -36
- package/dist/modes/draw/trace-support.js +95 -98
- package/dist/modes/draw/vertex-drawing.d.ts +1 -0
- package/dist/modes/draw/vertex-drawing.js +176 -0
- package/dist/modes/handler.d.ts +1 -285
- package/dist/modes/manager.d.ts +2 -2
- package/dist/modes/manager.js +3 -0
- package/dist/modes/select/box-selection.d.ts +3 -3
- package/dist/modes/select/box-selection.js +2 -1
- package/dist/modes/select/click-handler.d.ts +5 -5
- package/dist/modes/select/click-handler.js +22 -20
- package/dist/modes/select/cursor-handler.d.ts +2 -2
- package/dist/modes/select/drag/intermediate-writes.js +1 -1
- package/dist/modes/select/drag/move.js +3 -3
- package/dist/modes/select/drag/operation.d.ts +3 -3
- package/dist/modes/select/drag/radius.js +5 -4
- package/dist/modes/select/drag/transform.d.ts +2 -2
- package/dist/modes/select/drag/transform.js +11 -5
- package/dist/modes/select/drag/vertex.d.ts +2 -2
- package/dist/modes/select/drag/vertex.js +13 -8
- package/dist/modes/select/drag-handler.js +44 -25
- package/dist/modes/select/mode.js +17 -17
- package/dist/modes/select/shortcut-handler.d.ts +8 -8
- package/dist/modes/select/shortcut-handler.js +9 -7
- package/dist/operations/layer-operations.js +29 -168
- package/dist/operations/resize.d.ts +2 -2
- package/dist/operations/resize.js +5 -5
- package/dist/operations/rotate.js +5 -5
- package/dist/operations/selection-operations.d.ts +16 -1
- package/dist/operations/selection-operations.js +28 -13
- package/dist/operations/shared-vertex.js +4 -2
- package/dist/operations/trace-graph.d.ts +0 -18
- package/dist/operations/trace-graph.js +0 -18
- package/dist/operations/vertex.js +36 -35
- package/dist/shared/color.d.ts +1 -0
- package/dist/shared/color.js +245 -0
- package/dist/shared/config/constants.d.ts +1 -54
- package/dist/shared/config/constants.js +1 -58
- package/dist/shared/config/feature-style.d.ts +16 -13
- package/dist/shared/config/feature-style.js +9 -0
- package/dist/shared/config/rendering.d.ts +3 -3
- package/dist/shared/config/selection-highlight.d.ts +0 -15
- package/dist/shared/config/selection-highlight.js +4 -7
- package/dist/shared/config/selection.d.ts +2 -32
- package/dist/shared/config/selection.js +0 -18
- package/dist/shared/config/topology.d.ts +2 -2
- package/dist/shared/config/trace.d.ts +4 -4
- package/dist/shared/math/angle.d.ts +1 -1
- package/dist/shared/math/angle.js +1 -1
- package/dist/shared/math/circle.d.ts +1 -1
- package/dist/shared/math/circle.js +1 -1
- package/dist/shared/math/distance.d.ts +2 -1
- package/dist/shared/math/distance.js +3 -2
- package/dist/shared/math/index.d.ts +1 -1
- package/dist/shared/math/index.js +1 -1
- package/dist/shared/math/transform.d.ts +23 -0
- package/dist/shared/math/transform.js +47 -28
- package/dist/shared/properties.d.ts +18 -0
- package/dist/shared/properties.js +129 -0
- package/dist/shared/types/events.d.ts +15 -7
- package/dist/shared/types/model.d.ts +109 -159
- package/dist/shared/types/style.d.ts +1 -1
- package/dist/shared/utils/color.d.ts +2 -36
- package/dist/shared/utils/color.js +13 -70
- package/dist/shared/utils/coordinates.d.ts +30 -4
- package/dist/shared/utils/coordinates.js +56 -10
- package/dist/shared/utils/event-emitter.d.ts +1 -262
- package/dist/shared/utils/event-emitter.js +4 -3
- package/dist/shared/utils/feature-bbox.js +8 -7
- package/dist/shared/utils/feature-segments.js +5 -4
- package/dist/shared/utils/image.d.ts +0 -4
- package/dist/shared/utils/image.js +0 -6
- package/dist/shared/utils/name-generator.d.ts +14 -20
- package/dist/shared/utils/name-generator.js +20 -3
- package/dist/shared/utils/pixel-ratio.d.ts +9 -3
- package/dist/shared/utils/pixel-ratio.js +13 -4
- package/dist/shared/utils/property.d.ts +7 -50
- package/dist/shared/utils/property.js +22 -87
- package/dist/snapping/custom-targets.js +21 -4
- package/dist/snapping/indicator.js +20 -11
- package/dist/snapping/providers/display.d.ts +6 -1
- package/dist/snapping/providers/display.js +2 -1
- package/dist/snapping/providers/guide.d.ts +3 -43
- package/dist/snapping/providers/guide.js +1 -44
- package/dist/snapping/providers/intersection.js +1 -1
- package/dist/snapping/providers/store.js +3 -3
- package/dist/snapping/service.js +18 -7
- package/dist/snapping/types.d.ts +9 -35
- package/dist/store/draw-store.js +233 -142
- package/dist/store/local-visibility.d.ts +11 -6
- package/dist/store/local-visibility.js +38 -7
- package/dist/store/lock.d.ts +0 -6
- package/dist/store/lock.js +0 -6
- package/dist/store/memory/change-bus.d.ts +3 -3
- package/dist/store/memory/change-bus.js +12 -0
- package/dist/store/memory/file-store.d.ts +2 -2
- package/dist/store/memory/ui-state.d.ts +1 -51
- package/dist/store/memory/ui-state.js +122 -134
- package/dist/store/memory.d.ts +1 -8
- package/dist/store/memory.js +249 -45
- package/dist/store/ordering.d.ts +9 -0
- package/dist/store/ordering.js +17 -0
- package/dist/store/spatial/spatial-index.d.ts +1 -1
- package/dist/store/spatial/spatial-index.js +1 -1
- package/dist/store/spatial/store-spatial-index.d.ts +3 -1
- package/dist/store/spatial/store-spatial-index.js +9 -3
- package/dist/store/store.d.ts +66 -107
- package/dist/store/types.d.ts +1 -1
- package/dist/store/writable-layer.d.ts +1 -1
- package/dist/store/writable-layer.js +2 -2
- package/dist/table/builder.d.ts +83 -0
- package/dist/table/builder.js +381 -0
- package/dist/table/index.d.ts +37 -0
- package/dist/table/index.js +5 -0
- package/dist/table/packed-rtree.d.ts +1 -0
- package/dist/{display → table}/packed-rtree.js +1 -1
- package/dist/table/partition.d.ts +1 -0
- package/dist/{display → table}/partition.js +3 -3
- package/dist/table/prepare.d.ts +44 -0
- package/dist/table/prepare.js +136 -0
- package/dist/table/table.d.ts +1 -0
- package/dist/{display/columnar → table}/table.js +29 -25
- package/dist/{display/columnar → table}/types.d.ts +68 -72
- package/dist/table/types.js +3 -0
- package/dist/view/coordinator.js +4 -3
- package/dist/view/feature-companion.d.ts +13 -7
- package/dist/view/feature-companion.js +11 -3
- package/dist/view/globe-subdivision.js +3 -3
- package/dist/view/layer/attach.d.ts +12 -6
- package/dist/view/layer/attach.js +86 -10
- package/dist/view/layer/custom-layer.js +40 -11
- package/dist/view/layer/display-list.js +2 -1
- package/dist/view/layer/drape-planner.d.ts +2 -2
- package/dist/view/layer/frame-render.d.ts +3 -3
- package/dist/view/layer/frame-render.js +7 -2
- package/dist/view/layer/frame-state.d.ts +6 -6
- package/dist/view/layer/index.d.ts +2 -2
- package/dist/view/layer/index.js +1 -1
- package/dist/view/layer/render.d.ts +4 -4
- package/dist/view/layer/render.js +3 -8
- package/dist/view/layer/renderers.d.ts +2 -2
- package/dist/view/layer/renderers.js +1 -1
- package/dist/view/layer/slot-manager.d.ts +2 -2
- package/dist/view/layer/slot-manager.js +4 -4
- package/dist/view/layer/slots.d.ts +2 -2
- package/dist/view/layer/slots.js +1 -1
- package/dist/view/layer/store-retained-bbox.js +3 -2
- package/dist/view/layer/store-retained-classify.d.ts +5 -7
- package/dist/view/layer/store-retained-classify.js +19 -7
- package/dist/view/layer/store-retained-collect.js +8 -7
- package/dist/view/layer/store-retained-coord-patch.d.ts +0 -8
- package/dist/view/layer/store-retained-coord-patch.js +13 -4
- package/dist/view/layer/store-retained-immediate.d.ts +3 -3
- package/dist/view/layer/store-retained-immediate.js +3 -8
- package/dist/view/layer/store-retained-invalidation.d.ts +2 -2
- package/dist/view/layer/store-retained.d.ts +2 -2
- package/dist/view/layer/store-retained.js +1 -1
- package/dist/view/renderers/batch-manager.js +8 -7
- package/dist/view/renderers/drawer.js +21 -15
- package/dist/view/renderers/image.js +13 -39
- package/dist/view/renderers/line/line-types.d.ts +3 -3
- package/dist/view/renderers/line/sdf-line.js +3 -1
- package/dist/view/renderers/point/billboard-depth.js +1 -1
- package/dist/view/renderers/point/point-instance.js +1 -1
- package/dist/view/renderers/point/point-shape.js +2 -2
- package/dist/view/renderers/point/point-style.js +48 -4
- package/dist/view/renderers/polygon/batch.js +1 -2
- package/dist/view/renderers/polygon/fill.js +3 -1
- package/dist/view/renderers/polygon/sdf-polygon.js +2 -3
- package/dist/view/renderers/polygon/triangulator.d.ts +1 -1
- package/dist/view/renderers/stroke.js +3 -1
- package/dist/view/shaders/helpers.d.ts +2 -42
- package/dist/view/shaders/helpers.js +0 -6
- package/dist/view/shaders/projection.d.ts +15 -7
- package/dist/view/shaders/projection.js +23 -6
- package/dist/view/shaders/quad.d.ts +16 -12
- package/dist/view/shaders/quad.js +34 -13
- package/dist/view/style-rule.d.ts +5 -42
- package/dist/view/style-rule.js +20 -44
- package/dist/view/terrain/binding.d.ts +1 -0
- package/dist/view/terrain/binding.js +29 -0
- package/dist/view/terrain/context.d.ts +3 -4
- package/dist/view/terrain/context.js +4 -5
- package/dist/view/terrain/drape/geometry.js +1 -1
- package/dist/view/terrain/drape/pass.d.ts +1 -1
- package/dist/view/terrain/drape/pass.js +8 -7
- package/dist/view/terrain/polygon.d.ts +9 -5
- package/dist/view/terrain/polygon.js +16 -2
- package/dist/view/terrain/state.d.ts +1 -1
- package/dist/view/terrain/state.js +1 -1
- package/dist/view/terrain/tessellation.d.ts +2 -2
- package/dist/view/terrain/tessellation.js +1 -1
- package/dist/view/ui/auxiliary-handles.d.ts +6 -29
- package/dist/view/ui/bounds.js +8 -12
- package/dist/view/ui/handle-test.js +2 -2
- package/dist/view/ui/handle-thinning.js +17 -17
- package/dist/view/ui/handles.js +21 -13
- package/dist/view/ui/helper.d.ts +1 -1
- package/dist/view/ui/helper.js +1 -1
- package/dist/view/ui/index.d.ts +1 -1
- package/dist/view/ui/selection-scope.js +4 -2
- package/dist/view/ui/selection-ui/bounding-box.js +6 -6
- package/dist/view/ui/selection-ui/extension-registry.d.ts +31 -20
- package/dist/view/ui/selection-ui/extension-registry.js +70 -7
- package/dist/view/ui/selection-ui/index.d.ts +2 -2
- package/dist/view/ui/selection-ui/index.js +1 -1
- package/dist/view/ui/selection-ui/renderer.js +15 -38
- package/dist/view/ui/selection-ui/types.d.ts +17 -2
- package/dist/view/ui/selection-ui-drawer.d.ts +8 -0
- package/dist/view/ui/selection-ui-drawer.js +63 -2
- package/dist/view/ui/tentative.js +1 -1
- package/dist/webgl/index.d.ts +65 -0
- package/dist/webgl/index.js +62 -0
- package/package.json +38 -15
- package/dist/api/api.d.ts +0 -1259
- package/dist/api/api.js +0 -86
- package/dist/api/context.d.ts +0 -173
- package/dist/api/display-api.js +0 -23
- package/dist/api/event-api.d.ts +0 -13
- package/dist/api/event-api.js +0 -17
- package/dist/api/extension-api.d.ts +0 -46
- package/dist/api/extension-api.js +0 -85
- package/dist/api/feature-api.d.ts +0 -11
- package/dist/api/feature-api.js +0 -101
- package/dist/api/geometry/apply.d.ts +0 -51
- package/dist/api/geometry/boolean.d.ts +0 -28
- package/dist/api/geometry/boolean.js +0 -65
- package/dist/api/geometry/types.d.ts +0 -31
- package/dist/api/geometry-operations.d.ts +0 -162
- package/dist/api/geometry-operations.js +0 -94
- package/dist/api/group-api.d.ts +0 -10
- package/dist/api/group-api.js +0 -78
- package/dist/api/import-export/constants.d.ts +0 -29
- package/dist/api/import-export/constants.js +0 -40
- package/dist/api/import-export/file-name.d.ts +0 -10
- package/dist/api/import-export/file-name.js +0 -20
- package/dist/api/import-export/geojson-export.d.ts +0 -19
- package/dist/api/import-export/image-import.d.ts +0 -12
- package/dist/api/import-export/image-import.js +0 -53
- package/dist/api/import-export/index.d.ts +0 -9
- package/dist/api/import-export/index.js +0 -107
- package/dist/api/import-export/native-format.d.ts +0 -15
- package/dist/api/import-export/style-validation.d.ts +0 -27
- package/dist/api/import-export/style-validation.js +0 -49
- package/dist/api/import-export/types.d.ts +0 -26
- package/dist/api/index.d.ts +0 -15
- package/dist/api/index.js +0 -3
- package/dist/api/input-api.d.ts +0 -158
- package/dist/api/input-api.js +0 -144
- package/dist/api/instance-api.d.ts +0 -38
- package/dist/api/instance-api.js +0 -136
- package/dist/api/layer-api.d.ts +0 -12
- package/dist/api/layer-api.js +0 -62
- package/dist/api/selection-api.d.ts +0 -7
- package/dist/api/selection-api.js +0 -78
- package/dist/api/snapping-api.d.ts +0 -125
- package/dist/api/snapping-api.js +0 -50
- package/dist/api/topology-api.d.ts +0 -30
- package/dist/api/topology-api.js +0 -16
- package/dist/api/tracing-api.d.ts +0 -31
- package/dist/api/tracing-api.js +0 -16
- package/dist/dispatcher/hit-test/index.d.ts +0 -14
- package/dist/dispatcher/hit-test/index.js +0 -9
- package/dist/dispatcher/index.d.ts +0 -15
- package/dist/dispatcher/index.js +0 -3
- package/dist/display/columnar/index.d.ts +0 -12
- package/dist/display/columnar/index.js +0 -13
- package/dist/display/columnar/prepare.d.ts +0 -42
- package/dist/display/columnar/prepare.js +0 -116
- package/dist/display/index.d.ts +0 -13
- package/dist/display/types.js +0 -43
- package/dist/maplibre-gl-draw.d.ts +0 -47
- package/dist/modes/cursor.js +0 -72
- package/dist/modes/index.d.ts +0 -7
- package/dist/operations/index.d.ts +0 -9
- package/dist/operations/index.js +0 -3
- package/dist/plugins/index.d.ts +0 -10
- package/dist/plugins/mutation-hooks.d.ts +0 -28
- package/dist/plugins/mutation-hooks.js +0 -84
- package/dist/plugins/plugin-context.js +0 -367
- package/dist/plugins/plugin-manager.d.ts +0 -103
- package/dist/plugins/plugin-manager.js +0 -316
- package/dist/plugins/plugin.d.ts +0 -529
- package/dist/shared/config/index.d.ts +0 -17
- package/dist/shared/config/index.js +0 -8
- package/dist/shared/utils/index.d.ts +0 -15
- package/dist/shared/utils/index.js +0 -24
- package/dist/snapping/index.d.ts +0 -14
- package/dist/snapping/index.js +0 -4
- package/dist/store/change-merger.js +0 -102
- package/dist/store/event-bridge.js +0 -161
- package/dist/store/index.d.ts +0 -12
- package/dist/store/index.js +0 -4
- package/dist/view/index.d.ts +0 -47
- package/dist/view/index.js +0 -20
- /package/dist/api/{geometry/types.js → datasets.js} +0 -0
- /package/dist/api/{import-export/types.js → document.js} +0 -0
- /package/dist/{display/columnar/types.js → api/drawing.js} +0 -0
- /package/dist/{display/index.js → api/events.js} +0 -0
- /package/dist/{modes/index.js → api/extension/context.js} +0 -0
- /package/dist/{plugins/index.js → api/extension/feature-type.js} +0 -0
- /package/dist/{plugins/plugin.js → api/extension/mode.js} +0 -0
- /package/dist/api/{display-api.d.ts → impl/adapters.d.ts} +0 -0
- /package/dist/{display/columnar/source.d.ts → api/impl/contexts.d.ts} +0 -0
- /package/dist/{display/columnar/table.d.ts → api/impl/create-draw.d.ts} +0 -0
- /package/dist/{display/interaction.d.ts → api/impl/datasets.d.ts} +0 -0
- /package/dist/{display/manager.d.ts → api/impl/destroy-guard.d.ts} +0 -0
- /package/dist/{display/packed-rtree.d.ts → api/impl/document.d.ts} +0 -0
- /package/dist/{display/partition.d.ts → api/impl/drawing.d.ts} +0 -0
- /package/dist/{display/provider.d.ts → api/impl/engine.d.ts} +0 -0
- /package/dist/{display/source.d.ts → api/impl/events.d.ts} +0 -0
- /package/dist/{display/spatial.d.ts → api/impl/extension-host.d.ts} +0 -0
- /package/dist/{display/style.d.ts → api/impl/extensions.d.ts} +0 -0
- /package/dist/{display/triangulation.d.ts → api/impl/features.d.ts} +0 -0
- /package/dist/{modes/cursor.d.ts → api/impl/geometry/types.d.ts} +0 -0
- /package/dist/{plugins/plugin-context.d.ts → api/impl/hidden.d.ts} +0 -0
- /package/dist/api/{import-export → impl/import-export}/embedded-file.d.ts +0 -0
- /package/dist/api/{import-export → impl/import-export}/own-property.d.ts +0 -0
- /package/dist/api/{import-export → impl/import-export}/own-property.js +0 -0
- /package/dist/{store/change-merger.d.ts → api/impl/input.d.ts} +0 -0
- /package/dist/{store/event-bridge.d.ts → api/impl/layers.d.ts} +0 -0
- /package/dist/{display → dataset}/chunk-set.d.ts +0 -0
- /package/dist/{display → dataset}/chunk-set.js +0 -0
- /package/dist/{display → dataset}/dataset.d.ts +0 -0
- /package/dist/{display → dataset}/manager.js +0 -0
- /package/dist/{display → dataset}/provider.js +0 -0
- /package/dist/{display → dataset}/selection.d.ts +0 -0
- /package/dist/{display → dataset}/selection.js +0 -0
package/README.ja.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
このページの正は英語版 ([README.md](README.md)) です。
|
|
12
12
|
|
|
13
|
-

|
|
14
14
|
|
|
15
15
|
## 機能
|
|
16
16
|
|
|
@@ -93,12 +93,15 @@ GeoParquet や Arrow の表は、点、線、多角形が行ごとに混ざっ
|
|
|
93
93
|
決められ、クリックすると属性を読めます
|
|
94
94
|
([大量のデータ](docs/guides/large-data.ja.md))。
|
|
95
95
|
|
|
96
|
-
###
|
|
96
|
+
### 保存と読み込み
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
文書を独自形式で書き出すと、レイヤー、グループ、スタイル、画像まで
|
|
99
|
+
含めて保存でき、読み込めば同じ状態に戻ります。GeoJSON で書き出せば、
|
|
100
|
+
ほかのツールと地物をやり取りできます。地物は GeoJSON の図形と
|
|
101
|
+
GeoJSON の properties を持つので、ファイルはコードで読む地物と同じ形に
|
|
102
|
+
なります。
|
|
103
|
+
変更は取引ごとに 1 つのイベントで、出どころを添えて届きます。文書を
|
|
104
|
+
保存するストアは差し替えられます
|
|
102
105
|
([保存と読み込み](docs/guides/save-load.ja.md))。
|
|
103
106
|
|
|
104
107
|
### 閲覧専用
|
|
@@ -108,7 +111,9 @@ GeoParquet や Arrow の表は、点、線、多角形が行ごとに混ざっ
|
|
|
108
111
|
|
|
109
112
|
### 拡張
|
|
110
113
|
|
|
111
|
-
|
|
114
|
+
プラグイン、独自のモード、独自の描き方を持つ地物の型、重ね描き、
|
|
115
|
+
吸着の候補やハンドルの提供者を足せます。どの種類も同じ方法で足し、
|
|
116
|
+
足したときに返る関数で外します
|
|
112
117
|
([プラグイン](docs/guides/plugins.ja.md)、
|
|
113
118
|
[独自の型](docs/guides/custom-types.ja.md))。
|
|
114
119
|
|
|
@@ -117,28 +122,36 @@ GeoParquet や Arrow の表は、点、線、多角形が行ごとに混ざっ
|
|
|
117
122
|
ブラウザーですぐに試せます。インストールは要りません。
|
|
118
123
|
|
|
119
124
|
- [プレイグラウンド][demo]
|
|
120
|
-
- すべての機能を 1
|
|
121
|
-
- [
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
125
|
+
- すべての機能を 1 つの画面で。標準の UI 付き
|
|
126
|
+
- [例][examples]
|
|
127
|
+
- 20 の例。どれも、例を動かすページにそのコードを添えています
|
|
128
|
+
|
|
129
|
+
例の一部を挙げます。
|
|
130
|
+
|
|
131
|
+
- [Get started][ex-get-started]
|
|
132
|
+
- 地物を描き、選び、パネルで直す
|
|
133
|
+
- [Save and load][ex-save-and-load]
|
|
134
|
+
- GeoJSON と独自形式、地図に落としたファイル、読み込みで外された地物
|
|
135
|
+
- [Style rules and legend][ex-style-rules-and-legend]
|
|
126
136
|
- 属性の値で色を分ける 4 種類の規則と凡例
|
|
127
|
-
- [
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
- [
|
|
131
|
-
- 3D
|
|
132
|
-
- [
|
|
133
|
-
-
|
|
134
|
-
- [
|
|
135
|
-
-
|
|
136
|
-
- [
|
|
137
|
-
-
|
|
138
|
-
- [
|
|
139
|
-
-
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
- [Snapping and tracing][ex-snapping-and-tracing] と
|
|
138
|
+
[Geometry operations][ex-geometry-operations]
|
|
139
|
+
- 吸着、境界のなぞり、結合、交差、差、分割、バッファー
|
|
140
|
+
- [Terrain][ex-terrain]
|
|
141
|
+
- 3D 地形の上での描画と編集
|
|
142
|
+
- [Read-only viewer][ex-read-only-viewer]
|
|
143
|
+
- 見るための描画。閲覧専用、操作のロック、クリックした地物の属性
|
|
144
|
+
- [Plugins][ex-plugins]
|
|
145
|
+
- 独自のモードを持つプラグインと、標準の UI に足すその道具
|
|
146
|
+
- [Custom feature types][ex-custom-feature-types]
|
|
147
|
+
- 独自の描き方、当たり判定、範囲選択を持つ地物の型
|
|
148
|
+
- [Datasets][ex-datasets]
|
|
149
|
+
- Overture Maps の東京都心の建物と場所を描画の下と上に。場所は
|
|
150
|
+
見えている範囲の分を取り寄せる
|
|
151
|
+
- [Columnar data in a Worker][ex-columnar-data-in-a-worker]
|
|
152
|
+
- 同じ建物を Worker で GeoParquet から読み込み、列のまま描く
|
|
153
|
+
- [Build your own UI][ex-custom-ui]
|
|
154
|
+
- 標準の UI を使わない、自分の道具のバーとパネル
|
|
142
155
|
|
|
143
156
|
## インストール
|
|
144
157
|
|
|
@@ -156,7 +169,7 @@ maplibre-gl (`~6.11.1`) を使います。まだ入っていなければ、npm 7
|
|
|
156
169
|
import * as maplibregl from 'maplibre-gl';
|
|
157
170
|
import 'maplibre-gl/dist/maplibre-gl.css';
|
|
158
171
|
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
|
|
159
|
-
import {
|
|
172
|
+
import { createDraw } from '@sakuzu/maplibre-gl-draw';
|
|
160
173
|
|
|
161
174
|
// maplibre-gl v6 はページごとに 1 回 worker の URL を要する (これは Vite の例)
|
|
162
175
|
maplibregl.setWorkerUrl(workerUrl);
|
|
@@ -168,7 +181,7 @@ const map = new maplibregl.Map({
|
|
|
168
181
|
zoom: 12,
|
|
169
182
|
});
|
|
170
183
|
|
|
171
|
-
const draw =
|
|
184
|
+
const draw = createDraw(map);
|
|
172
185
|
|
|
173
186
|
// 自分のボタンで描き始める。クリックで頂点を足し、最初の頂点のクリックか
|
|
174
187
|
// Enter で確定する
|
|
@@ -176,19 +189,35 @@ document.querySelector('#polygon')?.addEventListener('click', () => {
|
|
|
176
189
|
draw.setMode('draw_polygon');
|
|
177
190
|
});
|
|
178
191
|
|
|
179
|
-
draw.on('
|
|
180
|
-
console.log(feature.id, feature.type, feature.
|
|
192
|
+
draw.on('feature.created', ({ feature }) => {
|
|
193
|
+
console.log(feature.id, feature.type, feature.geometry);
|
|
181
194
|
});
|
|
182
195
|
|
|
183
|
-
// すべての地物を GeoJSON の FeatureCollection
|
|
196
|
+
// すべての地物を GeoJSON の FeatureCollection で得る
|
|
184
197
|
document.querySelector('#save')?.addEventListener('click', () => {
|
|
185
|
-
|
|
186
|
-
console.log(data);
|
|
198
|
+
console.log(JSON.stringify(draw.document.toGeoJSON()));
|
|
187
199
|
});
|
|
188
200
|
```
|
|
189
201
|
|
|
190
|
-
|
|
191
|
-
[
|
|
202
|
+
[はじめかた](docs/getting-started.ja.md) では、このページを順を追って
|
|
203
|
+
作ります。[Get started][ex-get-started] の例は、自分のボタンの代わりに
|
|
204
|
+
標準の UI を地図に重ねます。
|
|
205
|
+
|
|
206
|
+
## 入口
|
|
207
|
+
|
|
208
|
+
ほかの入口が要るとき以外は、main の入口から import します。
|
|
209
|
+
|
|
210
|
+
- `@sakuzu/maplibre-gl-draw` は、描画のインスタンス (`createDraw`)、
|
|
211
|
+
その地物、レイヤー、グループ、データセット、イベント、設定、拡張の
|
|
212
|
+
窓口です
|
|
213
|
+
- `@sakuzu/maplibre-gl-draw/geometry` は、地図の要らない図形の計算
|
|
214
|
+
です。長さや面積を測る、円やバッファーを作る、面を合成して分ける
|
|
215
|
+
ことができます。Node や Worker でも動きます
|
|
216
|
+
- `@sakuzu/maplibre-gl-draw/table` は、大きな表を Worker で読んで
|
|
217
|
+
データセットに渡す部品です
|
|
218
|
+
- `@sakuzu/maplibre-gl-draw/webgl` は、独自のシェーダーを書くための
|
|
219
|
+
部品です。小さい版で変わることがあります。ほかの 3 つはセマンティック
|
|
220
|
+
バージョニングに従います
|
|
192
221
|
|
|
193
222
|
## 動作環境
|
|
194
223
|
|
|
@@ -209,9 +238,10 @@ document.querySelector('#save')?.addEventListener('click', () => {
|
|
|
209
238
|
## ドキュメント
|
|
210
239
|
|
|
211
240
|
[docs/README.ja.md](docs/README.ja.md) に、はじめかた、手引き、
|
|
212
|
-
リファレンス、内部の文書を読む順に並べています。mapbox-gl-draw
|
|
241
|
+
リファレンス、内部の文書を読む順に並べています。1.0、mapbox-gl-draw、
|
|
213
242
|
terra-draw から移る場合は [移行](docs/guides/migrating.ja.md) を参照して
|
|
214
|
-
ください。
|
|
243
|
+
ください。[API リファレンス][api] のメインのエントリーのページは、
|
|
244
|
+
インスタンスの資源とそれぞれのメソッドの一覧から始まります。
|
|
215
245
|
|
|
216
246
|
## 開発に参加する
|
|
217
247
|
|
|
@@ -234,15 +264,18 @@ AGPL が製品に合わない場合は、Kasika, Inc. (可視化技研株式会
|
|
|
234
264
|
|
|
235
265
|
[maplibre]: https://maplibre.org/maplibre-gl-js/docs/
|
|
236
266
|
[custom-layer]: https://maplibre.org/maplibre-gl-js/docs/API/interfaces/CustomLayerInterface/
|
|
237
|
-
[demo]: https://sakuzu.github.io/maplibre-gl-draw/
|
|
267
|
+
[demo]: https://sakuzu.github.io/maplibre-gl-draw/playground/
|
|
238
268
|
[api]: https://sakuzu.github.io/maplibre-gl-draw/api/
|
|
239
|
-
[
|
|
240
|
-
[ex-
|
|
241
|
-
[ex-
|
|
242
|
-
[ex-
|
|
243
|
-
[ex-
|
|
244
|
-
[ex-
|
|
245
|
-
[ex-
|
|
246
|
-
[ex-
|
|
247
|
-
[ex-
|
|
248
|
-
[ex-
|
|
269
|
+
[examples]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/
|
|
270
|
+
[ex-get-started]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/get-started.html
|
|
271
|
+
[ex-save-and-load]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/save-and-load.html
|
|
272
|
+
[ex-style-rules-and-legend]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/style-rules-and-legend.html
|
|
273
|
+
[ex-snapping-and-tracing]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/snapping-and-tracing.html
|
|
274
|
+
[ex-geometry-operations]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/geometry-operations.html
|
|
275
|
+
[ex-terrain]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/terrain.html
|
|
276
|
+
[ex-read-only-viewer]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/read-only-viewer.html
|
|
277
|
+
[ex-plugins]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/plugins.html
|
|
278
|
+
[ex-custom-feature-types]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/custom-feature-types.html
|
|
279
|
+
[ex-datasets]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/datasets.html
|
|
280
|
+
[ex-columnar-data-in-a-worker]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/columnar-data-in-a-worker.html
|
|
281
|
+
[ex-custom-ui]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/custom-ui.html
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ it does on a flat map.
|
|
|
8
8
|
[Demos][demo] | [Documentation](docs/README.md) | [API reference][api] |
|
|
9
9
|
[日本語](README.ja.md)
|
|
10
10
|
|
|
11
|
-

|
|
12
12
|
|
|
13
13
|
## Features
|
|
14
14
|
|
|
@@ -97,12 +97,15 @@ large file opens. It is styled by the same style rules as drawn
|
|
|
97
97
|
features, and a click reads its properties
|
|
98
98
|
([large data](docs/guides/large-data.md)).
|
|
99
99
|
|
|
100
|
-
###
|
|
100
|
+
### Save and load
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
and load it to get the same state back.
|
|
104
|
-
features with other tools
|
|
105
|
-
|
|
102
|
+
Write the document in the native format to keep layers, groups, styles
|
|
103
|
+
and images, and load it to get the same state back. Write it as GeoJSON
|
|
104
|
+
to exchange features with other tools: a feature holds a GeoJSON
|
|
105
|
+
geometry and GeoJSON properties, so the file has the shape of the
|
|
106
|
+
features you read in code.
|
|
107
|
+
Every change arrives as one event per transaction, with where it came
|
|
108
|
+
from, and the store that holds the document can be replaced
|
|
106
109
|
([save and load](docs/guides/save-load.md)).
|
|
107
110
|
|
|
108
111
|
### Read-only
|
|
@@ -112,8 +115,10 @@ drawing ([read-only](docs/guides/read-only.md)).
|
|
|
112
115
|
|
|
113
116
|
### Extending
|
|
114
117
|
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
Add plugins, modes of your own, feature types with their own drawing,
|
|
119
|
+
overlays, and providers of snapping candidates and handles. Every kind
|
|
120
|
+
is added the same way and removed with the function that adding
|
|
121
|
+
returns ([plugins](docs/guides/plugins.md),
|
|
117
122
|
[custom types](docs/guides/custom-types.md)).
|
|
118
123
|
|
|
119
124
|
## Demos
|
|
@@ -121,31 +126,41 @@ Extend it with plugins, custom modes and custom feature types
|
|
|
121
126
|
Try them in the browser, with nothing to install.
|
|
122
127
|
|
|
123
128
|
- [Playground][demo]
|
|
124
|
-
- Every feature in one editor, with
|
|
125
|
-
- [
|
|
126
|
-
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
- [
|
|
129
|
+
- Every feature in one editor, with the standard UI
|
|
130
|
+
- [Examples][examples]
|
|
131
|
+
- Twenty examples, each on a page that runs it beside its code
|
|
132
|
+
|
|
133
|
+
Among the examples:
|
|
134
|
+
|
|
135
|
+
- [Get started][ex-get-started]
|
|
136
|
+
- Drawing, selecting and changing features in the panel
|
|
137
|
+
- [Save and load][ex-save-and-load]
|
|
138
|
+
- GeoJSON and the native format, files dropped on the map, the
|
|
139
|
+
features a load leaves out
|
|
140
|
+
- [Style rules and legend][ex-style-rules-and-legend]
|
|
131
141
|
- The four kinds of style rule that color features by a property, with
|
|
132
142
|
a legend
|
|
133
|
-
- [Snapping and
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
-
|
|
139
|
-
|
|
140
|
-
-
|
|
141
|
-
|
|
142
|
-
- [
|
|
143
|
-
- A
|
|
144
|
-
- [
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
-
|
|
148
|
-
|
|
143
|
+
- [Snapping and tracing][ex-snapping-and-tracing] and
|
|
144
|
+
[geometry operations][ex-geometry-operations]
|
|
145
|
+
- Snapping, tracing a boundary, union, intersection, difference, split
|
|
146
|
+
and buffer
|
|
147
|
+
- [Terrain][ex-terrain]
|
|
148
|
+
- Drawing and editing on 3D terrain
|
|
149
|
+
- [Read-only viewer][ex-read-only-viewer]
|
|
150
|
+
- A drawing to look at: read-only, the interaction lock, the attributes
|
|
151
|
+
of the feature clicked
|
|
152
|
+
- [Plugins][ex-plugins]
|
|
153
|
+
- A plugin with a mode of its own, and its tool in the standard UI
|
|
154
|
+
- [Custom feature types][ex-custom-feature-types]
|
|
155
|
+
- A kind of feature with its own drawing, hit test and box selection
|
|
156
|
+
- [Datasets][ex-datasets]
|
|
157
|
+
- The buildings and places of central Tokyo from Overture Maps, under
|
|
158
|
+
and over the drawing, with places fetched for the part in view
|
|
159
|
+
- [Columnar data in a Worker][ex-columnar-data-in-a-worker]
|
|
160
|
+
- The same buildings read from GeoParquet in a Worker and drawn from
|
|
161
|
+
their columns
|
|
162
|
+
- [Build your own UI][ex-custom-ui]
|
|
163
|
+
- A toolbar and a panel of your own, without the standard UI
|
|
149
164
|
|
|
150
165
|
## Installation
|
|
151
166
|
|
|
@@ -163,7 +178,7 @@ npm 7 and later install it along.
|
|
|
163
178
|
import * as maplibregl from 'maplibre-gl';
|
|
164
179
|
import 'maplibre-gl/dist/maplibre-gl.css';
|
|
165
180
|
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
|
|
166
|
-
import {
|
|
181
|
+
import { createDraw } from '@sakuzu/maplibre-gl-draw';
|
|
167
182
|
|
|
168
183
|
// maplibre-gl v6 needs its worker URL once per page (Vite shown here)
|
|
169
184
|
maplibregl.setWorkerUrl(workerUrl);
|
|
@@ -175,7 +190,7 @@ const map = new maplibregl.Map({
|
|
|
175
190
|
zoom: 12,
|
|
176
191
|
});
|
|
177
192
|
|
|
178
|
-
const draw =
|
|
193
|
+
const draw = createDraw(map);
|
|
179
194
|
|
|
180
195
|
// Your own button starts drawing. Click to add vertices; click the first
|
|
181
196
|
// vertex or press Enter to finish
|
|
@@ -183,19 +198,35 @@ document.querySelector('#polygon')?.addEventListener('click', () => {
|
|
|
183
198
|
draw.setMode('draw_polygon');
|
|
184
199
|
});
|
|
185
200
|
|
|
186
|
-
draw.on('
|
|
187
|
-
console.log(feature.id, feature.type, feature.
|
|
201
|
+
draw.on('feature.created', ({ feature }) => {
|
|
202
|
+
console.log(feature.id, feature.type, feature.geometry);
|
|
188
203
|
});
|
|
189
204
|
|
|
190
|
-
// Every feature as a GeoJSON FeatureCollection
|
|
205
|
+
// Every feature as a GeoJSON FeatureCollection
|
|
191
206
|
document.querySelector('#save')?.addEventListener('click', () => {
|
|
192
|
-
|
|
193
|
-
console.log(data);
|
|
207
|
+
console.log(JSON.stringify(draw.document.toGeoJSON()));
|
|
194
208
|
});
|
|
195
209
|
```
|
|
196
210
|
|
|
197
|
-
|
|
198
|
-
[
|
|
211
|
+
[Getting started](docs/getting-started.md) builds this page step by
|
|
212
|
+
step, and the [Get started][ex-get-started] example lays the standard UI
|
|
213
|
+
over the map in place of your own buttons.
|
|
214
|
+
|
|
215
|
+
## Entry points
|
|
216
|
+
|
|
217
|
+
Import from the main entry unless you need one of the others.
|
|
218
|
+
|
|
219
|
+
- `@sakuzu/maplibre-gl-draw`: the draw instance (`createDraw`), its
|
|
220
|
+
features, layers, groups and datasets, the events, the options and the
|
|
221
|
+
extension contract
|
|
222
|
+
- `@sakuzu/maplibre-gl-draw/geometry`: geometry that needs no map:
|
|
223
|
+
measure lengths and areas, build circles and buffers, combine and split
|
|
224
|
+
polygons. It also runs in Node and in Workers
|
|
225
|
+
- `@sakuzu/maplibre-gl-draw/table`: read a large table in a Worker and
|
|
226
|
+
pass it to a dataset
|
|
227
|
+
- `@sakuzu/maplibre-gl-draw/webgl`: the building blocks for writing your
|
|
228
|
+
own shaders. It may change in a minor release; the other three follow
|
|
229
|
+
semantic versioning
|
|
199
230
|
|
|
200
231
|
## Compatibility
|
|
201
232
|
|
|
@@ -217,8 +248,10 @@ The complete page is [examples/basic/](examples/basic/), and
|
|
|
217
248
|
## Documentation
|
|
218
249
|
|
|
219
250
|
[docs/README.md](docs/README.md) lists every document in reading order:
|
|
220
|
-
getting started, the guides, the reference and the internals.
|
|
221
|
-
mapbox-gl-draw or terra-draw? See [migrating](docs/guides/migrating.md).
|
|
251
|
+
getting started, the guides, the reference and the internals. Moving from
|
|
252
|
+
1.0, mapbox-gl-draw or terra-draw? See [migrating](docs/guides/migrating.md).
|
|
253
|
+
The page of the main entry in the [API reference][api] opens with a list
|
|
254
|
+
of the resources of the instance and the methods each one has.
|
|
222
255
|
|
|
223
256
|
## Contributing
|
|
224
257
|
|
|
@@ -241,15 +274,18 @@ The notices of the third-party code this package contains are in
|
|
|
241
274
|
|
|
242
275
|
[maplibre]: https://maplibre.org/maplibre-gl-js/docs/
|
|
243
276
|
[custom-layer]: https://maplibre.org/maplibre-gl-js/docs/API/interfaces/CustomLayerInterface/
|
|
244
|
-
[demo]: https://sakuzu.github.io/maplibre-gl-draw/
|
|
277
|
+
[demo]: https://sakuzu.github.io/maplibre-gl-draw/playground/
|
|
245
278
|
[api]: https://sakuzu.github.io/maplibre-gl-draw/api/
|
|
246
|
-
[
|
|
247
|
-
[ex-
|
|
248
|
-
[ex-
|
|
249
|
-
[ex-
|
|
250
|
-
[ex-
|
|
251
|
-
[ex-
|
|
252
|
-
[ex-
|
|
253
|
-
[ex-
|
|
254
|
-
[ex-
|
|
255
|
-
[ex-
|
|
279
|
+
[examples]: https://sakuzu.github.io/maplibre-gl-draw/examples/
|
|
280
|
+
[ex-get-started]: https://sakuzu.github.io/maplibre-gl-draw/examples/get-started.html
|
|
281
|
+
[ex-save-and-load]: https://sakuzu.github.io/maplibre-gl-draw/examples/save-and-load.html
|
|
282
|
+
[ex-style-rules-and-legend]: https://sakuzu.github.io/maplibre-gl-draw/examples/style-rules-and-legend.html
|
|
283
|
+
[ex-snapping-and-tracing]: https://sakuzu.github.io/maplibre-gl-draw/examples/snapping-and-tracing.html
|
|
284
|
+
[ex-geometry-operations]: https://sakuzu.github.io/maplibre-gl-draw/examples/geometry-operations.html
|
|
285
|
+
[ex-terrain]: https://sakuzu.github.io/maplibre-gl-draw/examples/terrain.html
|
|
286
|
+
[ex-read-only-viewer]: https://sakuzu.github.io/maplibre-gl-draw/examples/read-only-viewer.html
|
|
287
|
+
[ex-plugins]: https://sakuzu.github.io/maplibre-gl-draw/examples/plugins.html
|
|
288
|
+
[ex-custom-feature-types]: https://sakuzu.github.io/maplibre-gl-draw/examples/custom-feature-types.html
|
|
289
|
+
[ex-datasets]: https://sakuzu.github.io/maplibre-gl-draw/examples/datasets.html
|
|
290
|
+
[ex-columnar-data-in-a-worker]: https://sakuzu.github.io/maplibre-gl-draw/examples/columnar-data-in-a-worker.html
|
|
291
|
+
[ex-custom-ui]: https://sakuzu.github.io/maplibre-gl-draw/examples/custom-ui.html
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -273,3 +273,32 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
|
273
273
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
274
274
|
THIS SOFTWARE.
|
|
275
275
|
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Sample data of the examples (Overture Maps)
|
|
280
|
+
|
|
281
|
+
The examples of the repository (`examples/`, not part of the package)
|
|
282
|
+
show buildings and places of central Tokyo from Overture Maps, in
|
|
283
|
+
`examples/public/data/`. `scripts/fetch-overture-sample.mjs` extracts
|
|
284
|
+
them, and `examples/public/data/README.md` records the release, the
|
|
285
|
+
extent, the counts and the sources of the rows.
|
|
286
|
+
|
|
287
|
+
Attribution: © OpenStreetMap contributors, Overture Maps Foundation.
|
|
288
|
+
|
|
289
|
+
- The buildings (`tokyo-buildings.geojson` and `tokyo-buildings.parquet`)
|
|
290
|
+
are a database derived from Overture's buildings theme, under the Open
|
|
291
|
+
Database License 1.0 (ODbL): <https://opendatacommons.org/licenses/odbl/1-0/>.
|
|
292
|
+
Its rows come from OpenStreetMap and Microsoft's Global ML Building
|
|
293
|
+
Footprints (ODbL), and from Qian Shi, et al., A First High-quality
|
|
294
|
+
Vector Data of Buildings in East Asian Countries Based on a
|
|
295
|
+
Comprehensive Large-scale Mapping Framework, Zenodo,
|
|
296
|
+
doi:10.5281/zenodo.8174931 (CC BY 4.0)
|
|
297
|
+
- The places (`tokyo-places.geojson`) come from Overture's places theme,
|
|
298
|
+
under the Community Data License Agreement Permissive 2.0:
|
|
299
|
+
<https://cdla.dev/permissive-2-0/>. Rows from Foursquare are under the
|
|
300
|
+
Apache License 2.0 (Copyright 2024 Foursquare Labs, Inc.), and rows from
|
|
301
|
+
AllThePlaces under CC0 1.0
|
|
302
|
+
|
|
303
|
+
The terms of every source are on
|
|
304
|
+
<https://docs.overturemaps.org/attribution/>.
|