mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-14 17:52:55 +00:00
79 lines
3.1 KiB
Markdown
79 lines
3.1 KiB
Markdown
# iD - friendly JavaScript editor for OpenStreetMap
|
|
|
|
[](http://geowiki.com/iD/)
|
|
|
|
[Try the online demo of the most recent code.](http://geowiki.com/iD/)
|
|
|
|
## Basics
|
|
|
|
* iD is a JavaScript-based [OpenStreetMap](http://www.openstreetmap.org/) editor.
|
|
* It's intentionally simple. This is not a 90% editor -
|
|
not even a 70% editor. It should let you do the most basic tasks while
|
|
not breaking other people's data. Nothing more. (Same goes for the code,
|
|
so go easy on the abstraction. :) )
|
|
* We're aiming to support modern desktop browsers and mobile browsers. The map
|
|
rendering uses [SVG](http://en.wikipedia.org/wiki/Scalable_Vector_Graphics) via
|
|
[d3](http://d3js.org/).
|
|
|
|
## Architecture
|
|
|
|
* iD uses [d3](http://d3js.org/) for graphics & managing databindings to the
|
|
map. There's a tiny tiled-map core, but the majority of the action is in
|
|
dynamic rendering of the editable map data.
|
|
* This project aims to create a usable object model of [OpenStreetMap data](http://wiki.openstreetmap.org/wiki/Tags)
|
|
in Javascript that can be transformed by actions and serialized back into
|
|
[changesets](http://wiki.openstreetmap.org/wiki/Changeset)
|
|
|
|
## Getting started
|
|
|
|
* Fork this project. We eagerly accept pull requests.
|
|
* See [open issues in the issue tracker if you're looking for something to do](https://github.com/systemed/iD/issues?state=open)
|
|
* All the code is in js/iD.
|
|
|
|
To run the code locally, just fork this project and run it from a local webserver.
|
|
With a Mac, you can enable Web Sharing and drop this in your website directory.
|
|
|
|
If you have Python handy, just `cd` into `iD` and run
|
|
|
|
python -m SimpleHTTPServer
|
|
|
|
## How it works
|
|
|
|
The code inherits many elements from the [Potlatch 2](http://wiki.openstreetmap.org/wiki/Potlatch_2)
|
|
and [JOSM](http://josm.openstreetmap.de/) editors.
|
|
|
|
We store technical notes in [NOTES.md](https://github.com/systemed/iD/blob/master/NOTES.md). The
|
|
basic architecture is as follows:
|
|
|
|
* Map: vector rendering, panning behaviors & zoom/center state
|
|
* Tiles: receives map centers & draw tiles as a background for iD
|
|
* Connection: requests `/map` data from osm, parses this data and delivers it to the Graph
|
|
* Graph: stores a javascript object of `id -> osm object`
|
|
* History: stores multiple graphs which represent undo states
|
|
|
|
Relationships:
|
|
|
|
* Map has-a Tiles
|
|
* Map has-a Connection
|
|
* Map has-a History
|
|
* History has-many Graphs
|
|
|
|
## Coding tips
|
|
|
|
This project has a few basic guidelines for incoming code. The cardinal rules are:
|
|
|
|
1. Soft tabs only
|
|
2. Everything should pass [jshint](http://www.jshint.com/) without warning
|
|
3. Never write bugs
|
|
|
|
(you can write bugs). If you need a style guide, [AirBNB has a decent one.](https://github.com/airbnb/javascript)
|
|
|
|
Come on in, the water's lovely. More help? Ping RichardF or tmcw on IRC
|
|
(`irc.oftc.net`, in `#osm-dev` or `#osm`), on the OSM mailing lists or at
|
|
richard@systemeD.net.
|
|
|
|
## License
|
|
|
|
iD is available under the [WTFPL](http://sam.zoy.org/wtfpl/), though obviously, if you want to dual-license
|
|
any contributions that's cool. It includes [d3js](http://d3js.org/), which BSD-licensed.
|