@sakuzu/maplibre-gl-draw 1.0.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 +43 -0
- package/LICENSE +661 -0
- package/README.ja.md +248 -0
- package/README.md +255 -0
- package/THIRD_PARTY_NOTICES.md +275 -0
- package/dist/api/api.d.ts +1259 -0
- package/dist/api/api.js +86 -0
- package/dist/api/context.d.ts +173 -0
- package/dist/api/context.js +193 -0
- package/dist/api/display-api.d.ts +1 -0
- package/dist/api/display-api.js +23 -0
- package/dist/api/event-api.d.ts +13 -0
- package/dist/api/event-api.js +17 -0
- package/dist/api/extension-api.d.ts +46 -0
- package/dist/api/extension-api.js +85 -0
- package/dist/api/feature-api.d.ts +11 -0
- package/dist/api/feature-api.js +101 -0
- package/dist/api/geometry/apply.d.ts +51 -0
- package/dist/api/geometry/apply.js +114 -0
- package/dist/api/geometry/boolean.d.ts +28 -0
- package/dist/api/geometry/boolean.js +65 -0
- package/dist/api/geometry/buffer.d.ts +11 -0
- package/dist/api/geometry/buffer.js +105 -0
- package/dist/api/geometry/split.d.ts +16 -0
- package/dist/api/geometry/split.js +75 -0
- package/dist/api/geometry/targets.d.ts +76 -0
- package/dist/api/geometry/targets.js +158 -0
- package/dist/api/geometry/types.d.ts +31 -0
- package/dist/api/geometry/types.js +3 -0
- package/dist/api/geometry-operations.d.ts +162 -0
- package/dist/api/geometry-operations.js +94 -0
- package/dist/api/group-api.d.ts +10 -0
- package/dist/api/group-api.js +78 -0
- package/dist/api/import-export/constants.d.ts +29 -0
- package/dist/api/import-export/constants.js +40 -0
- package/dist/api/import-export/embedded-file.d.ts +13 -0
- package/dist/api/import-export/embedded-file.js +31 -0
- package/dist/api/import-export/file-name.d.ts +10 -0
- package/dist/api/import-export/file-name.js +20 -0
- package/dist/api/import-export/format-detection.d.ts +12 -0
- package/dist/api/import-export/format-detection.js +29 -0
- package/dist/api/import-export/geojson-export.d.ts +19 -0
- package/dist/api/import-export/geojson-export.js +262 -0
- package/dist/api/import-export/geojson-import.d.ts +34 -0
- package/dist/api/import-export/geojson-import.js +538 -0
- package/dist/api/import-export/geometry-validation.d.ts +20 -0
- package/dist/api/import-export/geometry-validation.js +107 -0
- package/dist/api/import-export/image-import.d.ts +12 -0
- package/dist/api/import-export/image-import.js +53 -0
- package/dist/api/import-export/index.d.ts +9 -0
- package/dist/api/import-export/index.js +107 -0
- package/dist/api/import-export/native-format.d.ts +15 -0
- package/dist/api/import-export/native-format.js +126 -0
- package/dist/api/import-export/native-validation.d.ts +28 -0
- package/dist/api/import-export/native-validation.js +212 -0
- package/dist/api/import-export/own-property.d.ts +10 -0
- package/dist/api/import-export/own-property.js +19 -0
- package/dist/api/import-export/style-validation.d.ts +27 -0
- package/dist/api/import-export/style-validation.js +49 -0
- package/dist/api/import-export/types.d.ts +26 -0
- package/dist/api/import-export/types.js +3 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.js +3 -0
- package/dist/api/input-api.d.ts +158 -0
- package/dist/api/input-api.js +144 -0
- package/dist/api/instance-api.d.ts +38 -0
- package/dist/api/instance-api.js +136 -0
- package/dist/api/layer-api.d.ts +12 -0
- package/dist/api/layer-api.js +62 -0
- package/dist/api/selection-api.d.ts +7 -0
- package/dist/api/selection-api.js +78 -0
- package/dist/api/snapping-api.d.ts +125 -0
- package/dist/api/snapping-api.js +50 -0
- package/dist/api/topology-api.d.ts +30 -0
- package/dist/api/topology-api.js +16 -0
- package/dist/api/tracing-api.d.ts +31 -0
- package/dist/api/tracing-api.js +16 -0
- package/dist/dispatcher/hit-test/box-strategies.d.ts +19 -0
- package/dist/dispatcher/hit-test/box-strategies.js +275 -0
- package/dist/dispatcher/hit-test/box-strategy.d.ts +59 -0
- package/dist/dispatcher/hit-test/box-strategy.js +37 -0
- package/dist/dispatcher/hit-test/globe-shape.d.ts +46 -0
- package/dist/dispatcher/hit-test/globe-shape.js +70 -0
- package/dist/dispatcher/hit-test/index.d.ts +14 -0
- package/dist/dispatcher/hit-test/index.js +9 -0
- package/dist/dispatcher/hit-test/local-frame.d.ts +77 -0
- package/dist/dispatcher/hit-test/local-frame.js +112 -0
- package/dist/dispatcher/hit-test/segment-grid.d.ts +32 -0
- package/dist/dispatcher/hit-test/segment-grid.js +79 -0
- package/dist/dispatcher/hit-test/service.d.ts +120 -0
- package/dist/dispatcher/hit-test/service.js +333 -0
- package/dist/dispatcher/hit-test/strategies/base.d.ts +136 -0
- package/dist/dispatcher/hit-test/strategies/base.js +66 -0
- package/dist/dispatcher/hit-test/strategies/circle.d.ts +10 -0
- package/dist/dispatcher/hit-test/strategies/circle.js +56 -0
- package/dist/dispatcher/hit-test/strategies/image.d.ts +22 -0
- package/dist/dispatcher/hit-test/strategies/image.js +115 -0
- package/dist/dispatcher/hit-test/strategies/index.d.ts +11 -0
- package/dist/dispatcher/hit-test/strategies/index.js +10 -0
- package/dist/dispatcher/hit-test/strategies/line.d.ts +17 -0
- package/dist/dispatcher/hit-test/strategies/line.js +30 -0
- package/dist/dispatcher/hit-test/strategies/multi.d.ts +44 -0
- package/dist/dispatcher/hit-test/strategies/multi.js +141 -0
- package/dist/dispatcher/hit-test/strategies/point.d.ts +20 -0
- package/dist/dispatcher/hit-test/strategies/point.js +29 -0
- package/dist/dispatcher/hit-test/strategies/polygon.d.ts +52 -0
- package/dist/dispatcher/hit-test/strategies/polygon.js +138 -0
- package/dist/dispatcher/hit-test/topmost.d.ts +48 -0
- package/dist/dispatcher/hit-test/topmost.js +157 -0
- package/dist/dispatcher/hit-test/visibility-lookup.d.ts +23 -0
- package/dist/dispatcher/hit-test/visibility-lookup.js +40 -0
- package/dist/dispatcher/index.d.ts +15 -0
- package/dist/dispatcher/index.js +3 -0
- package/dist/dispatcher/input-router.d.ts +1 -0
- package/dist/dispatcher/input-router.js +288 -0
- package/dist/dispatcher/normalizer.d.ts +1 -0
- package/dist/dispatcher/normalizer.js +513 -0
- package/dist/dispatcher/types.d.ts +144 -0
- package/dist/dispatcher/types.js +15 -0
- package/dist/display/chunk-set.d.ts +24 -0
- package/dist/display/chunk-set.js +533 -0
- package/dist/display/chunk.d.ts +1 -0
- package/dist/display/chunk.js +104 -0
- package/dist/display/columnar/index.d.ts +12 -0
- package/dist/display/columnar/index.js +13 -0
- package/dist/display/columnar/prepare.d.ts +42 -0
- package/dist/display/columnar/prepare.js +116 -0
- package/dist/display/columnar/source.d.ts +1 -0
- package/dist/display/columnar/source.js +531 -0
- package/dist/display/columnar/table.d.ts +1 -0
- package/dist/display/columnar/table.js +471 -0
- package/dist/display/columnar/types.d.ts +223 -0
- package/dist/display/columnar/types.js +3 -0
- package/dist/display/dataset.d.ts +2 -0
- package/dist/display/dataset.js +891 -0
- package/dist/display/index.d.ts +13 -0
- package/dist/display/index.js +3 -0
- package/dist/display/interaction.d.ts +1 -0
- package/dist/display/interaction.js +90 -0
- package/dist/display/manager.d.ts +1 -0
- package/dist/display/manager.js +440 -0
- package/dist/display/packed-rtree.d.ts +1 -0
- package/dist/display/packed-rtree.js +244 -0
- package/dist/display/partition.d.ts +1 -0
- package/dist/display/partition.js +226 -0
- package/dist/display/provider.d.ts +1 -0
- package/dist/display/provider.js +342 -0
- package/dist/display/retained.d.ts +40 -0
- package/dist/display/retained.js +898 -0
- package/dist/display/selection.d.ts +13 -0
- package/dist/display/selection.js +226 -0
- package/dist/display/source.d.ts +1 -0
- package/dist/display/source.js +119 -0
- package/dist/display/spatial.d.ts +1 -0
- package/dist/display/spatial.js +71 -0
- package/dist/display/style.d.ts +1 -0
- package/dist/display/style.js +126 -0
- package/dist/display/thinning.d.ts +65 -0
- package/dist/display/thinning.js +910 -0
- package/dist/display/triangulation.d.ts +1 -0
- package/dist/display/triangulation.js +0 -0
- package/dist/display/types.d.ts +561 -0
- package/dist/display/types.js +43 -0
- package/dist/extension/feature-handler.d.ts +182 -0
- package/dist/extension/feature-handler.js +3 -0
- package/dist/extension/index.d.ts +9 -0
- package/dist/extension/index.js +3 -0
- package/dist/extension/renderers.d.ts +208 -0
- package/dist/extension/renderers.js +3 -0
- package/dist/geometry/angle.d.ts +47 -0
- package/dist/geometry/angle.js +44 -0
- package/dist/geometry/bbox.d.ts +48 -0
- package/dist/geometry/bbox.js +83 -0
- package/dist/geometry/boolean.d.ts +162 -0
- package/dist/geometry/boolean.js +331 -0
- package/dist/geometry/buffer.d.ts +72 -0
- package/dist/geometry/buffer.js +218 -0
- package/dist/geometry/circle.d.ts +55 -0
- package/dist/geometry/circle.js +107 -0
- package/dist/geometry/coords.d.ts +97 -0
- package/dist/geometry/coords.js +149 -0
- package/dist/geometry/distance.d.ts +79 -0
- package/dist/geometry/distance.js +111 -0
- package/dist/geometry/errors.d.ts +74 -0
- package/dist/geometry/errors.js +104 -0
- package/dist/geometry/index.d.ts +28 -0
- package/dist/geometry/index.js +38 -0
- package/dist/geometry/measure.d.ts +81 -0
- package/dist/geometry/measure.js +236 -0
- package/dist/geometry/predicates.d.ts +62 -0
- package/dist/geometry/predicates.js +132 -0
- package/dist/geometry/simplify.d.ts +74 -0
- package/dist/geometry/simplify.js +159 -0
- package/dist/geometry/split.d.ts +68 -0
- package/dist/geometry/split.js +430 -0
- package/dist/geometry/types.d.ts +95 -0
- package/dist/geometry/types.js +3 -0
- package/dist/geometry/units.d.ts +35 -0
- package/dist/geometry/units.js +41 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.js +20 -0
- package/dist/maplibre-gl-draw.d.ts +47 -0
- package/dist/maplibre-gl-draw.js +407 -0
- package/dist/messages.d.ts +64 -0
- package/dist/messages.js +36 -0
- package/dist/modes/cursor.d.ts +1 -0
- package/dist/modes/cursor.js +72 -0
- package/dist/modes/draw/circle.d.ts +1 -0
- package/dist/modes/draw/circle.js +222 -0
- package/dist/modes/draw/commit-layer.d.ts +26 -0
- package/dist/modes/draw/commit-layer.js +31 -0
- package/dist/modes/draw/freehand.d.ts +1 -0
- package/dist/modes/draw/freehand.js +264 -0
- package/dist/modes/draw/image.d.ts +1 -0
- package/dist/modes/draw/image.js +60 -0
- package/dist/modes/draw/index.d.ts +9 -0
- package/dist/modes/draw/index.js +11 -0
- package/dist/modes/draw/line.d.ts +1 -0
- package/dist/modes/draw/line.js +363 -0
- package/dist/modes/draw/point.d.ts +1 -0
- package/dist/modes/draw/point.js +87 -0
- package/dist/modes/draw/polygon.d.ts +1 -0
- package/dist/modes/draw/polygon.js +378 -0
- package/dist/modes/draw/trace-support.d.ts +79 -0
- package/dist/modes/draw/trace-support.js +161 -0
- package/dist/modes/handler.d.ts +285 -0
- package/dist/modes/handler.js +3 -0
- package/dist/modes/index.d.ts +7 -0
- package/dist/modes/index.js +3 -0
- package/dist/modes/manager.d.ts +15 -0
- package/dist/modes/manager.js +196 -0
- package/dist/modes/select/box-selection.d.ts +52 -0
- package/dist/modes/select/box-selection.js +140 -0
- package/dist/modes/select/click-handler.d.ts +32 -0
- package/dist/modes/select/click-handler.js +166 -0
- package/dist/modes/select/cursor-handler.d.ts +15 -0
- package/dist/modes/select/cursor-handler.js +59 -0
- package/dist/modes/select/drag/auxiliary.d.ts +26 -0
- package/dist/modes/select/drag/auxiliary.js +56 -0
- package/dist/modes/select/drag/intermediate-writes.d.ts +1 -0
- package/dist/modes/select/drag/intermediate-writes.js +171 -0
- package/dist/modes/select/drag/move.d.ts +24 -0
- package/dist/modes/select/drag/move.js +59 -0
- package/dist/modes/select/drag/operation.d.ts +30 -0
- package/dist/modes/select/drag/operation.js +18 -0
- package/dist/modes/select/drag/radius.d.ts +15 -0
- package/dist/modes/select/drag/radius.js +49 -0
- package/dist/modes/select/drag/transform.d.ts +17 -0
- package/dist/modes/select/drag/transform.js +155 -0
- package/dist/modes/select/drag/vertex.d.ts +17 -0
- package/dist/modes/select/drag/vertex.js +163 -0
- package/dist/modes/select/drag-handler.d.ts +1 -0
- package/dist/modes/select/drag-handler.js +254 -0
- package/dist/modes/select/hit-helpers.d.ts +40 -0
- package/dist/modes/select/hit-helpers.js +51 -0
- package/dist/modes/select/mode.d.ts +1 -0
- package/dist/modes/select/mode.js +397 -0
- package/dist/modes/select/shortcut-handler.d.ts +40 -0
- package/dist/modes/select/shortcut-handler.js +128 -0
- package/dist/operations/index.d.ts +9 -0
- package/dist/operations/index.js +3 -0
- package/dist/operations/layer-operations.d.ts +1 -0
- package/dist/operations/layer-operations.js +350 -0
- package/dist/operations/resize.d.ts +71 -0
- package/dist/operations/resize.js +252 -0
- package/dist/operations/rotate.d.ts +17 -0
- package/dist/operations/rotate.js +166 -0
- package/dist/operations/selection-operations.d.ts +20 -0
- package/dist/operations/selection-operations.js +159 -0
- package/dist/operations/shared-vertex.d.ts +1 -0
- package/dist/operations/shared-vertex.js +210 -0
- package/dist/operations/trace-graph.d.ts +96 -0
- package/dist/operations/trace-graph.js +283 -0
- package/dist/operations/vertex.d.ts +1 -0
- package/dist/operations/vertex.js +538 -0
- package/dist/plugins/index.d.ts +10 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/mutation-hooks.d.ts +28 -0
- package/dist/plugins/mutation-hooks.js +84 -0
- package/dist/plugins/plugin-context.d.ts +1 -0
- package/dist/plugins/plugin-context.js +367 -0
- package/dist/plugins/plugin-manager.d.ts +103 -0
- package/dist/plugins/plugin-manager.js +316 -0
- package/dist/plugins/plugin.d.ts +529 -0
- package/dist/plugins/plugin.js +3 -0
- package/dist/shared/config/constants.d.ts +66 -0
- package/dist/shared/config/constants.js +60 -0
- package/dist/shared/config/feature-style.d.ts +155 -0
- package/dist/shared/config/feature-style.js +154 -0
- package/dist/shared/config/index.d.ts +17 -0
- package/dist/shared/config/index.js +8 -0
- package/dist/shared/config/rendering.d.ts +107 -0
- package/dist/shared/config/rendering.js +33 -0
- package/dist/shared/config/selection-highlight.d.ts +29 -0
- package/dist/shared/config/selection-highlight.js +35 -0
- package/dist/shared/config/selection.d.ts +273 -0
- package/dist/shared/config/selection.js +266 -0
- package/dist/shared/config/topology.d.ts +33 -0
- package/dist/shared/config/topology.js +17 -0
- package/dist/shared/config/trace.d.ts +40 -0
- package/dist/shared/config/trace.js +17 -0
- package/dist/shared/math/angle.d.ts +21 -0
- package/dist/shared/math/angle.js +34 -0
- package/dist/shared/math/circle.d.ts +6 -0
- package/dist/shared/math/circle.js +10 -0
- package/dist/shared/math/constants.d.ts +48 -0
- package/dist/shared/math/constants.js +59 -0
- package/dist/shared/math/distance.d.ts +78 -0
- package/dist/shared/math/distance.js +147 -0
- package/dist/shared/math/globe-subdivision.d.ts +62 -0
- package/dist/shared/math/globe-subdivision.js +99 -0
- package/dist/shared/math/index.d.ts +17 -0
- package/dist/shared/math/index.js +21 -0
- package/dist/shared/math/intersection.d.ts +63 -0
- package/dist/shared/math/intersection.js +236 -0
- package/dist/shared/math/longitude.d.ts +20 -0
- package/dist/shared/math/longitude.js +31 -0
- package/dist/shared/math/mercator-plane.d.ts +27 -0
- package/dist/shared/math/mercator-plane.js +26 -0
- package/dist/shared/math/obb.d.ts +65 -0
- package/dist/shared/math/obb.js +107 -0
- package/dist/shared/math/rotation.d.ts +93 -0
- package/dist/shared/math/rotation.js +186 -0
- package/dist/shared/math/segment-grid.d.ts +69 -0
- package/dist/shared/math/segment-grid.js +159 -0
- package/dist/shared/math/transform.d.ts +140 -0
- package/dist/shared/math/transform.js +189 -0
- package/dist/shared/types/events.d.ts +128 -0
- package/dist/shared/types/events.js +3 -0
- package/dist/shared/types/model.d.ts +950 -0
- package/dist/shared/types/model.js +3 -0
- package/dist/shared/types/selection-box.d.ts +23 -0
- package/dist/shared/types/selection-box.js +3 -0
- package/dist/shared/types/style.d.ts +68 -0
- package/dist/shared/types/style.js +3 -0
- package/dist/shared/utils/color.d.ts +49 -0
- package/dist/shared/utils/color.js +180 -0
- package/dist/shared/utils/coordinates.d.ts +52 -0
- package/dist/shared/utils/coordinates.js +75 -0
- package/dist/shared/utils/embedded-image.d.ts +34 -0
- package/dist/shared/utils/embedded-image.js +161 -0
- package/dist/shared/utils/event-emitter.d.ts +262 -0
- package/dist/shared/utils/event-emitter.js +44 -0
- package/dist/shared/utils/feature-bbox.d.ts +8 -0
- package/dist/shared/utils/feature-bbox.js +207 -0
- package/dist/shared/utils/feature-segments.d.ts +23 -0
- package/dist/shared/utils/feature-segments.js +179 -0
- package/dist/shared/utils/id.d.ts +1 -0
- package/dist/shared/utils/id.js +35 -0
- package/dist/shared/utils/image.d.ts +34 -0
- package/dist/shared/utils/image.js +106 -0
- package/dist/shared/utils/index.d.ts +15 -0
- package/dist/shared/utils/index.js +24 -0
- package/dist/shared/utils/map.d.ts +26 -0
- package/dist/shared/utils/map.js +35 -0
- package/dist/shared/utils/name-generator.d.ts +197 -0
- package/dist/shared/utils/name-generator.js +337 -0
- package/dist/shared/utils/pixel-ratio.d.ts +111 -0
- package/dist/shared/utils/pixel-ratio.js +85 -0
- package/dist/shared/utils/property.d.ts +88 -0
- package/dist/shared/utils/property.js +140 -0
- package/dist/shared/utils/vertex-ref.d.ts +23 -0
- package/dist/shared/utils/vertex-ref.js +20 -0
- package/dist/snapping/custom-targets.d.ts +1 -0
- package/dist/snapping/custom-targets.js +21 -0
- package/dist/snapping/geometry.d.ts +1 -0
- package/dist/snapping/geometry.js +61 -0
- package/dist/snapping/index.d.ts +14 -0
- package/dist/snapping/index.js +4 -0
- package/dist/snapping/indicator.d.ts +19 -0
- package/dist/snapping/indicator.js +145 -0
- package/dist/snapping/providers/display.d.ts +72 -0
- package/dist/snapping/providers/display.js +268 -0
- package/dist/snapping/providers/guide.d.ts +69 -0
- package/dist/snapping/providers/guide.js +187 -0
- package/dist/snapping/providers/intersection.d.ts +1 -0
- package/dist/snapping/providers/intersection.js +92 -0
- package/dist/snapping/providers/shared.d.ts +39 -0
- package/dist/snapping/providers/shared.js +146 -0
- package/dist/snapping/providers/store.d.ts +1 -0
- package/dist/snapping/providers/store.js +132 -0
- package/dist/snapping/service.d.ts +1 -0
- package/dist/snapping/service.js +272 -0
- package/dist/snapping/types.d.ts +267 -0
- package/dist/snapping/types.js +66 -0
- package/dist/store/change-merger.d.ts +1 -0
- package/dist/store/change-merger.js +102 -0
- package/dist/store/draw-store.d.ts +1 -0
- package/dist/store/draw-store.js +396 -0
- package/dist/store/event-bridge.d.ts +1 -0
- package/dist/store/event-bridge.js +161 -0
- package/dist/store/index.d.ts +12 -0
- package/dist/store/index.js +4 -0
- package/dist/store/local-visibility.d.ts +21 -0
- package/dist/store/local-visibility.js +27 -0
- package/dist/store/lock.d.ts +67 -0
- package/dist/store/lock.js +54 -0
- package/dist/store/memory/change-bus.d.ts +60 -0
- package/dist/store/memory/change-bus.js +232 -0
- package/dist/store/memory/file-store.d.ts +15 -0
- package/dist/store/memory/file-store.js +33 -0
- package/dist/store/memory/frozen.d.ts +21 -0
- package/dist/store/memory/frozen.js +51 -0
- package/dist/store/memory/ui-state.d.ts +51 -0
- package/dist/store/memory/ui-state.js +223 -0
- package/dist/store/memory.d.ts +26 -0
- package/dist/store/memory.js +708 -0
- package/dist/store/spatial/index.d.ts +6 -0
- package/dist/store/spatial/index.js +4 -0
- package/dist/store/spatial/spatial-index.d.ts +90 -0
- package/dist/store/spatial/spatial-index.js +148 -0
- package/dist/store/spatial/store-spatial-index.d.ts +60 -0
- package/dist/store/spatial/store-spatial-index.js +125 -0
- package/dist/store/store.d.ts +417 -0
- package/dist/store/store.js +3 -0
- package/dist/store/types.d.ts +8 -0
- package/dist/store/types.js +3 -0
- package/dist/store/writable-layer.d.ts +35 -0
- package/dist/store/writable-layer.js +20 -0
- package/dist/view/cache/buffer.d.ts +28 -0
- package/dist/view/cache/buffer.js +176 -0
- package/dist/view/cache/earcut.d.ts +1 -0
- package/dist/view/cache/earcut.js +122 -0
- package/dist/view/cache/style-rule.d.ts +1 -0
- package/dist/view/cache/style-rule.js +97 -0
- package/dist/view/cache/terrain-fill.d.ts +30 -0
- package/dist/view/cache/terrain-fill.js +60 -0
- package/dist/view/cache/texture.d.ts +14 -0
- package/dist/view/cache/texture.js +292 -0
- package/dist/view/coordinator.d.ts +27 -0
- package/dist/view/coordinator.js +72 -0
- package/dist/view/feature-companion.d.ts +173 -0
- package/dist/view/feature-companion.js +108 -0
- package/dist/view/globe-subdivision.d.ts +78 -0
- package/dist/view/globe-subdivision.js +128 -0
- package/dist/view/index.d.ts +47 -0
- package/dist/view/index.js +20 -0
- package/dist/view/layer/attach.d.ts +20 -0
- package/dist/view/layer/attach.js +47 -0
- package/dist/view/layer/blend.d.ts +57 -0
- package/dist/view/layer/blend.js +14 -0
- package/dist/view/layer/custom-layer.d.ts +1 -0
- package/dist/view/layer/custom-layer.js +509 -0
- package/dist/view/layer/depth-state.d.ts +14 -0
- package/dist/view/layer/depth-state.js +44 -0
- package/dist/view/layer/display-list.d.ts +1 -0
- package/dist/view/layer/display-list.js +111 -0
- package/dist/view/layer/drape-planner.d.ts +139 -0
- package/dist/view/layer/drape-planner.js +726 -0
- package/dist/view/layer/frame-render.d.ts +57 -0
- package/dist/view/layer/frame-render.js +209 -0
- package/dist/view/layer/frame-state.d.ts +147 -0
- package/dist/view/layer/frame-state.js +484 -0
- package/dist/view/layer/gl-state.d.ts +77 -0
- package/dist/view/layer/gl-state.js +132 -0
- package/dist/view/layer/index.d.ts +6 -0
- package/dist/view/layer/index.js +5 -0
- package/dist/view/layer/render-scope.d.ts +30 -0
- package/dist/view/layer/render-scope.js +28 -0
- package/dist/view/layer/render.d.ts +87 -0
- package/dist/view/layer/render.js +187 -0
- package/dist/view/layer/renderers.d.ts +81 -0
- package/dist/view/layer/renderers.js +142 -0
- package/dist/view/layer/slot-manager.d.ts +26 -0
- package/dist/view/layer/slot-manager.js +133 -0
- package/dist/view/layer/slots.d.ts +33 -0
- package/dist/view/layer/slots.js +50 -0
- package/dist/view/layer/store-retained-bbox.d.ts +36 -0
- package/dist/view/layer/store-retained-bbox.js +188 -0
- package/dist/view/layer/store-retained-chunk.d.ts +97 -0
- package/dist/view/layer/store-retained-chunk.js +94 -0
- package/dist/view/layer/store-retained-classify.d.ts +34 -0
- package/dist/view/layer/store-retained-classify.js +88 -0
- package/dist/view/layer/store-retained-collect.d.ts +24 -0
- package/dist/view/layer/store-retained-collect.js +121 -0
- package/dist/view/layer/store-retained-coord-patch.d.ts +119 -0
- package/dist/view/layer/store-retained-coord-patch.js +168 -0
- package/dist/view/layer/store-retained-immediate.d.ts +63 -0
- package/dist/view/layer/store-retained-immediate.js +49 -0
- package/dist/view/layer/store-retained-invalidation.d.ts +96 -0
- package/dist/view/layer/store-retained-invalidation.js +192 -0
- package/dist/view/layer/store-retained.d.ts +198 -0
- package/dist/view/layer/store-retained.js +430 -0
- package/dist/view/layer/terrain-resolver.d.ts +1 -0
- package/dist/view/layer/terrain-resolver.js +174 -0
- package/dist/view/renderers/batch-manager.d.ts +61 -0
- package/dist/view/renderers/batch-manager.js +718 -0
- package/dist/view/renderers/draw-factors.d.ts +60 -0
- package/dist/view/renderers/draw-factors.js +35 -0
- package/dist/view/renderers/drawer.d.ts +1 -0
- package/dist/view/renderers/drawer.js +346 -0
- package/dist/view/renderers/image.d.ts +1 -0
- package/dist/view/renderers/image.js +255 -0
- package/dist/view/renderers/line/dash.d.ts +31 -0
- package/dist/view/renderers/line/dash.js +152 -0
- package/dist/view/renderers/line/line-geometry.d.ts +39 -0
- package/dist/view/renderers/line/line-geometry.js +460 -0
- package/dist/view/renderers/line/line-gl.d.ts +1 -0
- package/dist/view/renderers/line/line-gl.js +236 -0
- package/dist/view/renderers/line/line-shader.d.ts +1 -0
- package/dist/view/renderers/line/line-shader.js +364 -0
- package/dist/view/renderers/line/line-types.d.ts +43 -0
- package/dist/view/renderers/line/line-types.js +3 -0
- package/dist/view/renderers/line/line-uniforms.d.ts +1 -0
- package/dist/view/renderers/line/line-uniforms.js +390 -0
- package/dist/view/renderers/line/sdf-line.d.ts +92 -0
- package/dist/view/renderers/line/sdf-line.js +567 -0
- package/dist/view/renderers/point/billboard-depth.d.ts +10 -0
- package/dist/view/renderers/point/billboard-depth.js +56 -0
- package/dist/view/renderers/point/point-instance.d.ts +124 -0
- package/dist/view/renderers/point/point-instance.js +738 -0
- package/dist/view/renderers/point/point-sdf.d.ts +58 -0
- package/dist/view/renderers/point/point-sdf.js +170 -0
- package/dist/view/renderers/point/point-shape.d.ts +99 -0
- package/dist/view/renderers/point/point-shape.js +504 -0
- package/dist/view/renderers/point/point-style.d.ts +1 -0
- package/dist/view/renderers/point/point-style.js +46 -0
- package/dist/view/renderers/polygon/batch.d.ts +26 -0
- package/dist/view/renderers/polygon/batch.js +336 -0
- package/dist/view/renderers/polygon/earcut-input.d.ts +37 -0
- package/dist/view/renderers/polygon/earcut-input.js +55 -0
- package/dist/view/renderers/polygon/earcut-sliced.d.ts +69 -0
- package/dist/view/renderers/polygon/earcut-sliced.js +960 -0
- package/dist/view/renderers/polygon/fill.d.ts +74 -0
- package/dist/view/renderers/polygon/fill.js +251 -0
- package/dist/view/renderers/polygon/sdf-polygon.d.ts +62 -0
- package/dist/view/renderers/polygon/sdf-polygon.js +919 -0
- package/dist/view/renderers/polygon/terrain-cull.d.ts +3 -0
- package/dist/view/renderers/polygon/terrain-cull.js +14 -0
- package/dist/view/renderers/polygon/triangulator.d.ts +41 -0
- package/dist/view/renderers/polygon/triangulator.js +3 -0
- package/dist/view/renderers/retained.d.ts +43 -0
- package/dist/view/renderers/retained.js +3 -0
- package/dist/view/renderers/stroke.d.ts +121 -0
- package/dist/view/renderers/stroke.js +621 -0
- package/dist/view/shaders/frame.d.ts +8 -0
- package/dist/view/shaders/frame.js +37 -0
- package/dist/view/shaders/helpers.d.ts +238 -0
- package/dist/view/shaders/helpers.js +611 -0
- package/dist/view/shaders/initializer.d.ts +27 -0
- package/dist/view/shaders/initializer.js +125 -0
- package/dist/view/shaders/projection.d.ts +123 -0
- package/dist/view/shaders/projection.js +299 -0
- package/dist/view/shaders/quad-grid.d.ts +77 -0
- package/dist/view/shaders/quad-grid.js +128 -0
- package/dist/view/shaders/quad.d.ts +189 -0
- package/dist/view/shaders/quad.js +582 -0
- package/dist/view/shaders/retained-origin.d.ts +50 -0
- package/dist/view/shaders/retained-origin.js +67 -0
- package/dist/view/shaders/terrain-shade.d.ts +23 -0
- package/dist/view/shaders/terrain-shade.js +93 -0
- package/dist/view/style-rule.d.ts +166 -0
- package/dist/view/style-rule.js +300 -0
- package/dist/view/terrain/anchor.d.ts +135 -0
- package/dist/view/terrain/anchor.js +226 -0
- package/dist/view/terrain/context.d.ts +132 -0
- package/dist/view/terrain/context.js +437 -0
- package/dist/view/terrain/dem-atlas.d.ts +97 -0
- package/dist/view/terrain/dem-atlas.js +534 -0
- package/dist/view/terrain/detect.d.ts +126 -0
- package/dist/view/terrain/detect.js +198 -0
- package/dist/view/terrain/drape/bin-store.d.ts +179 -0
- package/dist/view/terrain/drape/bin-store.js +529 -0
- package/dist/view/terrain/drape/binning.d.ts +259 -0
- package/dist/view/terrain/drape/binning.js +604 -0
- package/dist/view/terrain/drape/edge-constrain.d.ts +37 -0
- package/dist/view/terrain/drape/edge-constrain.js +175 -0
- package/dist/view/terrain/drape/geometry.d.ts +95 -0
- package/dist/view/terrain/drape/geometry.js +260 -0
- package/dist/view/terrain/drape/mesh.d.ts +50 -0
- package/dist/view/terrain/drape/mesh.js +86 -0
- package/dist/view/terrain/drape/pass.d.ts +122 -0
- package/dist/view/terrain/drape/pass.js +379 -0
- package/dist/view/terrain/drape/quad-glyphs.d.ts +64 -0
- package/dist/view/terrain/drape/quad-glyphs.js +117 -0
- package/dist/view/terrain/drape/quad.d.ts +249 -0
- package/dist/view/terrain/drape/quad.js +835 -0
- package/dist/view/terrain/drape/renderer.d.ts +184 -0
- package/dist/view/terrain/drape/renderer.js +706 -0
- package/dist/view/terrain/drape/shared.d.ts +80 -0
- package/dist/view/terrain/drape/shared.js +173 -0
- package/dist/view/terrain/drape/stitch.d.ts +155 -0
- package/dist/view/terrain/drape/stitch.js +228 -0
- package/dist/view/terrain/ground.d.ts +72 -0
- package/dist/view/terrain/ground.js +151 -0
- package/dist/view/terrain/metrics.d.ts +180 -0
- package/dist/view/terrain/metrics.js +231 -0
- package/dist/view/terrain/occlusion.d.ts +11 -0
- package/dist/view/terrain/occlusion.js +129 -0
- package/dist/view/terrain/polygon.d.ts +86 -0
- package/dist/view/terrain/polygon.js +301 -0
- package/dist/view/terrain/shade.d.ts +48 -0
- package/dist/view/terrain/shade.js +45 -0
- package/dist/view/terrain/state.d.ts +99 -0
- package/dist/view/terrain/state.js +186 -0
- package/dist/view/terrain/tessellation.d.ts +265 -0
- package/dist/view/terrain/tessellation.js +924 -0
- package/dist/view/terrain/tiling.d.ts +56 -0
- package/dist/view/terrain/tiling.js +155 -0
- package/dist/view/terrain/upstream-terrain.d.ts +82 -0
- package/dist/view/terrain/upstream-terrain.js +116 -0
- package/dist/view/ui/auxiliary-handles.d.ts +151 -0
- package/dist/view/ui/auxiliary-handles.js +22 -0
- package/dist/view/ui/bounds.d.ts +53 -0
- package/dist/view/ui/bounds.js +149 -0
- package/dist/view/ui/box-selection.d.ts +1 -0
- package/dist/view/ui/box-selection.js +83 -0
- package/dist/view/ui/handle-test.d.ts +1 -0
- package/dist/view/ui/handle-test.js +437 -0
- package/dist/view/ui/handle-thinning.d.ts +122 -0
- package/dist/view/ui/handle-thinning.js +430 -0
- package/dist/view/ui/handles.d.ts +25 -0
- package/dist/view/ui/handles.js +673 -0
- package/dist/view/ui/helper.d.ts +19 -0
- package/dist/view/ui/helper.js +76 -0
- package/dist/view/ui/index.d.ts +15 -0
- package/dist/view/ui/index.js +15 -0
- package/dist/view/ui/selection-scope.d.ts +25 -0
- package/dist/view/ui/selection-scope.js +34 -0
- package/dist/view/ui/selection-ui/bounding-box.d.ts +44 -0
- package/dist/view/ui/selection-ui/bounding-box.js +240 -0
- package/dist/view/ui/selection-ui/extension-registry.d.ts +76 -0
- package/dist/view/ui/selection-ui/extension-registry.js +78 -0
- package/dist/view/ui/selection-ui/index.d.ts +12 -0
- package/dist/view/ui/selection-ui/index.js +12 -0
- package/dist/view/ui/selection-ui/renderer.d.ts +29 -0
- package/dist/view/ui/selection-ui/renderer.js +227 -0
- package/dist/view/ui/selection-ui/types.d.ts +55 -0
- package/dist/view/ui/selection-ui/types.js +3 -0
- package/dist/view/ui/selection-ui-drawer.d.ts +52 -0
- package/dist/view/ui/selection-ui-drawer.js +329 -0
- package/dist/view/ui/tentative.d.ts +1 -0
- package/dist/view/ui/tentative.js +320 -0
- package/dist/view/viewport.d.ts +119 -0
- package/dist/view/viewport.js +254 -0
- package/package.json +113 -0
package/README.ja.md
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# @sakuzu/maplibre-gl-draw
|
|
2
|
+
|
|
3
|
+
[MapLibre GL JS][maplibre] の地図の上に図形を描き、編集するための
|
|
4
|
+
ライブラリーです。独自の WebGL2 レンダラーで描くので、20 万の地物を
|
|
5
|
+
載せても編集できます。3D 地形や地球儀の上にも、平らな地図と同じように
|
|
6
|
+
描けます。
|
|
7
|
+
|
|
8
|
+
[デモ][demo] | [ドキュメント](docs/README.ja.md) | [API リファレンス][api] |
|
|
9
|
+
[English](README.md)
|
|
10
|
+
|
|
11
|
+
このページの正は英語版 ([README.md](README.md)) です。
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
## 機能
|
|
16
|
+
|
|
17
|
+
### 描画
|
|
18
|
+
|
|
19
|
+
点、線、面、円、フリーハンドの線を、マウス、タッチ、ペン、キーボードで
|
|
20
|
+
描けます。用意した画像を地図の上に置くこともできます
|
|
21
|
+
([描画](docs/guides/drawing.ja.md))。
|
|
22
|
+
|
|
23
|
+
### 選択と変形
|
|
24
|
+
|
|
25
|
+
地物をクリックで 1 つずつ、または矩形で囲んでまとめて選べます。選んだ
|
|
26
|
+
地物は移動、拡大縮小、回転ができます。
|
|
27
|
+
|
|
28
|
+
### 頂点の編集
|
|
29
|
+
|
|
30
|
+
頂点を足したり、消したり、動かしたりできます。MultiPolygon のように
|
|
31
|
+
複数の部分からなる地物や、面の穴の頂点も同じように編集できます。
|
|
32
|
+
|
|
33
|
+
### 吸着
|
|
34
|
+
|
|
35
|
+
描いている途中の点は、近くにある既存の頂点、辺、辺どうしの交点、水平や
|
|
36
|
+
垂直などの角度のガイドに吸着します。隣り合う区画を描くときは、既存の
|
|
37
|
+
境界の上の 2 点をクリックするだけで、その間の境界に沿った頂点が入ります
|
|
38
|
+
([吸着と幾何演算](docs/guides/snapping-geometry.ja.md))。
|
|
39
|
+
|
|
40
|
+
### 幾何演算
|
|
41
|
+
|
|
42
|
+
選んだ面どうしの結合、切り抜き、交差、線による分割、一定の距離だけ
|
|
43
|
+
広げるバッファができます。距離、長さ、面積も計算できます。これらの計算は
|
|
44
|
+
地図に依存しない関数として `@sakuzu/maplibre-gl-draw/geometry` に
|
|
45
|
+
まとめてあり、ブラウザーの外 (Node や Bun) でも同じ結果が得られます。
|
|
46
|
+
|
|
47
|
+
### スタイル
|
|
48
|
+
|
|
49
|
+
色、不透明度、線の太さ、破線と点線、点の形を決められます。スタイル規則を
|
|
50
|
+
使うと、地物が持つ属性の値 (土地の用途や人口など) に応じて色を自動で
|
|
51
|
+
分けられます ([スタイル](docs/guides/styles.ja.md))。
|
|
52
|
+
|
|
53
|
+
### レイヤーとグループ
|
|
54
|
+
|
|
55
|
+
レイヤーとグループで地物をまとめられます。レイヤーは並べ替え、非表示、
|
|
56
|
+
ロック、半透明化ができます。基図の道路や建物など MapLibre 自身の
|
|
57
|
+
レイヤーを、このライブラリーのレイヤーの間に挟んで描くこともできます
|
|
58
|
+
([レイヤー](docs/guides/layers.ja.md))。
|
|
59
|
+
|
|
60
|
+
### 傾けた地図、地球儀、3D 地形
|
|
61
|
+
|
|
62
|
+
地図を傾けても、回しても、地球儀の表示にしても、3D 地形を有効にしても、
|
|
63
|
+
平らな地図と同じように描けます。日付変更線をまたぐ地物も描けます
|
|
64
|
+
([地形](docs/guides/terrain.ja.md))。
|
|
65
|
+
|
|
66
|
+
最初の画像と同じ図形を、地図を傾けて回して見たところです。
|
|
67
|
+
|
|
68
|
+

