Skip to content

Latest commit

 

History

History
46 lines (31 loc) · 2.35 KB

README.md

File metadata and controls

46 lines (31 loc) · 2.35 KB

Scheme Sketcher library

NOTE: This repo isn't ready for use yet. It's currently being refactored from https://github.com/acteng/atip.

This is a library for building Svelte web apps to edit GeoJSON files with MapLibre. It includes:

  • a toolbox for drawing points, linestrings, and polygons, optionally snapping to a network
  • state management -- GeoJSON is autosaved to local storage, with filesystem download and upload. General undo support is planned.
  • layers -- objects can be grouped into distinct layers, moved around, hidden, etc

This library is higher-level than collections of drawing tools, such as mapbox-gl-draw and terra-draw. If you want individual tools, see route_snapper and maplibre-draw-polygon. If you don't want opinionated state management and layers, then don't use this.

Design choices / non-goals

  • There are assumptions about how this library is used -- like there's only one set of controls instantiated per page, so singletons in Svelte stores are fine.
  • Controls are styled using the GOV.UK Design System. This isn't planned to be configurable yet.
  • Map styling is also hardcoded here.
    • Improvements to components should be made here and compatible with the few planned users. When users need more control, we'll explore tradeoffs between copying a bit of code and making things configurabl here. Making everything configurable adds lots of complexity, so won't be a first choice.

Setup

TODO: Document all of these

  • setting things in config
    • map store
    • ownership of gjSchemeCollection and initialization gotchas
  • govuk
  • static assets
  • z-order
  • making forms and designing a schema
  • mapStyle
  • maybe change UserSettings local storage sync / key

Immediate TODOs

  • upgrade packages
  • consider renaming "intervention" and "scheme"

Current users

Developer guide

This is a fairly standard Sveltekit project. src/lib is the library meant for use by others, and src/routes is a demo site using it. npm i, then npm run dev to develop locally.