- 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 via d3.
- iD uses d3 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.
- Fork this project. We eagerly accept pull requests.
- See open issues in the issue tracker if you're looking for something to do
- 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
iD and run
python -m SimpleHTTPServer
How it works
We store technical notes in 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
/mapdata from osm, parses this data and delivers it to the Graph
id -> osm object
- History: stores multiple graphs which represent undo states
- Map has-a Tiles
- Map has-a Connection
- Map has-a History
- History has-many Graphs
This project has a few basic guidelines for incoming code. The cardinal rules are:
- Soft tabs only
- Everything should pass jshint without warning
- Never write bugs
(you can write bugs). If you need a style guide, AirBNB has a decent one.
Come on in, the water's lovely. More help? Ping RichardF or tmcw on IRC
#osm), on the OSM mailing lists or at