|
|
69
|
+
|
|
70
|
+
地球儀の上では、大圏航路も日付変更線をまたぐ領域も描けます。
|
|
71
|
+
|
|
72
|
+

|
|
73
|
+
|
|
74
|
+
3D 地形の上では、地物は斜面に沿い、尾根の向こうは尾根に隠れます。
|
|
75
|
+
|
|
76
|
+

|
|
77
|
+
|
|
78
|
+
### 大量の地物
|
|
79
|
+
|
|
80
|
+
20 万の地物を載せても編集できます。次の画像の 20 万 8,073 件の地物は、
|
|
81
|
+
すべて編集できます ([性能](docs/guides/performance.ja.md))。
|
|
82
|
+
|
|
83
|
+

|
|
84
|
+
|
|
85
|
+
### データセット
|
|
86
|
+
|
|
87
|
+
数万件の区画や 100 万件の点のような大きなデータを、編集の対象に
|
|
88
|
+
しない代わりに速く表示します。全部を一度に渡すほか、地図を動かす
|
|
89
|
+
たびに見えている範囲の分だけサーバーから取り寄せることもできます。
|
|
90
|
+
GeoParquet や Arrow の表は、点、線、多角形が行ごとに混ざっていても
|
|
91
|
+
列の形のまま渡せるので、行ごとに変換する時間がかかりません。読み込み
|
|
92
|
+
は Worker で行えるので、大きなファイルを開いても画面は止まりません。見た目は描いた地物と同じスタイル規則で
|
|
93
|
+
決められ、クリックすると属性を読めます
|
|
94
|
+
([大量のデータ](docs/guides/large-data.ja.md))。
|
|
95
|
+
|
|
96
|
+
### 書き出しと読み込み
|
|
97
|
+
|
|
98
|
+
独自形式で書き出すと、レイヤー、グループ、スタイル、画像まで含めて
|
|
99
|
+
保存でき、読み込めば同じ状態に戻ります。GeoJSON で書き出せば、ほかの
|
|
100
|
+
ツールと地物をやり取りできます。地物を保存するストアは差し替えられ、
|
|
101
|
+
変更はすべてイベントで通知されます
|
|
102
|
+
([保存と読み込み](docs/guides/save-load.ja.md))。
|
|
103
|
+
|
|
104
|
+
### 閲覧専用
|
|
105
|
+
|
|
106
|
+
閲覧専用モードと操作のロックがあり、描いたものを見せるだけの画面を
|
|
107
|
+
作れます ([読み取り専用](docs/guides/read-only.ja.md))。
|
|
108
|
+
|
|
109
|
+
### 拡張
|
|
110
|
+
|
|
111
|
+
プラグイン、独自のモード、独自の地物型を足して拡張できます
|
|
112
|
+
([プラグイン](docs/guides/plugins.ja.md)、
|
|
113
|
+
[独自の型](docs/guides/custom-types.ja.md))。
|
|
114
|
+
|
|
115
|
+
## デモ
|
|
116
|
+
|
|
117
|
+
ブラウザーですぐに試せます。インストールは要りません。
|
|
118
|
+
|
|
119
|
+
- [プレイグラウンド][demo]
|
|
120
|
+
- すべての機能を 1 つの画面で。レイヤーとプロパティのパネル付き
|
|
121
|
+
- [基本][ex-basic]
|
|
122
|
+
- 面の描画、変更のイベント、保存と復元
|
|
123
|
+
- [書き出しと読み込み][ex-save-load]
|
|
124
|
+
- GeoJSON と独自形式の書き出し、地図に落としたファイルの読み込み
|
|
125
|
+
- [スタイル規則][ex-style-rules]
|
|
126
|
+
- 属性の値で色を分ける 4 種類の規則と凡例
|
|
127
|
+
- [吸着と幾何演算][ex-snapping-and-geometry]
|
|
128
|
+
- 吸着、境界のなぞり、共有する頂点の同時移動、結合、切り抜き、
|
|
129
|
+
バッファ、分割
|
|
130
|
+
- [3D 地形][ex-terrain]
|
|
131
|
+
- 3D 地形の上での描画と選択
|
|
132
|
+
- [閲覧専用][ex-read-only]
|
|
133
|
+
- 閲覧専用モード、操作のロック、ロックしたレイヤー
|
|
134
|
+
- [プラグイン][ex-plugin]
|
|
135
|
+
- フックと独自のモードを持つプラグイン
|
|
136
|
+
- [独自の地物型][ex-custom-feature-type]
|
|
137
|
+
- 独自のレンダラーと当たり判定を持つ地物型
|
|
138
|
+
- [データセット][ex-large-data]
|
|
139
|
+
- 5 万のマス目の色分けと、見えている範囲の点の取り寄せ
|
|
140
|
+
- [100 万の点][ex-columnar-worker]
|
|
141
|
+
- Worker で読み込む 100 万の点
|
|
142
|
+
|
|
143
|
+
## インストール
|
|
144
|
+
|
|
145
|
+
```sh
|
|
146
|
+
npm install @sakuzu/maplibre-gl-draw
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
maplibre-gl は peer dependency です。アプリにすでに入っている
|
|
150
|
+
maplibre-gl (`~6.11.1`) を使います。まだ入っていなければ、npm 7 以降は
|
|
151
|
+
一緒にインストールされます。
|
|
152
|
+
|
|
153
|
+
## 使い方
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
import * as maplibregl from 'maplibre-gl';
|
|
157
|
+
import 'maplibre-gl/dist/maplibre-gl.css';
|
|
158
|
+
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
|
|
159
|
+
import { createMapLibreGLDraw } from '@sakuzu/maplibre-gl-draw';
|
|
160
|
+
|
|
161
|
+
// maplibre-gl v6 はページごとに 1 回 worker の URL を要する (これは Vite の例)
|
|
162
|
+
maplibregl.setWorkerUrl(workerUrl);
|
|
163
|
+
|
|
164
|
+
const map = new maplibregl.Map({
|
|
165
|
+
container: 'map',
|
|
166
|
+
style: 'https://tiles.openfreemap.org/styles/liberty',
|
|
167
|
+
center: [139.767, 35.681],
|
|
168
|
+
zoom: 12,
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
const draw = createMapLibreGLDraw(map);
|
|
172
|
+
|
|
173
|
+
// 自分のボタンで描き始める。クリックで頂点を足し、最初の頂点のクリックか
|
|
174
|
+
// Enter で確定する
|
|
175
|
+
document.querySelector('#polygon')?.addEventListener('click', () => {
|
|
176
|
+
draw.setMode('draw_polygon');
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
draw.on('draw.feature.create', ({ feature }) => {
|
|
180
|
+
console.log(feature.id, feature.type, feature.coordinates);
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
// すべての地物を GeoJSON の FeatureCollection (文字列) で得る
|
|
184
|
+
document.querySelector('#save')?.addEventListener('click', () => {
|
|
185
|
+
const { data } = draw.export('geojson');
|
|
186
|
+
console.log(data);
|
|
187
|
+
});
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
ページ全体は [examples/basic/](examples/basic/) にあります。
|
|
191
|
+
[はじめかた](docs/getting-started.ja.md) で順を追って説明しています。
|
|
192
|
+
|
|
193
|
+
## 動作環境
|
|
194
|
+
|
|
195
|
+
- maplibre-gl `~6.11.1` で動き、WebGL2 が必要です。
|
|
196
|
+
- ESM のみで、TypeScript の型が付いています。フレームワークには依存
|
|
197
|
+
しません ([フレームワーク](docs/guides/frameworks.ja.md))。
|
|
198
|
+
|
|
199
|
+
## 制約
|
|
200
|
+
|
|
201
|
+
- 地物は、MapLibre GL JS の[カスタムレイヤー][custom-layer]の中に、この
|
|
202
|
+
ライブラリーのレンダラーで描いています。MapLibre のスタイルのレイヤー
|
|
203
|
+
ではないので、MapLibre の `queryRenderedFeatures` やスタイル式からは
|
|
204
|
+
見えません。地物を調べたり色を変えたりするときは、このライブラリーの
|
|
205
|
+
API とイベントを使います。
|
|
206
|
+
- 経度は [-180, 180] の範囲で扱います。
|
|
207
|
+
- 幾何演算は、日付変更線と極の付近では使えません。
|
|
208
|
+
|
|
209
|
+
## ドキュメント
|
|
210
|
+
|
|
211
|
+
[docs/README.ja.md](docs/README.ja.md) に、はじめかた、手引き、
|
|
212
|
+
リファレンス、内部の文書を読む順に並べています。mapbox-gl-draw や
|
|
213
|
+
terra-draw から移る場合は [移行](docs/guides/migrating.ja.md) を参照して
|
|
214
|
+
ください。
|
|
215
|
+
|
|
216
|
+
## 開発に参加する
|
|
217
|
+
|
|
218
|
+
開発の手順は [CONTRIBUTING.ja.md](CONTRIBUTING.ja.md) にあります。
|
|
219
|
+
プルリクエストは [CLA.md](CLA.md) の貢献者ライセンス契約のもとで歓迎
|
|
220
|
+
します。貢献した部分の著作権はあなたに残ります。
|
|
221
|
+
|
|
222
|
+
## ライセンス
|
|
223
|
+
|
|
224
|
+
Copyright (C) 2026 SAKAIDA Atsushi.
|
|
225
|
+
|
|
226
|
+
GNU Affero General Public License version 3 (`AGPL-3.0-only`) で提供して
|
|
227
|
+
います。全文は [LICENSE](LICENSE) にあります。
|
|
228
|
+
|
|
229
|
+
AGPL が製品に合わない場合は、Kasika, Inc. (可視化技研株式会社) から商用
|
|
230
|
+
ライセンスを受けられます。連絡先は <https://www.kasika.xyz/> です。
|
|
231
|
+
|
|
232
|
+
このパッケージに含まれる第三者のコードの表示は
|
|
233
|
+
[THIRD_PARTY_NOTICES.ja.md](THIRD_PARTY_NOTICES.ja.md) にあります。
|
|
234
|
+
|
|
235
|
+
[maplibre]: https://maplibre.org/maplibre-gl-js/docs/
|
|
236
|
+
[custom-layer]: https://maplibre.org/maplibre-gl-js/docs/API/interfaces/CustomLayerInterface/
|
|
237
|
+
[demo]: https://sakuzu.github.io/maplibre-gl-draw/
|
|
238
|
+
[api]: https://sakuzu.github.io/maplibre-gl-draw/api/
|
|
239
|
+
[ex-basic]: https://sakuzu.github.io/maplibre-gl-draw/examples/basic/
|
|
240
|
+
[ex-save-load]: https://sakuzu.github.io/maplibre-gl-draw/examples/save-load/
|
|
241
|
+
[ex-style-rules]: https://sakuzu.github.io/maplibre-gl-draw/examples/style-rules/
|
|
242
|
+
[ex-snapping-and-geometry]: https://sakuzu.github.io/maplibre-gl-draw/examples/snapping-and-geometry/
|
|
243
|
+
[ex-terrain]: https://sakuzu.github.io/maplibre-gl-draw/examples/terrain/
|
|
244
|
+
[ex-read-only]: https://sakuzu.github.io/maplibre-gl-draw/examples/read-only/
|
|
245
|
+
[ex-plugin]: https://sakuzu.github.io/maplibre-gl-draw/examples/plugin/
|
|
246
|
+
[ex-custom-feature-type]: https://sakuzu.github.io/maplibre-gl-draw/examples/custom-feature-type/
|
|
247
|
+
[ex-large-data]: https://sakuzu.github.io/maplibre-gl-draw/examples/large-data/
|
|
248
|
+
[ex-columnar-worker]: https://sakuzu.github.io/maplibre-gl-draw/examples/columnar-worker/
|
package/README.md
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# @sakuzu/maplibre-gl-draw
|
|
2
|
+
|
|
3
|
+
A library for drawing and editing shapes on a [MapLibre GL JS][maplibre]
|
|
4
|
+
map. It draws with its own WebGL2 renderer, so a drawing of 200,000
|
|
5
|
+
features stays editable, and it draws on 3D terrain and on the globe as
|
|
6
|
+
it does on a flat map.
|
|
7
|
+
|
|
8
|
+
[Demos][demo] | [Documentation](docs/README.md) | [API reference][api] |
|
|
9
|
+
[日本語](README.ja.md)
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
### Drawing
|
|
16
|
+
|
|
17
|
+
Draw points, lines, polygons, circles and freehand lines with the mouse,
|
|
18
|
+
touch, a pen or the keyboard. An image you provide can be placed on the
|
|
19
|
+
map ([drawing](docs/guides/drawing.md)).
|
|
20
|
+
|
|
21
|
+
### Selecting and transforming
|
|
22
|
+
|
|
23
|
+
Select features one by one with a click, or several at once with a box,
|
|
24
|
+
then move, resize and rotate them.
|
|
25
|
+
|
|
26
|
+
### Editing vertices
|
|
27
|
+
|
|
28
|
+
Add, delete and move vertices. Features made of several parts, such as a
|
|
29
|
+
MultiPolygon, and the holes of a polygon are edited the same way.
|
|
30
|
+
|
|
31
|
+
### Snapping
|
|
32
|
+
|
|
33
|
+
While drawing, the point under the pointer snaps to nearby vertices,
|
|
34
|
+
edges, the intersections of edges, and angle guides such as horizontal
|
|
35
|
+
and vertical. To draw a neighboring parcel, click two points on an
|
|
36
|
+
existing boundary and the vertices along that boundary are inserted
|
|
37
|
+
between them ([snapping and geometry](docs/guides/snapping-geometry.md)).
|
|
38
|
+
|
|
39
|
+
### Geometry operations
|
|
40
|
+
|
|
41
|
+
Combine selected polygons with union, subtract and intersect, split them
|
|
42
|
+
with a line, and buffer them by a distance. Distance, length and area can
|
|
43
|
+
be computed too. These computations are plain functions that do not need
|
|
44
|
+
the map, collected in `@sakuzu/maplibre-gl-draw/geometry`, and give the
|
|
45
|
+
same results outside the browser (Node, Bun).
|
|
46
|
+
|
|
47
|
+
### Styles
|
|
48
|
+
|
|
49
|
+
Set colors, opacity, line widths, dashed and dotted lines, and point
|
|
50
|
+
shapes. A style rule colors features by the value of a property they
|
|
51
|
+
carry, such as land use or population ([styles](docs/guides/styles.md)).
|
|
52
|
+
|
|
53
|
+
### Layers and groups
|
|
54
|
+
|
|
55
|
+
Group features in layers and groups. Layers can be reordered, hidden,
|
|
56
|
+
locked and faded. MapLibre's own layers, such as the roads and buildings
|
|
57
|
+
of the basemap, can be placed between the layers of the drawing
|
|
58
|
+
([layers](docs/guides/layers.md)).
|
|
59
|
+
|
|
60
|
+
### Tilted maps, the globe and 3D terrain
|
|
61
|
+
|
|
62
|
+
Drawing works as on a flat map when the map is tilted or rotated, shown
|
|
63
|
+
as a globe, or has 3D terrain enabled. Features can cross the
|
|
64
|
+
antimeridian ([terrain](docs/guides/terrain.md)).
|
|
65
|
+
|
|
66
|
+
The drawing of the first picture, seen with the map tilted and turned.
|
|
67
|
+
|
|
68
|
+

|
|
69
|
+
|
|
70
|
+
On the globe, great-circle routes and areas crossing the antimeridian
|
|
71
|
+
can be drawn.
|
|
72
|
+
|
|
73
|
+

|
|
74
|
+
|
|
75
|
+
On 3D terrain, features follow the slopes and a ridge hides what is
|
|
76
|
+
behind it.
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
### Many features
|
|
81
|
+
|
|
82
|
+
A drawing of 200,000 features stays editable. Every one of the 208,073
|
|
83
|
+
features in the next picture can be edited
|
|
84
|
+
([performance](docs/guides/performance.md)).
|
|
85
|
+
|
|
86
|
+

|
|
87
|
+
|
|
88
|
+
### Datasets
|
|
89
|
+
|
|
90
|
+
Large data such as tens of thousands of parcels or a million points is
|
|
91
|
+
shown fast, in exchange for not being editable. Pass it all at once, or
|
|
92
|
+
fetch from a server only what is in view each time the map moves. A
|
|
93
|
+
table from GeoParquet or Arrow is passed as columns, even when its rows
|
|
94
|
+
mix points, lines and polygons, so no time goes into converting every
|
|
95
|
+
row. It can be read in a Worker, so the page does not stop while a
|
|
96
|
+
large file opens. It is styled by the same style rules as drawn
|
|
97
|
+
features, and a click reads its properties
|
|
98
|
+
([large data](docs/guides/large-data.md)).
|
|
99
|
+
|
|
100
|
+
### Export and load
|
|
101
|
+
|
|
102
|
+
Export in the native format to keep layers, groups, styles and images,
|
|
103
|
+
and load it to get the same state back. Export as GeoJSON to exchange
|
|
104
|
+
features with other tools. The store that holds the features can be
|
|
105
|
+
replaced, and every change is reported as an event
|
|
106
|
+
([save and load](docs/guides/save-load.md)).
|
|
107
|
+
|
|
108
|
+
### Read-only
|
|
109
|
+
|
|
110
|
+
A read-only mode and an interaction lock make pages that only show a
|
|
111
|
+
drawing ([read-only](docs/guides/read-only.md)).
|
|
112
|
+
|
|
113
|
+
### Extending
|
|
114
|
+
|
|
115
|
+
Extend it with plugins, custom modes and custom feature types
|
|
116
|
+
([plugins](docs/guides/plugins.md),
|
|
117
|
+
[custom types](docs/guides/custom-types.md)).
|
|
118
|
+
|
|
119
|
+
## Demos
|
|
120
|
+
|
|
121
|
+
Try them in the browser, with nothing to install.
|
|
122
|
+
|
|
123
|
+
- [Playground][demo]
|
|
124
|
+
- Every feature in one editor, with layer and property panels
|
|
125
|
+
- [Basic][ex-basic]
|
|
126
|
+
- Drawing polygons, the change events, saving and restoring
|
|
127
|
+
- [Export and load][ex-save-load]
|
|
128
|
+
- Export as GeoJSON and in the native format, loading files dropped on
|
|
129
|
+
the map
|
|
130
|
+
- [Style rules][ex-style-rules]
|
|
131
|
+
- The four kinds of style rule that color features by a property, with
|
|
132
|
+
a legend
|
|
133
|
+
- [Snapping and geometry][ex-snapping-and-geometry]
|
|
134
|
+
- Snapping, tracing a boundary, moving shared vertices, union,
|
|
135
|
+
subtract, buffer and split
|
|
136
|
+
- [3D terrain][ex-terrain]
|
|
137
|
+
- Drawing and selecting on 3D terrain
|
|
138
|
+
- [Read-only][ex-read-only]
|
|
139
|
+
- The read-only mode, the interaction lock and locked layers
|
|
140
|
+
- [Plugin][ex-plugin]
|
|
141
|
+
- A plugin with a hook and a mode of its own
|
|
142
|
+
- [Custom feature type][ex-custom-feature-type]
|
|
143
|
+
- A kind of feature with its own renderer and hit test
|
|
144
|
+
- [Datasets][ex-large-data]
|
|
145
|
+
- 50,000 cells colored by a property, and points fetched for the part
|
|
146
|
+
of the map in view
|
|
147
|
+
- [A million points][ex-columnar-worker]
|
|
148
|
+
- A million points read in a Worker
|
|
149
|
+
|
|
150
|
+
## Installation
|
|
151
|
+
|
|
152
|
+
```sh
|
|
153
|
+
npm install @sakuzu/maplibre-gl-draw
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
maplibre-gl is a peer dependency: the library uses the maplibre-gl
|
|
157
|
+
(`~6.11.1`) your application already has. If it is not installed yet,
|
|
158
|
+
npm 7 and later install it along.
|
|
159
|
+
|
|
160
|
+
## Usage
|
|
161
|
+
|
|
162
|
+
```ts
|
|
163
|
+
import * as maplibregl from 'maplibre-gl';
|
|
164
|
+
import 'maplibre-gl/dist/maplibre-gl.css';
|
|
165
|
+
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
|
|
166
|
+
import { createMapLibreGLDraw } from '@sakuzu/maplibre-gl-draw';
|
|
167
|
+
|
|
168
|
+
// maplibre-gl v6 needs its worker URL once per page (Vite shown here)
|
|
169
|
+
maplibregl.setWorkerUrl(workerUrl);
|
|
170
|
+
|
|
171
|
+
const map = new maplibregl.Map({
|
|
172
|
+
container: 'map',
|
|
173
|
+
style: 'https://tiles.openfreemap.org/styles/liberty',
|
|
174
|
+
center: [139.767, 35.681],
|
|
175
|
+
zoom: 12,
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
const draw = createMapLibreGLDraw(map);
|
|
179
|
+
|
|
180
|
+
// Your own button starts drawing. Click to add vertices; click the first
|
|
181
|
+
// vertex or press Enter to finish
|
|
182
|
+
document.querySelector('#polygon')?.addEventListener('click', () => {
|
|
183
|
+
draw.setMode('draw_polygon');
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
draw.on('draw.feature.create', ({ feature }) => {
|
|
187
|
+
console.log(feature.id, feature.type, feature.coordinates);
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
// Every feature as a GeoJSON FeatureCollection (a string)
|
|
191
|
+
document.querySelector('#save')?.addEventListener('click', () => {
|
|
192
|
+
const { data } = draw.export('geojson');
|
|
193
|
+
console.log(data);
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
The complete page is [examples/basic/](examples/basic/), and
|
|
198
|
+
[getting started](docs/getting-started.md) walks through it step by step.
|
|
199
|
+
|
|
200
|
+
## Compatibility
|
|
201
|
+
|
|
202
|
+
- maplibre-gl `~6.11.1` and WebGL2 are required.
|
|
203
|
+
- ES modules only, with TypeScript types. No framework is required
|
|
204
|
+
([frameworks](docs/guides/frameworks.md)).
|
|
205
|
+
|
|
206
|
+
## Limitations
|
|
207
|
+
|
|
208
|
+
- Features are drawn by this library's renderer inside a MapLibre GL JS
|
|
209
|
+
[custom layer][custom-layer]. They are not layers of the MapLibre style,
|
|
210
|
+
so MapLibre's `queryRenderedFeatures` and style expressions do not see
|
|
211
|
+
them. To look up features or change their colors, use this library's API
|
|
212
|
+
and events.
|
|
213
|
+
- Longitudes are handled in [-180, 180].
|
|
214
|
+
- Geometry operations are not available near the antimeridian or the
|
|
215
|
+
poles.
|
|
216
|
+
|
|
217
|
+
## Documentation
|
|
218
|
+
|
|
219
|
+
[docs/README.md](docs/README.md) lists every document in reading order:
|
|
220
|
+
getting started, the guides, the reference and the internals. Coming from
|
|
221
|
+
mapbox-gl-draw or terra-draw? See [migrating](docs/guides/migrating.md).
|
|
222
|
+
|
|
223
|
+
## Contributing
|
|
224
|
+
|
|
225
|
+
Development is described in [CONTRIBUTING.md](CONTRIBUTING.md). Pull
|
|
226
|
+
requests are welcome under the contributor license agreement in
|
|
227
|
+
[CLA.md](CLA.md); you keep the copyright in your contribution.
|
|
228
|
+
|
|
229
|
+
## License
|
|
230
|
+
|
|
231
|
+
Copyright (C) 2026 SAKAIDA Atsushi.
|
|
232
|
+
|
|
233
|
+
Licensed under the GNU Affero General Public License version 3
|
|
234
|
+
(`AGPL-3.0-only`). See [LICENSE](LICENSE) for the full text.
|
|
235
|
+
|
|
236
|
+
If the AGPL does not fit your product, a commercial license is available
|
|
237
|
+
from Kasika, Inc. (可視化技研株式会社): <https://www.kasika.xyz/>.
|
|
238
|
+
|
|
239
|
+
The notices of the third-party code this package contains are in
|
|
240
|
+
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
241
|
+
|
|
242
|
+
[maplibre]: https://maplibre.org/maplibre-gl-js/docs/
|
|
243
|
+
[custom-layer]: https://maplibre.org/maplibre-gl-js/docs/API/interfaces/CustomLayerInterface/
|
|
244
|
+
[demo]: https://sakuzu.github.io/maplibre-gl-draw/
|
|
245
|
+
[api]: https://sakuzu.github.io/maplibre-gl-draw/api/
|
|
246
|
+
[ex-basic]: https://sakuzu.github.io/maplibre-gl-draw/examples/basic/
|
|
247
|
+
[ex-save-load]: https://sakuzu.github.io/maplibre-gl-draw/examples/save-load/
|
|
248
|
+
[ex-style-rules]: https://sakuzu.github.io/maplibre-gl-draw/examples/style-rules/
|
|
249
|
+
[ex-snapping-and-geometry]: https://sakuzu.github.io/maplibre-gl-draw/examples/snapping-and-geometry/
|
|
250
|
+
[ex-terrain]: https://sakuzu.github.io/maplibre-gl-draw/examples/terrain/
|
|
251
|
+
[ex-read-only]: https://sakuzu.github.io/maplibre-gl-draw/examples/read-only/
|
|
252
|
+
[ex-plugin]: https://sakuzu.github.io/maplibre-gl-draw/examples/plugin/
|
|
253
|
+
[ex-custom-feature-type]: https://sakuzu.github.io/maplibre-gl-draw/examples/custom-feature-type/
|
|
254
|
+
[ex-large-data]: https://sakuzu.github.io/maplibre-gl-draw/examples/large-data/
|
|
255
|
+
[ex-columnar-worker]: https://sakuzu.github.io/maplibre-gl-draw/examples/columnar-worker/
|