mirror of
https://github.com/FoggedLens/iD.git
synced 2026-03-30 08:50:32 +02:00
Merge branch 'master' into Psigio-3375
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -8,3 +8,10 @@ dist/mapillary-js/
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
transifex.auth
|
||||
|
||||
# autogenerated symlinks
|
||||
land.html
|
||||
img
|
||||
css/img
|
||||
test/css
|
||||
test/img
|
||||
|
||||
@@ -2,4 +2,5 @@ language: node_js
|
||||
node_js:
|
||||
- "4"
|
||||
- "6"
|
||||
- "7"
|
||||
sudo: false
|
||||
|
||||
147
API.md
147
API.md
@@ -8,8 +8,8 @@ iD supports several URL parameters. When constructing a URL to a standalone inst
|
||||
of iD (e.g. `http://openstreetmap.us/iD/release/`), the following parameters are available
|
||||
in the hash portion of the URL:
|
||||
|
||||
* `map` - A slash separated `zoom/longitude/latitude`. Example:
|
||||
`map=20.00/-77.02271/38.90085`
|
||||
* `map` - A slash separated `zoom/latitude/longitude`. Example:
|
||||
`map=20.00/38.90085/-77.02271`
|
||||
* `id` - The character 'n', 'w', or 'r', followed by the OSM ID of a node,
|
||||
way or relation, respectively. Selects the specified entity, and, unless
|
||||
a `map` parameter is also provided, centers the map on it.
|
||||
@@ -35,8 +35,7 @@ When constructing a URL to an instance of iD embedded in the OpenStreetMap Rails
|
||||
Port (e.g. `http://www.openstreetmap.org/edit?editor=id`), the following parameters
|
||||
are available as regular URL query parameters:
|
||||
|
||||
* `map` - slash separated `zoom/latitude/longitude`. Example:
|
||||
`map=20.00/38.90085/-77.02271`.
|
||||
* `map` - same as standalone
|
||||
* `lat`, `lon`, `zoom` - Self-explanatory.
|
||||
* `node`, `way`, `relation` - Select the specified entity.
|
||||
* `background` - same as standalone
|
||||
@@ -138,37 +137,137 @@ class.
|
||||
|
||||
Elements that are currently selected shall have the `.selected` class.
|
||||
|
||||
|
||||
## Customized Deployments
|
||||
|
||||
iD is used to edit data outside of the OpenStreetMap environment. There are some basic configuration steps to introduce custom presets, imagery and tag information.
|
||||
iD may be used to edit maps in a non-OpenStreetMap environment. This requires
|
||||
certain parts of the iD code to be replaced at runtime by custom code or data.
|
||||
|
||||
iD is written in a modular style and bundled with [rollup.js](http://rollupjs.org/),
|
||||
which makes hot code replacement tricky. (ES6 module exports are
|
||||
[immutable live bindings](http://www.2ality.com/2015/07/es6-module-exports.html)).
|
||||
Because of this, the parts of iD which are designed for customization are exported
|
||||
as live bound objects that can be overriden at runtime _before initializing the iD context_.
|
||||
|
||||
### Services
|
||||
|
||||
The `iD.services` object includes code that talks to other web services.
|
||||
|
||||
To replace the OSM service with a custom service that exactly mimics the default OSM service:
|
||||
```js
|
||||
iD.services.osm = serviceMyOSM;
|
||||
```
|
||||
|
||||
Some services may be removed entirely. For example, to remove the Mapillary service:
|
||||
```js
|
||||
iD.services.mapillary = undefined;
|
||||
// or
|
||||
delete iD.services.mapillary;
|
||||
```
|
||||
|
||||
|
||||
### Background Imagery
|
||||
|
||||
iD's background imagery database is stored in the `iD.data.imagery` array and can be
|
||||
overridden or modified prior to creating the iD context.
|
||||
|
||||
Note that the "None" and "Custom" options will always be shown in the list.
|
||||
|
||||
To remove all imagery from iD:
|
||||
```js
|
||||
iD.data.imagery = [];
|
||||
```
|
||||
|
||||
To replace all imagery with a single source:
|
||||
```js
|
||||
iD.data.imagery = [{
|
||||
"id": "ExampleImagery",
|
||||
"name": "My Imagery",
|
||||
"type": "tms",
|
||||
"template": "http://{switch:a,b,c}.tiles.example.com/{z}/{x}/{y}.png"
|
||||
}];
|
||||
```
|
||||
|
||||
Each imagery source should have the following properties:
|
||||
* `id` - Unique identifier for this source (also used as a url paramater)
|
||||
* `name` - Display name for the source
|
||||
* `type` - Source type, currently only `tms` is supported
|
||||
* `template` - Url template, valid replacement tokens include:
|
||||
* `{z}`, `{x}`, `{y}` - for Z/X/Y scheme
|
||||
* `{-y}` or `{ty}` - for flipped Y
|
||||
* `{u}` - for quadtile scheme
|
||||
* `{switch:a,b,c}` - for parts of the url that can be cycled for connection parallelization
|
||||
|
||||
Optional properties:
|
||||
* `description` - A longer source description which, if included, will be displayed in a popup when viewing the background imagery list
|
||||
* `overlay` - If `true`, this is an overlay layer (a transparent layer rendered above base imagery layer). Defaults to `false`
|
||||
* `scaleExtent` - Allowable min and max zoom levels, defaults to `[0, 20]`
|
||||
* `polygon` - Array of coordinate rings within which imagery is valid. If omitted, imagery is assumed to be valid worldwide
|
||||
* `overzoom` - Can this imagery be scaled up when zooming in beyond the max zoom? Defaults to `true`
|
||||
* `terms_url` - Url to link to when displaying the imagery terms
|
||||
* `terms_html` - Html content to display in the imagery terms
|
||||
* `terms_text` - Text content to display in the imagery terms
|
||||
* `best` - If set to `true`, this imagery is considered "better than Bing" and may be chosen by default when iD starts. Will display with a star in the background imagery list. Defaults to `false`
|
||||
|
||||
For more details about the `iD.data.imagery` structure, see
|
||||
[`update_imagery.js`](https://github.com/openstreetmap/iD/blob/master/data/update_imagery.js).
|
||||
|
||||
|
||||
### Presets
|
||||
|
||||
iD can use external presets exclusively or along with the default OpenStreetMap presets. This is configured using the `context.presets` accessor. To use external presets alone, initialize the iD context with a custom `Presets` object:
|
||||
iD's preset database is stored in the `iD.data.presets` object and can be overridden
|
||||
or modified prior to creating the iD context.
|
||||
|
||||
The format of the `presets` object is
|
||||
[documented here](https://github.com/openstreetmap/iD/tree/master/data/presets#custom-presets).
|
||||
|
||||
To add a new preset to iD's existing preset database.
|
||||
```js
|
||||
|
||||
var id = iD.Context(window)
|
||||
.presets(customPresets)
|
||||
.imagery(iD.dataImagery);
|
||||
|
||||
iD.data.presets.presets["aerialway/zipline"] = {
|
||||
geometry: ["line"],
|
||||
fields: ["incline"],
|
||||
tags: { "aerialway": "zip_line" },
|
||||
name: "Zipline"
|
||||
};
|
||||
```
|
||||
|
||||
The format of the Preset object is [documented here](https://github.com/openstreetmap/iD/tree/master/data/presets#custom-presets).
|
||||
|
||||
### Imagery
|
||||
|
||||
Just like Presets, Imagery can be configured using the `context.imagery` accessor:
|
||||
|
||||
To completely replace iD's default presets with your own:
|
||||
```js
|
||||
|
||||
var id = iD.Context(window)
|
||||
.presets(customPresets)
|
||||
.imagery(customImagery);
|
||||
|
||||
iD.data.presets = myPresets;
|
||||
```
|
||||
|
||||
The Imagery object should follow the structure defined by [editor-layer-index](https://github.com/osmlab/editor-layer-index/blob/gh-pages/schema.json)
|
||||
To run iD with the minimal set of presets that only match basic geometry types:
|
||||
```js
|
||||
iD.data.presets = {
|
||||
presets: {
|
||||
"area": {
|
||||
"name": "Area",
|
||||
"tags": {},
|
||||
"geometry": ["area"]
|
||||
},
|
||||
"line": {
|
||||
"name": "Line",
|
||||
"tags": {},
|
||||
"geometry": ["line"]
|
||||
},
|
||||
"point": {
|
||||
"name": "Point",
|
||||
"tags": {},
|
||||
"geometry": ["point"]
|
||||
},
|
||||
"vertex": {
|
||||
"name": "Vertex",
|
||||
"tags": {},
|
||||
"geometry": ["vertex"]
|
||||
},
|
||||
"relation": {
|
||||
"name": "Relation",
|
||||
"tags": {},
|
||||
"geometry": ["relation"]
|
||||
}
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
### Minimum Editable Zoom
|
||||
@@ -177,7 +276,7 @@ The minimum zoom at which iD enters the edit mode is configured using the `conte
|
||||
|
||||
```js
|
||||
|
||||
var id = iD.Context(window).
|
||||
var id = iD.Context()
|
||||
.minEditableZoom(zoom_level)
|
||||
|
||||
```
|
||||
|
||||
199
ARCHITECTURE.md
199
ARCHITECTURE.md
@@ -1,59 +1,74 @@
|
||||
## d3
|
||||
## iD Architecture
|
||||
|
||||
iD is written in a modular code style using ES6 modules. The modules are bundled
|
||||
with [rollup.js](http://rollupjs.org/). iD eventually aims to be a reusable,
|
||||
modular library to kickstart other JavaScript-based tools for OpenStreetMap.
|
||||
|
||||
### d3
|
||||
|
||||
[d3](http://d3js.org/) is the primary library used by iD. It is used for
|
||||
rendering the map data as well as many sorts of general DOM manipulation tasks
|
||||
for which jQuery would often be used.
|
||||
|
||||
Notable features of d3 that are used by iD include
|
||||
[d3.xhr](https://github.com/mbostock/d3/wiki/Requests#wiki-d3_xhr), which is
|
||||
[d3.request](https://github.com/d3/d3/blob/master/API.md#requests-d3-request), which is
|
||||
used to make the API requests to download data from openstreetmap.org and save
|
||||
changes;
|
||||
[d3.dispatch](https://github.com/mbostock/d3/wiki/Internals#wiki-d3_dispatch),
|
||||
[d3.dispatch](https://github.com/d3/d3/blob/master/API.md#dispatches-d3-dispatch),
|
||||
which provides a callback-based [Observer
|
||||
pattern](http://en.wikipedia.org/wiki/Observer_pattern) between different
|
||||
parts of iD;
|
||||
[d3.geoPath](https://github.com/mbostock/d3/wiki/Geo-Paths#wiki-path), which
|
||||
[d3.geoPath](https://github.com/d3/d3/blob/master/API.md#paths), which
|
||||
generates SVG paths for lines and areas; and
|
||||
[d3.behavior.zoom](https://github.com/mbostock/d3/wiki/Zoom-Behavior#wiki-zoom),
|
||||
[d3.zoom](https://github.com/d3/d3/blob/master/API.md#zooming-d3-zoom),
|
||||
which implements map panning and zooming.
|
||||
|
||||
## Core
|
||||
|
||||
The iD *core* implements OSM data types, a graph of OSM objects'
|
||||
relationships to one another, an undo/redo history for changes made during
|
||||
editing, and a couple of important auxiliary classes. It eventually aims
|
||||
to be a reusable, modular library to kickstart other JavaScript-based
|
||||
tools for OpenStreetMap.
|
||||
### Core Module
|
||||
|
||||
The OSM data model includes three basic data types: nodes, ways, and
|
||||
relations.
|
||||
The iD *core* module implements the basic datastructures needed to support
|
||||
browser-based editing:
|
||||
|
||||
* A _node_ is a point type, having a single geographic coordinate.
|
||||
* A _way_ is an ordered list of nodes.
|
||||
* A _relation_ groups together nodes, ways, and other relations to provide
|
||||
* `iD.coreContext` - container for all iD "global" objects and bootstrap code
|
||||
* `iD.coreGraph` - graph of objects and their relationships to one another
|
||||
* `iD.coreHistory` - undo/redo history for changes made during editing
|
||||
* `iD.coreDifference` - efficiently determine the difference between two graphs
|
||||
* `iD.coreTree` - performs fast spatial indexing of the loaded objects
|
||||
|
||||
### OSM Module
|
||||
|
||||
The iD *osm* module includes classes which represent the basic OpenStreetMap
|
||||
objects: nodes, ways, and relations.
|
||||
|
||||
* `iD.osmNode` - a _node_ is a point type, having a single geographic coordinate
|
||||
* `iD.osmWay` - a _way_ is an ordered list of nodes
|
||||
* `iD.osmRelation` - a _relation_ groups together nodes, ways, and other relations to provide
|
||||
free-form higher-level structures.
|
||||
|
||||
Each of these three types has _tags_: an associative array of key-value pairs which
|
||||
Each of these three types has _tags_: an associative array of key-value pairs which
|
||||
describe the object.
|
||||
|
||||
In iD, these three types are implemented by `iD.Node`, `iD.Way` and
|
||||
`iD.Relation`. These three classes inherit from a common base, `iD.Entity`.
|
||||
* `iD.osmEntity` - common base class for `iD.osmNode`, `iD.osmWay`, `iD.osmRelation`
|
||||
|
||||
These three classes inherit from a common base, `iD.osmEntity`.
|
||||
This is the only use of classical inheritance in iD, but it's justified
|
||||
by the common functionality of the types. Generically, we refer to a
|
||||
by the common functionality of the types. Generically, we refer to a
|
||||
node, way or relation as an _entity_.
|
||||
|
||||
Every entity has an _ID_ either assigned by the OSM database or
|
||||
a negative, local identifier assigned by iD for newly-created objects.
|
||||
IDs from the OSM database as treated as opaque strings; no
|
||||
Every entity has a unique numeric `id`. By convention, positive numbers are
|
||||
assigned by the OSM database for saved features, and negative numbers are
|
||||
assigned by the iD editor for local newly-created objects.
|
||||
|
||||
`id` values from the OSM database as treated as opaque strings; no
|
||||
[assumptions](http://lists.openstreetmap.org/pipermail/dev/2013-February/026495.html)
|
||||
are made of them other than that they can be compared for identity and do not
|
||||
begin with a minus sign (and thus will not conflict with proxy IDs). The three
|
||||
types of entities have separate ID spaces: a
|
||||
node can have the same numeric ID as a way or a relation. Instead of segregating
|
||||
ways, nodes, and other entities into different datastructures,
|
||||
iD internally uses fully-unique IDs generated by prefixing
|
||||
each OSM ID with the first letter of the entity type. For example, a way
|
||||
with OSM ID 123456 is represented as 'w123456' within iD.
|
||||
begin with a minus sign (and thus will not conflict with local `id` values).
|
||||
The three types of entities have separate `id` spaces: a node can have the
|
||||
same numeric `id` as a way or a relation. Instead of segregating ways, nodes,
|
||||
and other entities into different datastructures, iD internally uses fully-unique
|
||||
`id` values generated by prefixing each OSM ID with the first letter of the entity
|
||||
type. For example, a way with OSM `id` `123456` is represented as `w123456`
|
||||
within iD.
|
||||
|
||||
iD entities are *immutable*: once constructed, an `Entity` object cannot
|
||||
change. Tags cannot be updated; nodes cannot be added or removed from ways,
|
||||
@@ -66,19 +81,30 @@ structure](http://en.wikipedia.org/wiki/Persistent_data_structure).
|
||||
|
||||
Since iD is an editor, it must allow for new versions of entities. The
|
||||
solution is that all edits produce new copies of anything that changes. At the
|
||||
entity level, this takes the form of methods such as `iD.Node#move`, which
|
||||
returns a new node object that has the same ID and tags as the original, but a
|
||||
different coordinate. More generically, `iD.Entity#update` returns a new
|
||||
entity of the same type and ID as the original but with specified properties
|
||||
entity level, this takes the form of methods such as `iD.osmNode#move`, which
|
||||
returns a new node object that has the same `id` and `tags` as the original, but a
|
||||
different `loc` coordinate. More generically, `iD.osmEntity#update` returns
|
||||
a new entity of the same type and `id` as the original but with specified properties
|
||||
such as `nodes`, `tags`, or `members` replaced.
|
||||
|
||||

|
||||
|
||||
Entities are related to one another: ways have many nodes and relations have
|
||||
many members. To render a map of a certain area, iD needs a
|
||||
many members.
|
||||
|
||||
The osm module also includes code related to special kinds of objects in OpenStreetMap.
|
||||
|
||||
* `iD.osmIntersection` - code for working with turn restrictions
|
||||
* `iD.osmLanes` - code for working with traffic and turn lanes
|
||||
* `iD.osmMultipolygon` - code for working with multipolygon relations
|
||||
|
||||
|
||||
### Editing OSM
|
||||
|
||||
To render a map of a certain area, iD needs a
|
||||
datastructure to hold all the entities in that area and traverse these
|
||||
relationships. `iD.Graph` provides this functionality. The core of a graph is
|
||||
a map between IDs and the associated entities; given an ID, the graph can give
|
||||
relationships. `iD.coreGraph` provides this functionality. The core of a graph is
|
||||
a map between `id`s and the associated entities; given an `id`, the graph can give
|
||||
you the entity. Like entities, a graph is immutable: adding, replacing, or
|
||||
removing an entity produces a new graph, and the original is unchanged.
|
||||
Because entities are immutable, the original and new graphs can minimize
|
||||
@@ -87,7 +113,7 @@ copying the entire graph.
|
||||
This persistent data structure approach is similar to the internals of
|
||||
the [git](http://git-scm.com/) revision control system.
|
||||
|
||||
The final major component of the core is `iD.History`, which tracks the changes
|
||||
The final major component of the core is `iD.coreHistory`, which tracks the changes
|
||||
made in an editing session and provides undo/redo capabilities. Here, the
|
||||
immutable nature of the core types really pays off: the history is a simple
|
||||
stack of graphs, each representing the state of the data at a particular point
|
||||
@@ -102,41 +128,41 @@ Instead of changing a single copy of local data and having to implement
|
||||
an 'undo' for each specific action, actions in iD do not need to be aware
|
||||
of history and the undo system.
|
||||
|
||||
Finally, we have the auxiliary classes `iD.Difference` and `iD.Tree`.
|
||||
Finally, we have the auxiliary classes `iD.coreDifference` and `iD.coreTree`.
|
||||
|
||||
`iD.Difference` encapsulates the difference between two graphs, and knows how to calculate the
|
||||
`iD.coreDifference` encapsulates the difference between two graphs, and knows how to calculate the
|
||||
set of entities that were created, modified, or deleted, and need to be redrawn.
|
||||
|
||||
```js
|
||||
var a = iD.Graph(), b = iD.Graph();
|
||||
var a = iD.coreGraph(), b = iD.coreGraph();
|
||||
// (fill a & b with data)
|
||||
var difference = iD.Difference(a, b);
|
||||
var difference = iD.coreDifference(a, b);
|
||||
|
||||
// returns entities created between and b
|
||||
// returns entities created between a and b
|
||||
difference.created();
|
||||
```
|
||||
|
||||
`iD.Tree` calculates the set of downloaded entities that are visible in the
|
||||
`iD.coreTree` calculates the set of downloaded entities that are visible in the
|
||||
current map view. To calculate this quickly during map
|
||||
interaction, it uses an [R-tree](http://en.wikipedia.org/wiki/R-tree).
|
||||
|
||||
```js
|
||||
var graph = iD.Graph();
|
||||
var graph = iD.coreGraph();
|
||||
// (load OSM data into graph)
|
||||
|
||||
// this tree indexes the contents of the graph
|
||||
var tree = iD.Tree(graph);
|
||||
var tree = iD.coreTree(graph);
|
||||
|
||||
// quickly pull all features that intersect with an extent
|
||||
var features = tree.intersects(
|
||||
iD.geoExtent([0, 0], [2, 2]), tree.graph());
|
||||
```
|
||||
|
||||
## Actions
|
||||
### Actions Module
|
||||
|
||||
In iD, an _action_ is a function that accepts a graph as input and returns a
|
||||
new, modified graph as output. Actions typically need other inputs as well; for
|
||||
example, `iD.actionDeleteNode` also requires the ID of a node to delete. The
|
||||
example, `iD.actionDeleteNode` also requires the `id` of a node to delete. The
|
||||
additional input is passed to the action's constructor:
|
||||
|
||||
```js
|
||||
@@ -165,10 +191,10 @@ knowledge of the OpenStreetMap data model. It is our hope that JavaScript
|
||||
based tools for OpenStreetMap can reuse the iD's core implementation,
|
||||
significantly reducing the work necessary to create a robust tool.
|
||||
|
||||
## Modes
|
||||
### Modes Module
|
||||
|
||||
With _modes_, we shift gears from abstract data types and algorithms to the
|
||||
parts of the architecture that implement the user interface for iD. Modes are
|
||||
parts of the architecture that implement the user interface for iD. Modes are
|
||||
manifested in the interface by the three buttons at the top left:
|
||||
|
||||

|
||||
@@ -199,7 +225,7 @@ The `exit` mode does the opposite, removing the behavior installed by the
|
||||
and exclusive: each mode knows exactly the behavior that is specific to that
|
||||
mode, and exactly one mode's behavior is active at any time.
|
||||
|
||||
## Behavior
|
||||
### Behavior Module
|
||||
|
||||
Certain behaviors are common to more than one mode. For example, iD indicates
|
||||
interactive map elements by drawing a halo around them when you hover over
|
||||
@@ -208,7 +234,7 @@ of duplicating the code to implement this behavior in all these modes, we
|
||||
extract it to `iD.behaviorHover`.
|
||||
|
||||
_Behaviors_ take their inspiration from [d3's
|
||||
behaviors](https://github.com/mbostock/d3/wiki/Behaviors). Like d3's `zoom`
|
||||
behaviors](https://github.com/d3/d3/blob/master/API.md). Like d3's `zoom`
|
||||
and `drag`, each iD behavior is a function that takes as input a d3 selection
|
||||
(assumed to consist of a single element) and installs the DOM event bindings
|
||||
necessary to implement the behavior. The `Hover` behavior, for example,
|
||||
@@ -223,12 +249,12 @@ Each behavior implements an `off` function that "uninstalls" the behavior.
|
||||
This is very similar to the `exit` method of a mode, and in fact many modes do
|
||||
little else but uninstall behaviors in their `exit` methods.
|
||||
|
||||
## Operations
|
||||
### Operations Module
|
||||
|
||||
_Operations_ wrap actions, providing their user-interface: tooltips, key
|
||||
bindings, and the logic that determines whether an action can be validly
|
||||
performed given the current map state and selection. Each operation is
|
||||
constructed with the list of IDs which are currently selected and a `context`
|
||||
constructed with the list of `id`s which are currently selected and a `context`
|
||||
object which provides access to the history and other important parts of iD's
|
||||
internal state. After being constructed, an operation can be queried as to
|
||||
whether or not it should be made available (i.e., show up in the context menu)
|
||||
@@ -250,11 +276,11 @@ the history, and then enter the appropriate mode. For example,
|
||||
`iD.operationSplit` performs `iD.actionSplit`, then enters
|
||||
`iD.modeSelect` with the resulting ways selected.
|
||||
|
||||
## Map Rendering
|
||||
### Renderer and SVG Modules
|
||||
|
||||
Finally, we get to the parts of iD that actually draw and manipulate the map
|
||||
entities on screen. The rendering is coordinated by `iD.Map`, which takes care
|
||||
of setting up a [Spherical Mercator](http://bl.ocks.org/mbostock/3757132)
|
||||
entities on screen. The rendering is coordinated by `iD.rendererMap`, which
|
||||
takes care of setting up a [Spherical Mercator](http://bl.ocks.org/mbostock/3757132)
|
||||
projection and the [zoom
|
||||
behavior](https://github.com/mbostock/d3/wiki/Zoom-Behavior), and provides
|
||||
accessors for such things as the current zoom level and map center.
|
||||
@@ -271,7 +297,7 @@ entity types of the OSM data model:
|
||||
|
||||
For each of these geometric types, `iD.svg` has a corresponding module:
|
||||
`iD.svgPoints`, `iD.svgVertices`, `iD.svgLines`, and `iD.svgAreas`. To
|
||||
render entities on screen, `iD.Map` delegates to these modules. Internally,
|
||||
render entities on screen, `iD.rendererMap` delegates to these modules. Internally,
|
||||
they make heavy use of [d3 joins](http://bost.ocks.org/mike/join/) to
|
||||
manipulate the SVG elements that visually represent the map entities. When an
|
||||
entity is rendered for the first time, it is part of the _enter_ selection,
|
||||
@@ -289,53 +315,44 @@ via CSS at either the key or key-value levels. SVG elements also receive a
|
||||
class corresponding to their entity type (`node`, `way`, or `relation`) and
|
||||
one corresponding to their geometry type (`point`, `line`, or `area`).
|
||||
|
||||
The `iD.svg` namespace has a few other modules that don't have a one-to-one
|
||||
The `iD.svg` module has a few other submodules that don't have a one-to-one
|
||||
correspondence with entities:
|
||||
|
||||
* `iD.svgMidpoints` renders the small "virtual node" at the midpoint between
|
||||
* `iD.svgMidpoints` - draws the small "virtual node" at the midpoint between
|
||||
two vertices.
|
||||
* `iD.svgLabels` renders the textual
|
||||
[labels](http://mapbox.com/osmdev/2013/02/12/labeling-id/).
|
||||
* `iD.svgLayers` sets up a number of layers that ensure that map elements
|
||||
* `iD.svgLabels` - draws textual labels
|
||||
* `iD.svgLayers` - sets up a number of layers that ensure that map elements
|
||||
appear in an appropriate z-order.
|
||||
* `iD.svgOsm` - sets up the OSM-specific data layers
|
||||
* `iD.svgGpx` - draws gpx traces
|
||||
* `iD.svgDebug` - draws debugging information
|
||||
|
||||
## Other UI
|
||||
### Other UI
|
||||
|
||||
iD provides a lot of user interface elements other than the core map component:
|
||||
the page footer, the interface for saving changes, the splash screen you see
|
||||
the first time you use iD, the geocoding and background layer controls, and the
|
||||
tag/preset editor, for example.
|
||||
the first time you use iD, the map controls, and the tag/preset editor, for example.
|
||||
|
||||

|
||||
|
||||
The implementations for all non-map UI components live in the `iD.ui` namespace.
|
||||
Many of the modules in this namespace follow a pattern for reusable d3
|
||||
The implementations for all non-map UI components live in the `iD.ui` module.
|
||||
Many of the submodules under the `ui` module follow a pattern for reusable d3
|
||||
components [originally suggested](http://bost.ocks.org/mike/chart/) by Mike
|
||||
Bostock in the context of charts. The entry point to a UI element is a
|
||||
constructor function, e.g. `iD.uiGeocoder()`. The constructor function may
|
||||
Bostock in the context of charts. The entry point to a UI element is a
|
||||
constructor function, e.g. `iD.uiViewOnOSM()`. The constructor function may
|
||||
require a set of mandatory arguments; for most UI components exactly one
|
||||
argument is required, a `context` object produced by the top-level `iD()`
|
||||
function.
|
||||
argument is required, a `context`.
|
||||
|
||||
A component needs some way to be rendered on screen by creating new DOM
|
||||
elements or manipulating existing elements. This is done by calling the
|
||||
component as a function, and passing a d3 selection where the component should
|
||||
render itself:
|
||||
The constructor function returns a draw function which accepts a d3 selection.
|
||||
Drawing is then accomplished with
|
||||
[d3.selection#call](https://github.com/d3/d3-selection/blob/master/README.md#selection_call):
|
||||
|
||||
```
|
||||
var container = d3.select('body').append('div')
|
||||
.attr('class', 'map-control geocode-control');
|
||||
```js
|
||||
footer = footer.enter()
|
||||
.append('div')
|
||||
.attr('class', 'footer')
|
||||
.merge(footer);
|
||||
|
||||
var geocoder = iD.uiGeocoder(context)(container);
|
||||
```
|
||||
|
||||
Alternatively, and more commonly, the same result is accomplished with
|
||||
[d3.selection#call](https://github.com/mbostock/d3/wiki/Selections#wiki-call):
|
||||
|
||||
```
|
||||
d3.select('body').append('div')
|
||||
.attr('class', 'map-control geocode-control')
|
||||
.call(iD.uiGeocoder(context));
|
||||
footer
|
||||
.call(uiViewOnOSM(context).entityID(entityID));
|
||||
```
|
||||
|
||||
Some components are reconfigurable, and some provide functionality beyond
|
||||
|
||||
30
CHANGELOG.md
30
CHANGELOG.md
@@ -1,18 +1,37 @@
|
||||
:warning: = Breaking change, may affect downstream projects or sites that embed iD.
|
||||
|
||||
## 2.0.1
|
||||
##### Nov 17, 2016
|
||||
* Bugfixes:
|
||||
* When starting iD with an object selected, the map should focus on that object (#3588, thanks @tyrasd)
|
||||
* Fix for "Best" imagery not being automatically selected (#3586)
|
||||
* Performance improvements:
|
||||
* Adjust max Mapillary pages fetched per zoom, adjust min viewfield zoom
|
||||
|
||||
## 2.0.0
|
||||
##### (coming soon)
|
||||
##### Nov 15, 2016
|
||||
* :warning: iD is now written in a modular code style using ES6 `import`/`export` and [rollup.js](http://rollupjs.org/) as a build tool (#3118, #3179, #3180)
|
||||
* Many thanks to @tmcw, @kepta, @tyrasd, @beaugunderson, @davidchouse
|
||||
* :warning: Flattened namespace means that all functions have changed names (#3479)
|
||||
* e.g. `iD.actions.Move` -> `iD.actionMove`, `iD.geo.Extent` -> `iD.geoExtent`
|
||||
* Many deprecated names are still exported as symbols, e.g. `iD.Context` - we will remove these eventually
|
||||
* :warning: Customized iD deployments can manipulate live objects, rather than iD.Context accessors
|
||||
* No longer need to call things like `presets()`, `imagery()`, `taginfo()` when creating `iD.Context`
|
||||
* See [API.md](https://github.com/openstreetmap/iD/blob/master/API.md#customized-deployments) for details on customized deployments
|
||||
* :warning: iD has upgraded to the latest released versions of d3, lodash, rbush, etc.
|
||||
* d3 no longer adds itself to the global namespace, but can now be accessed via `iD.d3`
|
||||
* :warning: iD now uses `npm` scripts for all build processes
|
||||
* iD requires Node v4 or higher, but does not require `make` anymore
|
||||
* Update install instructions and prerequisites (#3466, thanks @tyrasd)
|
||||
* :warning: iD url hash map order has changed to `zoom/latitude/longitude` to match OSM and others (#3554)
|
||||
* :warning: Authentication methods like `context.preauth`, `connection.switch`, `iD.uiSourceSwitch.keys` options have changed
|
||||
* `url` option has been renamed to `urlroot`
|
||||
* Many preset improvements:
|
||||
* Add Construction and Tower Type fields to Mast and Tower presets (#3561, thanks @bkil)
|
||||
* Add Turning Loop (Island) preset, adjust icons for traversable/nontraversable features (#3557)
|
||||
* Add Internet Cafe preset (#3559)
|
||||
* Improve styling of Farmyards (#3556, thanks @Thue)
|
||||
* Add Guest Apartment / Condo preset (#3548)
|
||||
* Add Waste Transfer preset (#3387)
|
||||
* Add Billboard preset (#3386)
|
||||
* Improve traffic calming presets (#3218)
|
||||
@@ -45,6 +64,14 @@
|
||||
* Add Ice Cream Shop preset (#3253, thanks @ankit-m)
|
||||
* Add Taiwan address format to Address field (#3261, thanks @david082321)
|
||||
* New Features:
|
||||
* `ui()` initializer now accepts a callback that will be called when loadLocale is finished (#3550)
|
||||
* Vertex keyboard navigation (#1917, #3539)
|
||||
* `[` or `pageup` - jump to previous vertex
|
||||
* `]` or `pagedown` - jump to next vertex
|
||||
* `⌘[` or `home` - jump to first vertex
|
||||
* `⌘]` or `end` - jump to last vertex
|
||||
* `\` or `pause-break` - select next parent, if at intersection
|
||||
* Address field improvements - eliminate duplicates, more dropdowns for address fields (#3553)
|
||||
* OSM API calls are now authenticated for logged in users (helps with (#3519, #2262)
|
||||
* When reversing a way, reverse tags on its child nodes (#3076, thanks @Psigio)
|
||||
* Support Right to Left interface for some languages 'ar', 'fa', 'iw', 'dv' (#3007, #3087, thanks @mapmeld)
|
||||
@@ -53,6 +80,7 @@
|
||||
* Allow `Del` key as a without modifier as a Delete shortcut (#3455)
|
||||
* Remove diacritics (accented chars) when doing fuzzy searches (#3159)
|
||||
* Bugfixes:
|
||||
* Prevent imagery offset nudging buttons from getting stuck if user clicks again (#3576)
|
||||
* Don't include terms for non-searchable presets in translation source (#3323)
|
||||
* Let user know if the documentation points to a redirect page (#3337)
|
||||
* Fix line labeling placement for IE11, Edge (#3020)
|
||||
|
||||
2
FAQ.md
2
FAQ.md
@@ -53,7 +53,7 @@ and [configure](https://github.com/openstreetmap/openstreetmap-website/blob/mast
|
||||
an instance of the Rails Port, the server that runs the OpenStreetMap website and API.
|
||||
|
||||
Once you have the Rails Port running, you may edit as normal using the version of iD that
|
||||
is bundled with it. Your changes will be saved to your own database. To use a standalone iD with your own api, you may edit the [connection.js](https://github.com/openstreetmap/iD/blob/master/js/id/core/connection.js) file.
|
||||
is bundled with it. Your changes will be saved to your own database. To use a standalone iD with your own api, you may edit the [osm.js](https://github.com/openstreetmap/iD/blob/master/modules/services/osm.js) file.
|
||||
|
||||
Depending on your requirements, you may also want to set up [cgimap](https://github.com/openstreetmap/cgimap)
|
||||
and/or a tile rendering stack, but neither of these are required for editing with iD.
|
||||
|
||||
10
README.md
10
README.md
@@ -41,13 +41,15 @@ Come on in, the water's lovely. More help? Ping `jfire` or `bhousel` on:
|
||||
|
||||
## Installation
|
||||
|
||||
Note: Windows users should run these steps in a shell started with "Run as administrator".
|
||||
This is only necessary the first time so that the build process can create symbolic links.
|
||||
|
||||
To run the current development version of iD on your own computer:
|
||||
|
||||
1. Create a local `git clone` of the project, then `cd` into the project folder
|
||||
2. (Windows Only) Run `fixWinSymlinks.bat`. This script will prompt for Administrator rights. see also: http://stackoverflow.com/questions/5917249/git-symlinks-in-windows
|
||||
3. Run `npm install` (this will run the `prepublish` script that builds everything)
|
||||
4. Run `npm start`
|
||||
5. Open `http://localhost:8080/` in a web browser
|
||||
2. Run `npm install` (this will run the `prepublish` script that builds everything)
|
||||
3. Run `npm start`
|
||||
4. Open `http://localhost:8080/` in a web browser
|
||||
|
||||
For guidance on building a packaged version, running tests, and contributing to
|
||||
development, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
79
RELEASING.md
79
RELEASING.md
@@ -1,51 +1,60 @@
|
||||
## Release Checklist
|
||||
|
||||
### Prerelease (several days prior)
|
||||
- [ ] Notify translators of impending release
|
||||
- Notify translators of impending release
|
||||
(https://www.transifex.com/projects/p/id-editor/announcements/)
|
||||
- [ ] Notify TomH
|
||||
- Notify TomH
|
||||
|
||||
### Prep
|
||||
- [ ] If you don't have a `transifex.auth` file in the root of your iD checkout,
|
||||
you'll need to create a Transifex account, ask @bhousel for admin rights
|
||||
on the iD project, and then create this file with contents
|
||||
like `{"user": "yourusername", "password": "*******"}`
|
||||
- If you don't have a `transifex.auth` file in the root of your iD checkout,
|
||||
you'll need to create a Transifex account, ask @bhousel for admin rights
|
||||
on the iD project, and then create this file with contents like<br><pre>
|
||||
{"user": "yourusername", "password": "*******"}</pre>
|
||||
|
||||
### Update master branch
|
||||
- [ ] git checkout master
|
||||
- [ ] npm run translations
|
||||
- [ ] git add . && git commit -m 'npm run translations'
|
||||
- [ ] npm run imagery
|
||||
- [ ] git add . && git commit -m 'npm run imagery'
|
||||
- [ ] Update `CHANGELOG.md`
|
||||
- [ ] Update version number in `modules/core/context.js`, `package.json`
|
||||
- [ ] git add . && git commit -m 'A.B.C'
|
||||
- [ ] git push origin master
|
||||
```bash
|
||||
$ git checkout master
|
||||
$ npm run translations
|
||||
$ git add . && git commit -m 'npm run translations'
|
||||
$ rm -rf node_modules/editor-layer-index/
|
||||
$ npm install
|
||||
$ npm run imagery
|
||||
$ npm run all
|
||||
$ git add . && git commit -m 'npm run imagery'
|
||||
$ Update `CHANGELOG.md`
|
||||
$ Update version number in `modules/core/context.js`, `package.json`
|
||||
$ git add . && git commit -m 'A.B.C'
|
||||
$ git push origin master
|
||||
```
|
||||
|
||||
### Update and tag release branch
|
||||
- [ ] git checkout release
|
||||
- [ ] git reset --hard master
|
||||
- [ ] npm run all
|
||||
- [ ] git add -f dist/*.css dist/*.js dist/img/*.svg dist/locales/*.json
|
||||
- [ ] git commit -m 'Check in build'
|
||||
- [ ] git tag vA.B.C
|
||||
- [ ] git push origin -f release vA.B.C
|
||||
```bash
|
||||
$ git checkout release
|
||||
$ git reset --hard master
|
||||
$ npm run all
|
||||
$ git add -f dist/*.css dist/*.js dist/img/*.svg dist/mapillary-js/
|
||||
$ git commit -m 'Check in build'
|
||||
$ git tag vA.B.C
|
||||
$ git push origin -f release vA.B.C
|
||||
```
|
||||
|
||||
### Update openstreetmap-website
|
||||
|
||||
#### Setup remotes (one time only)
|
||||
|
||||
- [ ] git remote add osmlab git@github.com:osmlab/openstreetmap-website.git
|
||||
- [ ] git remote add upstream git@github.com:openstreetmap/openstreetmap-website.git
|
||||
```bash
|
||||
$ git remote add osmlab git@github.com:osmlab/openstreetmap-website.git
|
||||
$ git remote add upstream git@github.com:openstreetmap/openstreetmap-website.git
|
||||
```
|
||||
|
||||
#### Sync master and update iD (every time)
|
||||
|
||||
- [ ] git fetch --all
|
||||
- [ ] git checkout master
|
||||
- [ ] git reset --hard upstream/master
|
||||
- [ ] git checkout -b iD-A.B.C
|
||||
- [ ] bundle install
|
||||
- [ ] rm -rf vendor/assets/iD/* && vendorer
|
||||
- [ ] git add . && git commit -m 'Update to iD vA.B.C'
|
||||
- [ ] git push osmlab
|
||||
- [ ] Open pull request
|
||||
```bash
|
||||
$ git fetch --all
|
||||
$ git checkout master
|
||||
$ git reset --hard upstream/master
|
||||
$ git checkout -b iD-A.B.C
|
||||
$ bundle install
|
||||
$ rm -rf vendor/assets/iD/* && vendorer
|
||||
$ git add . && git commit -m 'Update to iD vA.B.C'
|
||||
$ git push osmlab
|
||||
$ Open pull request
|
||||
```
|
||||
|
||||
55
build.js
55
build.js
@@ -1,15 +1,34 @@
|
||||
/* eslint-disable no-console */
|
||||
|
||||
var _ = require('lodash');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var glob = require('glob');
|
||||
var YAML = require('js-yaml');
|
||||
var jsonschema = require('jsonschema');
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs');
|
||||
const glob = require('glob');
|
||||
const jsonschema = require('jsonschema');
|
||||
const path = require('path');
|
||||
const shell = require('shelljs');
|
||||
const YAML = require('js-yaml');
|
||||
|
||||
const fieldSchema = require('./data/presets/schema/field.json');
|
||||
const presetSchema = require('./data/presets/schema/preset.json');
|
||||
const suggestions = require('name-suggestion-index/name-suggestions.json');
|
||||
|
||||
|
||||
// Create symlinks if necessary.. { 'target': 'source' }
|
||||
const symlinks = {
|
||||
'land.html': 'dist/land.html',
|
||||
'img': 'dist/img',
|
||||
'css/img': '../dist/img',
|
||||
'test/css': '../css',
|
||||
'test/img': '../dist/img'
|
||||
};
|
||||
|
||||
for (var target of Object.keys(symlinks)) {
|
||||
if (!shell.test('-L', target)) {
|
||||
console.log(`Creating symlink: ${target} -> ${symlinks[target]}`);
|
||||
shell.ln('-sf', symlinks[target], target);
|
||||
}
|
||||
}
|
||||
|
||||
var fieldSchema = require('./data/presets/schema/field.json');
|
||||
var presetSchema = require('./data/presets/schema/preset.json');
|
||||
var suggestions = require('name-suggestion-index/name-suggestions.json');
|
||||
|
||||
// Translation strings
|
||||
var tstrings = {
|
||||
@@ -20,12 +39,14 @@ var tstrings = {
|
||||
|
||||
|
||||
// Start clean
|
||||
unlink('data/presets/categories.json');
|
||||
unlink('data/presets/fields.json');
|
||||
unlink('data/presets/presets.json');
|
||||
unlink('data/presets.yaml');
|
||||
unlink('data/taginfo.json');
|
||||
unlink('dist/locales/en.json');
|
||||
shell.rm('-f', [
|
||||
'data/presets/categories.json',
|
||||
'data/presets/fields.json',
|
||||
'data/presets/presets.json',
|
||||
'data/presets.yaml',
|
||||
'data/taginfo.json',
|
||||
'dist/locales/en.json'
|
||||
]);
|
||||
|
||||
var categories = generateCategories();
|
||||
var fields = generateFields();
|
||||
@@ -54,10 +75,6 @@ fs.writeFileSync('dist/locales/en.json', JSON.stringify(en, null, 4));
|
||||
process.exit();
|
||||
|
||||
|
||||
function unlink(f) {
|
||||
try { fs.unlinkSync(f); } catch (e) { /* noop */ }
|
||||
}
|
||||
|
||||
function read(f) {
|
||||
return JSON.parse(fs.readFileSync(f, 'utf8'));
|
||||
}
|
||||
|
||||
10
css/app.css
10
css/app.css
@@ -2601,12 +2601,20 @@ img.tile-removing {
|
||||
text-align: right;
|
||||
width: 100%;
|
||||
padding: 0px 10px;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.api-status.offline,
|
||||
.api-status.readonly,
|
||||
.api-status.error {
|
||||
background: red;
|
||||
background: #a22;
|
||||
}
|
||||
|
||||
.api-status-login {
|
||||
color: #aaf;
|
||||
}
|
||||
.api-status-login:hover {
|
||||
color: #ccf;
|
||||
}
|
||||
|
||||
/* Modals
|
||||
|
||||
17
css/map.css
17
css/map.css
@@ -37,6 +37,7 @@ g.point .shadow {
|
||||
stroke-opacity: 0;
|
||||
}
|
||||
|
||||
g.point.related:not(.selected) .shadow,
|
||||
g.point.hover:not(.selected) .shadow {
|
||||
stroke-opacity: 0.5;
|
||||
}
|
||||
@@ -104,7 +105,9 @@ g.vertex.vertex-hover {
|
||||
display: block;
|
||||
}
|
||||
|
||||
g.vertex.related:not(.selected) .shadow,
|
||||
g.vertex.hover:not(.selected) .shadow,
|
||||
g.midpoint.related:not(.selected) .shadow,
|
||||
g.midpoint.hover:not(.selected) .shadow {
|
||||
fill-opacity: 0.5;
|
||||
}
|
||||
@@ -144,6 +147,7 @@ path.shadow {
|
||||
stroke-opacity: 0;
|
||||
}
|
||||
|
||||
path.shadow.related:not(.selected),
|
||||
path.shadow.hover:not(.selected) {
|
||||
stroke-opacity: 0.4;
|
||||
}
|
||||
@@ -408,6 +412,18 @@ path.stroke.tag-landuse-farmland {
|
||||
background-color: rgba(140, 208, 95, 0.2);
|
||||
}
|
||||
|
||||
path.stroke.tag-landuse-farmyard {
|
||||
stroke: rgb(245, 220, 186);
|
||||
}
|
||||
path.fill.tag-landuse-farmyard {
|
||||
stroke: rgba(245, 220, 186, 0.3);
|
||||
fill: rgba(245, 220, 186, 0.3);
|
||||
}
|
||||
.preset-icon-fill-area.tag-landuse-farmyard {
|
||||
border-color: rgb(245, 220, 186);
|
||||
background: rgba(245, 220, 186, 0.3);
|
||||
}
|
||||
|
||||
.pattern-color-cemetery,
|
||||
.pattern-color-orchard {
|
||||
fill: rgba(140, 208, 95, 0.2);
|
||||
@@ -1600,6 +1616,7 @@ text.gpx {
|
||||
stroke-width: 8;
|
||||
}
|
||||
|
||||
.fill-wireframe path.shadow.related:not(.selected),
|
||||
.fill-wireframe path.shadow.hover:not(.selected) {
|
||||
stroke-opacity: 0.4;
|
||||
}
|
||||
|
||||
@@ -187,6 +187,7 @@ en:
|
||||
localized_translation_language: Choose language
|
||||
localized_translation_name: Name
|
||||
zoom_in_edit: Zoom in to Edit
|
||||
login: login
|
||||
logout: logout
|
||||
loading_auth: "Connecting to OpenStreetMap..."
|
||||
report_a_bug: Report a bug
|
||||
@@ -198,6 +199,7 @@ en:
|
||||
error: Unable to connect to API.
|
||||
offline: The API is offline. Please try editing later.
|
||||
readonly: The API is read-only. You will need to wait to save your changes.
|
||||
rateLimit: The API is limiting anonymous connections. You can fix this by logging in.
|
||||
commit:
|
||||
title: Save Changes
|
||||
description_placeholder: Brief description of your contributions (required)
|
||||
@@ -285,7 +287,7 @@ en:
|
||||
switch: Switch back to this background
|
||||
custom: Custom
|
||||
custom_button: Edit custom background
|
||||
custom_prompt: "Enter a tile URL template. Valid tokens are {z}, {x}, {y} for Z/X/Y scheme and {u} for quadtile scheme."
|
||||
custom_prompt: "Enter a tile URL template. Valid tokens are {zoom}, {x}, {y} for Z/X/Y scheme and {u} for quadtile scheme."
|
||||
fix_misalignment: Adjust imagery offset
|
||||
imagery_source_faq: Where does this imagery come from?
|
||||
reset: reset
|
||||
|
||||
10124
data/imagery.json
10124
data/imagery.json
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,6 @@ export { default as dataSuggestions } from 'name-suggestion-index/name-suggestio
|
||||
export { dataAddressFormats } from './address-formats.json';
|
||||
export { dataDeprecated } from './deprecated.json';
|
||||
export { dataDiscarded } from './discarded.json';
|
||||
export { dataImagery } from './imagery.json';
|
||||
export { dataLocales } from './locales.json';
|
||||
export { dataPhoneFormats } from './phone-formats.json';
|
||||
|
||||
@@ -13,14 +12,18 @@ export { default as dataImperial } from './imperial.json';
|
||||
export { default as dataDriveLeft } from './drive-left.json';
|
||||
export { en as dataEn } from '../dist/locales/en.json';
|
||||
|
||||
import { dataImagery } from './imagery.json';
|
||||
import { presets } from './presets/presets.json';
|
||||
import { defaults } from './presets/defaults.json';
|
||||
import { categories } from './presets/categories.json';
|
||||
import { fields } from './presets/fields.json';
|
||||
|
||||
export var dataPresets = {
|
||||
presets: presets,
|
||||
defaults: defaults,
|
||||
categories: categories,
|
||||
fields: fields
|
||||
export var data = {
|
||||
imagery: dataImagery,
|
||||
presets: {
|
||||
presets: presets,
|
||||
defaults: defaults,
|
||||
categories: categories,
|
||||
fields: fields
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,66 +1,190 @@
|
||||
{
|
||||
"dataLocales": [
|
||||
"af",
|
||||
"sq",
|
||||
"ar",
|
||||
"ar-AA",
|
||||
"hy",
|
||||
"ast",
|
||||
"bn",
|
||||
"bs",
|
||||
"bg-BG",
|
||||
"ca",
|
||||
"zh",
|
||||
"zh-CN",
|
||||
"zh-HK",
|
||||
"zh-TW",
|
||||
"yue",
|
||||
"hr",
|
||||
"cs",
|
||||
"da",
|
||||
"nl",
|
||||
"en-GB",
|
||||
"eo",
|
||||
"et",
|
||||
"fi",
|
||||
"fr",
|
||||
"gl",
|
||||
"de",
|
||||
"el",
|
||||
"gu",
|
||||
"hi",
|
||||
"hu",
|
||||
"is",
|
||||
"id",
|
||||
"it",
|
||||
"ja",
|
||||
"kn",
|
||||
"ko",
|
||||
"ku",
|
||||
"lv",
|
||||
"lij",
|
||||
"lt",
|
||||
"ml",
|
||||
"no",
|
||||
"fa",
|
||||
"pl",
|
||||
"pt",
|
||||
"pt-BR",
|
||||
"ro",
|
||||
"ru",
|
||||
"sc",
|
||||
"sr",
|
||||
"si",
|
||||
"sk",
|
||||
"sl",
|
||||
"es",
|
||||
"sv",
|
||||
"tl",
|
||||
"ta",
|
||||
"te",
|
||||
"th",
|
||||
"tr",
|
||||
"uk",
|
||||
"vi"
|
||||
]
|
||||
"dataLocales": {
|
||||
"af": {
|
||||
"rtl": false
|
||||
},
|
||||
"ar": {
|
||||
"rtl": true
|
||||
},
|
||||
"ar-AA": {
|
||||
"rtl": true
|
||||
},
|
||||
"ast": {
|
||||
"rtl": false
|
||||
},
|
||||
"bg-BG": {
|
||||
"rtl": false
|
||||
},
|
||||
"bn": {
|
||||
"rtl": false
|
||||
},
|
||||
"bs": {
|
||||
"rtl": false
|
||||
},
|
||||
"ca": {
|
||||
"rtl": false
|
||||
},
|
||||
"cs": {
|
||||
"rtl": false
|
||||
},
|
||||
"da": {
|
||||
"rtl": false
|
||||
},
|
||||
"de": {
|
||||
"rtl": false
|
||||
},
|
||||
"el": {
|
||||
"rtl": false
|
||||
},
|
||||
"en-GB": {
|
||||
"rtl": false
|
||||
},
|
||||
"eo": {
|
||||
"rtl": false
|
||||
},
|
||||
"es": {
|
||||
"rtl": false
|
||||
},
|
||||
"et": {
|
||||
"rtl": false
|
||||
},
|
||||
"fa": {
|
||||
"rtl": true
|
||||
},
|
||||
"fi": {
|
||||
"rtl": false
|
||||
},
|
||||
"fr": {
|
||||
"rtl": false
|
||||
},
|
||||
"gl": {
|
||||
"rtl": false
|
||||
},
|
||||
"gu": {
|
||||
"rtl": false
|
||||
},
|
||||
"hi": {
|
||||
"rtl": false
|
||||
},
|
||||
"hr": {
|
||||
"rtl": false
|
||||
},
|
||||
"hu": {
|
||||
"rtl": false
|
||||
},
|
||||
"hy": {
|
||||
"rtl": false
|
||||
},
|
||||
"id": {
|
||||
"rtl": false
|
||||
},
|
||||
"is": {
|
||||
"rtl": false
|
||||
},
|
||||
"it": {
|
||||
"rtl": false
|
||||
},
|
||||
"ja": {
|
||||
"rtl": false
|
||||
},
|
||||
"kn": {
|
||||
"rtl": false
|
||||
},
|
||||
"ko": {
|
||||
"rtl": false
|
||||
},
|
||||
"ku": {
|
||||
"rtl": false
|
||||
},
|
||||
"lij": {
|
||||
"rtl": false
|
||||
},
|
||||
"lt": {
|
||||
"rtl": false
|
||||
},
|
||||
"lv": {
|
||||
"rtl": false
|
||||
},
|
||||
"ml": {
|
||||
"rtl": false
|
||||
},
|
||||
"nl": {
|
||||
"rtl": false
|
||||
},
|
||||
"no": {
|
||||
"rtl": false
|
||||
},
|
||||
"pl": {
|
||||
"rtl": false
|
||||
},
|
||||
"pt": {
|
||||
"rtl": false
|
||||
},
|
||||
"pt-BR": {
|
||||
"rtl": false
|
||||
},
|
||||
"ro": {
|
||||
"rtl": false
|
||||
},
|
||||
"ru": {
|
||||
"rtl": false
|
||||
},
|
||||
"sc": {
|
||||
"rtl": false
|
||||
},
|
||||
"si": {
|
||||
"rtl": false
|
||||
},
|
||||
"sk": {
|
||||
"rtl": false
|
||||
},
|
||||
"sl": {
|
||||
"rtl": false
|
||||
},
|
||||
"sq": {
|
||||
"rtl": false
|
||||
},
|
||||
"sr": {
|
||||
"rtl": false
|
||||
},
|
||||
"sv": {
|
||||
"rtl": false
|
||||
},
|
||||
"ta": {
|
||||
"rtl": false
|
||||
},
|
||||
"te": {
|
||||
"rtl": false
|
||||
},
|
||||
"th": {
|
||||
"rtl": false
|
||||
},
|
||||
"tl": {
|
||||
"rtl": false
|
||||
},
|
||||
"tr": {
|
||||
"rtl": false
|
||||
},
|
||||
"uk": {
|
||||
"rtl": false
|
||||
},
|
||||
"vi": {
|
||||
"rtl": false
|
||||
},
|
||||
"yue": {
|
||||
"rtl": false
|
||||
},
|
||||
"zh": {
|
||||
"rtl": false
|
||||
},
|
||||
"zh-CN": {
|
||||
"rtl": false
|
||||
},
|
||||
"zh-HK": {
|
||||
"rtl": false
|
||||
},
|
||||
"zh-TW": {
|
||||
"rtl": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -167,6 +167,22 @@ en:
|
||||
barrier:
|
||||
# barrier=*
|
||||
label: Type
|
||||
bath/open_air:
|
||||
# 'bath:open_air=*'
|
||||
label: Open Air
|
||||
bath/sand_bath:
|
||||
# 'bath:sand_bath=*'
|
||||
label: Sand Bath
|
||||
bath/type:
|
||||
# 'bath:type=*'
|
||||
label: Specialty
|
||||
options:
|
||||
# 'bath:type=foot_bath'
|
||||
foot_bath: Foot Bath
|
||||
# 'bath:type=hot_spring'
|
||||
hot_spring: Hot Spring
|
||||
# 'bath:type=onsen'
|
||||
onsen: Japanese Onsen
|
||||
beauty:
|
||||
# beauty=*
|
||||
label: Shop Type
|
||||
@@ -191,6 +207,9 @@ en:
|
||||
stemcells: stem cell samples
|
||||
# 'blood:=whole'
|
||||
whole: whole blood
|
||||
board_type:
|
||||
# board_type=*
|
||||
label: Type
|
||||
boundary:
|
||||
# boundary=*
|
||||
label: Type
|
||||
@@ -203,6 +222,24 @@ en:
|
||||
building_area:
|
||||
# building=*
|
||||
label: Building
|
||||
camera/direction:
|
||||
# 'camera:direction=*'
|
||||
label: Direction (Degrees Clockwise)
|
||||
# camera/direction field placeholder
|
||||
placeholder: '45, 90, 180, 270'
|
||||
camera/mount:
|
||||
# 'camera:mount=*'
|
||||
label: Camera Mount
|
||||
camera/type:
|
||||
# 'camera:type=*'
|
||||
label: Camera Type
|
||||
options:
|
||||
# 'camera:type=dome'
|
||||
dome: Dome
|
||||
# 'camera:type=fixed'
|
||||
fixed: Fixed
|
||||
# 'camera:type=panning'
|
||||
panning: Panning
|
||||
capacity:
|
||||
# capacity=*
|
||||
label: Capacity
|
||||
@@ -258,6 +295,11 @@ en:
|
||||
construction:
|
||||
# construction=*
|
||||
label: Type
|
||||
contact/webcam:
|
||||
# 'contact:webcam=*'
|
||||
label: Webcam URL
|
||||
# contact/webcam field placeholder
|
||||
placeholder: 'http://example.com/'
|
||||
content:
|
||||
# content=*
|
||||
label: Contents
|
||||
@@ -383,6 +425,9 @@ en:
|
||||
fee:
|
||||
# fee=*
|
||||
label: Fee
|
||||
fence_type:
|
||||
# fence_type=*
|
||||
label: Type
|
||||
fire_hydrant/type:
|
||||
# 'fire_hydrant:type=*'
|
||||
label: Type
|
||||
@@ -441,6 +486,9 @@ en:
|
||||
handrail:
|
||||
# handrail=*
|
||||
label: Handrail
|
||||
height:
|
||||
# height=*
|
||||
label: Height (Meters)
|
||||
highway:
|
||||
# highway=*
|
||||
label: Type
|
||||
@@ -492,6 +540,9 @@ en:
|
||||
internet_access/fee:
|
||||
# 'internet_access:fee=*'
|
||||
label: Internet Access Fee
|
||||
internet_access/ssid:
|
||||
# 'internet_access:ssid=*'
|
||||
label: SSID (Network Name)
|
||||
kerb:
|
||||
# kerb=*
|
||||
label: Curb Ramp
|
||||
@@ -580,6 +631,17 @@ en:
|
||||
man_made:
|
||||
# man_made=*
|
||||
label: Type
|
||||
map_size:
|
||||
# map_size=*
|
||||
label: Coverage
|
||||
map_type:
|
||||
# map_type=*
|
||||
label: Type
|
||||
maxheight:
|
||||
# maxheight=*
|
||||
label: Max Height
|
||||
# maxheight field placeholder
|
||||
placeholder: '4, 4.5, 5, 14''0", 14''6", 15''0"'
|
||||
maxspeed:
|
||||
# maxspeed=*
|
||||
label: Speed Limit
|
||||
@@ -730,6 +792,9 @@ en:
|
||||
operator:
|
||||
# operator=*
|
||||
label: Operator
|
||||
outdoor_seating:
|
||||
# outdoor_seating=*
|
||||
label: Outdoor Seating
|
||||
par:
|
||||
# par=*
|
||||
label: Par
|
||||
@@ -1044,6 +1109,22 @@ en:
|
||||
surface:
|
||||
# surface=*
|
||||
label: Surface
|
||||
surveillance:
|
||||
# surveillance=*
|
||||
label: Surveillance Kind
|
||||
surveillance/type:
|
||||
# 'surveillance:type=*'
|
||||
label: Surveillance Type
|
||||
options:
|
||||
# 'surveillance:type=ALPR'
|
||||
ALPR: Automatic License Plate Reader
|
||||
# 'surveillance:type=camera'
|
||||
camera: Camera
|
||||
# 'surveillance:type=guard'
|
||||
guard: Guard
|
||||
surveillance/zone:
|
||||
# 'surveillance:zone=*'
|
||||
label: Surveillance Zone
|
||||
tactile_paving:
|
||||
# tactile_paving=*
|
||||
label: Tactile Paving
|
||||
@@ -1074,9 +1155,14 @@ en:
|
||||
tourism:
|
||||
# tourism=*
|
||||
label: Type
|
||||
towertype:
|
||||
tower/construction:
|
||||
# 'tower:construction=*'
|
||||
label: Construction
|
||||
# tower/construction field placeholder
|
||||
placeholder: 'Guyed, Lattice, Concealed, ...'
|
||||
tower/type:
|
||||
# 'tower:type=*'
|
||||
label: Tower type
|
||||
label: Type
|
||||
tracktype:
|
||||
# tracktype=*
|
||||
label: Track Type
|
||||
@@ -1136,6 +1222,9 @@ en:
|
||||
house: Up to 5m (16ft)
|
||||
# visibility=street
|
||||
street: 5 to 20m (16 to 65ft)
|
||||
wall:
|
||||
# wall=*
|
||||
label: Type
|
||||
water:
|
||||
# water=*
|
||||
label: Type
|
||||
@@ -1387,6 +1476,11 @@ en:
|
||||
name: Coworking Space
|
||||
# 'terms: coworking,office'
|
||||
terms: '<translate with synonyms or related terms for ''Coworking Space'', separated by commas>'
|
||||
amenity/crematorium:
|
||||
# amenity=crematorium
|
||||
name: Crematorium
|
||||
# 'terms: cemetery,funeral'
|
||||
terms: '<translate with synonyms or related terms for ''Crematorium'', separated by commas>'
|
||||
amenity/dentist:
|
||||
# amenity=dentist
|
||||
name: Dentist
|
||||
@@ -1424,6 +1518,11 @@ en:
|
||||
# amenity=fire_station
|
||||
name: Fire Station
|
||||
terms: '<translate with synonyms or related terms for ''Fire Station'', separated by commas>'
|
||||
amenity/food_court:
|
||||
# amenity=food_court
|
||||
name: Food Court
|
||||
# 'terms: fast food,restaurant,food'
|
||||
terms: '<translate with synonyms or related terms for ''Food Court'', separated by commas>'
|
||||
amenity/fountain:
|
||||
# amenity=fountain
|
||||
name: Fountain
|
||||
@@ -1450,12 +1549,18 @@ en:
|
||||
amenity/hunting_stand:
|
||||
# amenity=hunting_stand
|
||||
name: Hunting Stand
|
||||
# 'terms: game,lookout,shoot,wild,watch'
|
||||
terms: '<translate with synonyms or related terms for ''Hunting Stand'', separated by commas>'
|
||||
amenity/ice_cream:
|
||||
# amenity=ice_cream
|
||||
name: Ice Cream Shop
|
||||
# 'terms: gelato,sorbet,sherbet,frozen,yogurt'
|
||||
terms: '<translate with synonyms or related terms for ''Ice Cream Shop'', separated by commas>'
|
||||
amenity/internet_cafe:
|
||||
# amenity=internet_cafe
|
||||
name: Internet Cafe
|
||||
# 'terms: cybercafe,taxiphone,teleboutique,coffee,cafe,net,lanhouse'
|
||||
terms: '<translate with synonyms or related terms for ''Internet Cafe'', separated by commas>'
|
||||
amenity/kindergarten:
|
||||
# amenity=kindergarten
|
||||
name: Preschool/Kindergarten Grounds
|
||||
@@ -1549,8 +1654,13 @@ en:
|
||||
amenity/pub:
|
||||
# amenity=pub
|
||||
name: Pub
|
||||
# 'terms: dive,beer,bier,booze'
|
||||
# 'terms: alcohol,drink,dive,beer,bier,booze'
|
||||
terms: '<translate with synonyms or related terms for ''Pub'', separated by commas>'
|
||||
amenity/public_bath:
|
||||
# amenity=public_bath
|
||||
name: Public Bath
|
||||
# 'terms: onsen,foot bath,hot springs'
|
||||
terms: '<translate with synonyms or related terms for ''Public Bath'', separated by commas>'
|
||||
amenity/public_bookcase:
|
||||
# amenity=public_bookcase
|
||||
name: Public Bookcase
|
||||
@@ -2429,6 +2539,11 @@ en:
|
||||
name: Unmaintained Track Road
|
||||
# 'terms: woods road,forest road,logging road,fire road,farm road,agricultural road,ranch road,carriage road,primitive,unmaintained,rut,offroad,4wd,4x4,four wheel drive,atv,quad,jeep,double track,two track'
|
||||
terms: '<translate with synonyms or related terms for ''Unmaintained Track Road'', separated by commas>'
|
||||
highway/traffic_mirror:
|
||||
# highway=traffic_mirror
|
||||
name: Traffic Mirror
|
||||
# 'terms: blind spot,convex,corner,curved,roadside,round,safety,sphere,visibility'
|
||||
terms: '<translate with synonyms or related terms for ''Traffic Mirror'', separated by commas>'
|
||||
highway/traffic_signals:
|
||||
# highway=traffic_signals
|
||||
name: Traffic Signals
|
||||
@@ -2448,6 +2563,11 @@ en:
|
||||
name: Turning Circle
|
||||
# 'terms: cul-de-sac'
|
||||
terms: '<translate with synonyms or related terms for ''Turning Circle'', separated by commas>'
|
||||
highway/turning_loop:
|
||||
# highway=turning_loop
|
||||
name: Turning Loop (Island)
|
||||
# 'terms: cul-de-sac'
|
||||
terms: '<translate with synonyms or related terms for ''Turning Loop (Island)'', separated by commas>'
|
||||
highway/unclassified:
|
||||
# highway=unclassified
|
||||
name: Minor/Unclassified Road
|
||||
@@ -2615,6 +2735,11 @@ en:
|
||||
name: Common
|
||||
# 'terms: open space'
|
||||
terms: '<translate with synonyms or related terms for ''Common'', separated by commas>'
|
||||
leisure/dance:
|
||||
# leisure=dance
|
||||
name: Dance Hall
|
||||
# 'terms: ballroom,jive,swing,tango,waltz'
|
||||
terms: '<translate with synonyms or related terms for ''Dance Hall'', separated by commas>'
|
||||
leisure/dog_park:
|
||||
# leisure=dog_park
|
||||
name: Dog Park
|
||||
@@ -2728,6 +2853,10 @@ en:
|
||||
name: Playground
|
||||
# 'terms: jungle gym,play area'
|
||||
terms: '<translate with synonyms or related terms for ''Playground'', separated by commas>'
|
||||
leisure/resort:
|
||||
# leisure=resort
|
||||
name: Resort
|
||||
terms: '<translate with synonyms or related terms for ''Resort'', separated by commas>'
|
||||
leisure/running_track:
|
||||
# 'leisure=track, sport=running'
|
||||
name: Running Track
|
||||
@@ -2853,8 +2982,13 @@ en:
|
||||
man_made/surveillance:
|
||||
# man_made=surveillance
|
||||
name: Surveillance
|
||||
# 'terms: cctv'
|
||||
# 'terms: anpr,alpr,camera,car plate recognition,cctv,guard,license plate recognition,monitoring,number plate recognition,security,video,webcam'
|
||||
terms: '<translate with synonyms or related terms for ''Surveillance'', separated by commas>'
|
||||
man_made/surveillance_camera:
|
||||
# 'man_made=surveillance, surveillance:type=camera'
|
||||
name: Surveillance Camera
|
||||
# 'terms: anpr,alpr,camera,car plate recognition,cctv,guard,license plate recognition,monitoring,number plate recognition,security,video,webcam'
|
||||
terms: '<translate with synonyms or related terms for ''Surveillance Camera'', separated by commas>'
|
||||
man_made/survey_point:
|
||||
# man_made=survey_point
|
||||
name: Survey Point
|
||||
@@ -3815,6 +3949,15 @@ en:
|
||||
# tourism=alpine_hut
|
||||
name: Alpine Hut
|
||||
terms: '<translate with synonyms or related terms for ''Alpine Hut'', separated by commas>'
|
||||
tourism/apartment:
|
||||
# tourism=apartment
|
||||
name: Guest Apartment / Condo
|
||||
terms: '<translate with synonyms or related terms for ''Guest Apartment / Condo'', separated by commas>'
|
||||
tourism/aquarium:
|
||||
# tourism=aquarium
|
||||
name: Aquarium
|
||||
# 'terms: fish,sea,water'
|
||||
terms: '<translate with synonyms or related terms for ''Aquarium'', separated by commas>'
|
||||
tourism/artwork:
|
||||
# tourism=artwork
|
||||
name: Artwork
|
||||
@@ -3860,6 +4003,22 @@ en:
|
||||
# tourism=information
|
||||
name: Information
|
||||
terms: '<translate with synonyms or related terms for ''Information'', separated by commas>'
|
||||
tourism/information/board:
|
||||
# 'tourism=information, information=board'
|
||||
name: Information Board
|
||||
terms: '<translate with synonyms or related terms for ''Information Board'', separated by commas>'
|
||||
tourism/information/guidepost:
|
||||
# 'tourism=information, information=guidepost'
|
||||
name: Guidepost
|
||||
terms: '<translate with synonyms or related terms for ''Guidepost'', separated by commas>'
|
||||
tourism/information/map:
|
||||
# 'tourism=information, information=map'
|
||||
name: Map
|
||||
terms: '<translate with synonyms or related terms for ''Map'', separated by commas>'
|
||||
tourism/information/office:
|
||||
# 'tourism=information, information=office'
|
||||
name: Tourist Information Office
|
||||
terms: '<translate with synonyms or related terms for ''Tourist Information Office'', separated by commas>'
|
||||
tourism/motel:
|
||||
# tourism=motel
|
||||
name: Motel
|
||||
@@ -3885,6 +4044,7 @@ en:
|
||||
tourism/zoo:
|
||||
# tourism=zoo
|
||||
name: Zoo
|
||||
# 'terms: animal'
|
||||
terms: '<translate with synonyms or related terms for ''Zoo'', separated by commas>'
|
||||
traffic_calming:
|
||||
# traffic_calming=*
|
||||
@@ -4098,6 +4258,11 @@ en:
|
||||
# waterway=water_point
|
||||
name: Marine Drinking Water
|
||||
terms: '<translate with synonyms or related terms for ''Marine Drinking Water'', separated by commas>'
|
||||
waterway/waterfall:
|
||||
# waterway=waterfall
|
||||
name: Waterfall
|
||||
# 'terms: fall'
|
||||
terms: '<translate with synonyms or related terms for ''Waterfall'', separated by commas>'
|
||||
waterway/weir:
|
||||
# waterway=weir
|
||||
name: Weir
|
||||
|
||||
@@ -125,7 +125,7 @@ The complete JSON schema for fields can be found in [`data/presets/schema/field.
|
||||
* `cycleway` - Block of dropdowns for adding `cycleway:left` and `cycleway:right` tags on a highway
|
||||
* `maxspeed` - Numeric text field for speed and dropdown for "mph/kph"
|
||||
* `restrictions` - Graphical field for editing turn restrictions
|
||||
* `wikipedia` - Block of fields for selecting a wiki language and wikipedia page
|
||||
* `wikipedia` - Block of fields for selecting a wiki language and Wikipedia page
|
||||
|
||||
|
||||
#### Field Properties
|
||||
@@ -147,7 +147,7 @@ one of `point`, `vertex`, `line`, `area`.
|
||||
|
||||
##### `default`
|
||||
|
||||
The default value for the field. For exmaple, the `building_area.json` field
|
||||
The default value for the field. For example, the `building_area.json` field
|
||||
will automatically add the tag `building=yes` to certain presets that are
|
||||
associated with building features (but only if drawn as a closed area).
|
||||
|
||||
@@ -179,8 +179,9 @@ The user can pick from any of the options, or type their own value.
|
||||
|
||||
Combo field types can accept name-value pairs in the `strings` property.
|
||||
This is helpful when the field has a fixed number of options and you want to be
|
||||
able to provide a translateable description of each option. When using `strings`,
|
||||
able to provide a translatable description of each option. When using `strings`,
|
||||
the user can not type their own value, they must choose one of the given values.
|
||||
|
||||
```js
|
||||
{
|
||||
"key": "smoothness",
|
||||
@@ -235,7 +236,7 @@ iD supports deployments which use a custom set of presets. You can supply preset
|
||||
the `presets` accessor:
|
||||
|
||||
```js
|
||||
var id = iD.Context(window).presets({
|
||||
var id = iD.Context().presets({
|
||||
presets: { ... },
|
||||
fields: { ... },
|
||||
defaults: { ... },
|
||||
@@ -273,6 +274,12 @@ For example:
|
||||
"tags": {},
|
||||
"geometry": ["vertex"],
|
||||
"matchScore": 0.1
|
||||
},
|
||||
"relation": {
|
||||
"name": "Relation",
|
||||
"tags": {},
|
||||
"geometry": ["relation"],
|
||||
"matchScore": 0.1
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -64,11 +64,11 @@
|
||||
"highway/pedestrian",
|
||||
"footway/crosswalk",
|
||||
"footway/sidewalk",
|
||||
"highway/steps",
|
||||
"highway/path",
|
||||
"highway/footway",
|
||||
"highway/cycleway",
|
||||
"highway/bridleway",
|
||||
"highway/path",
|
||||
"highway/steps"
|
||||
"highway/bridleway"
|
||||
]
|
||||
},
|
||||
"category-rail": {
|
||||
@@ -110,14 +110,14 @@
|
||||
"highway/primary",
|
||||
"highway/secondary",
|
||||
"highway/tertiary",
|
||||
"highway/unclassified",
|
||||
"highway/service",
|
||||
"highway/track",
|
||||
"highway/motorway_link",
|
||||
"highway/trunk_link",
|
||||
"highway/primary_link",
|
||||
"highway/secondary_link",
|
||||
"highway/tertiary_link",
|
||||
"highway/unclassified",
|
||||
"highway/track",
|
||||
"highway/road"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
"highway/pedestrian",
|
||||
"footway/crosswalk",
|
||||
"footway/sidewalk",
|
||||
"highway/steps",
|
||||
"highway/path",
|
||||
"highway/footway",
|
||||
"highway/cycleway",
|
||||
"highway/bridleway",
|
||||
"highway/path",
|
||||
"highway/steps"
|
||||
"highway/bridleway"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
"highway/primary",
|
||||
"highway/secondary",
|
||||
"highway/tertiary",
|
||||
"highway/unclassified",
|
||||
"highway/service",
|
||||
"highway/track",
|
||||
"highway/motorway_link",
|
||||
"highway/trunk_link",
|
||||
"highway/primary_link",
|
||||
"highway/secondary_link",
|
||||
"highway/tertiary_link",
|
||||
"highway/unclassified",
|
||||
"highway/track",
|
||||
"highway/road"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -223,6 +223,28 @@
|
||||
"type": "typeCombo",
|
||||
"label": "Type"
|
||||
},
|
||||
"bath/open_air": {
|
||||
"key": "bath:open_air",
|
||||
"label": "Open Air",
|
||||
"type": "check"
|
||||
},
|
||||
"bath/sand_bath": {
|
||||
"key": "bath:sand_bath",
|
||||
"label": "Sand Bath",
|
||||
"type": "check"
|
||||
},
|
||||
"bath/type": {
|
||||
"key": "bath:type",
|
||||
"type": "combo",
|
||||
"label": "Specialty",
|
||||
"strings": {
|
||||
"options": {
|
||||
"onsen": "Japanese Onsen",
|
||||
"foot_bath": "Foot Bath",
|
||||
"hot_spring": "Hot Spring"
|
||||
}
|
||||
}
|
||||
},
|
||||
"beauty": {
|
||||
"key": "beauty",
|
||||
"type": "combo",
|
||||
@@ -256,6 +278,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"board_type": {
|
||||
"key": "board_type",
|
||||
"type": "typeCombo",
|
||||
"label": "Type"
|
||||
},
|
||||
"boundary": {
|
||||
"key": "boundary",
|
||||
"type": "combo",
|
||||
@@ -278,6 +305,29 @@
|
||||
"type": "combo",
|
||||
"label": "Building"
|
||||
},
|
||||
"camera/direction": {
|
||||
"key": "camera:direction",
|
||||
"type": "number",
|
||||
"label": "Direction (Degrees Clockwise)",
|
||||
"placeholder": "45, 90, 180, 270"
|
||||
},
|
||||
"camera/mount": {
|
||||
"key": "camera:mount",
|
||||
"type": "combo",
|
||||
"label": "Camera Mount"
|
||||
},
|
||||
"camera/type": {
|
||||
"key": "camera:type",
|
||||
"type": "combo",
|
||||
"label": "Camera Type",
|
||||
"strings": {
|
||||
"options": {
|
||||
"fixed": "Fixed",
|
||||
"panning": "Panning",
|
||||
"dome": "Dome"
|
||||
}
|
||||
}
|
||||
},
|
||||
"capacity": {
|
||||
"key": "capacity",
|
||||
"type": "number",
|
||||
@@ -330,6 +380,13 @@
|
||||
"type": "combo",
|
||||
"label": "Type"
|
||||
},
|
||||
"contact/webcam": {
|
||||
"key": "contact:webcam",
|
||||
"type": "url",
|
||||
"icon": "website",
|
||||
"label": "Webcam URL",
|
||||
"placeholder": "http://example.com/"
|
||||
},
|
||||
"content": {
|
||||
"key": "content",
|
||||
"type": "combo",
|
||||
@@ -532,6 +589,11 @@
|
||||
"type": "check",
|
||||
"label": "Fee"
|
||||
},
|
||||
"fence_type": {
|
||||
"key": "fence_type",
|
||||
"type": "combo",
|
||||
"label": "Type"
|
||||
},
|
||||
"fire_hydrant/type": {
|
||||
"key": "fire_hydrant:type",
|
||||
"type": "combo",
|
||||
@@ -615,6 +677,11 @@
|
||||
"type": "check",
|
||||
"label": "Handrail"
|
||||
},
|
||||
"height": {
|
||||
"key": "height",
|
||||
"type": "number",
|
||||
"label": "Height (Meters)"
|
||||
},
|
||||
"highway": {
|
||||
"key": "highway",
|
||||
"type": "typeCombo",
|
||||
@@ -686,6 +753,11 @@
|
||||
"type": "check",
|
||||
"label": "Internet Access Fee"
|
||||
},
|
||||
"internet_access/ssid": {
|
||||
"key": "internet_access:ssid",
|
||||
"type": "text",
|
||||
"label": "SSID (Network Name)"
|
||||
},
|
||||
"kerb": {
|
||||
"key": "kerb",
|
||||
"type": "combo",
|
||||
@@ -801,6 +873,23 @@
|
||||
"type": "typeCombo",
|
||||
"label": "Type"
|
||||
},
|
||||
"map_size": {
|
||||
"key": "map_size",
|
||||
"type": "typeCombo",
|
||||
"label": "Coverage"
|
||||
},
|
||||
"map_type": {
|
||||
"key": "map_type",
|
||||
"type": "typeCombo",
|
||||
"label": "Type"
|
||||
},
|
||||
"maxheight": {
|
||||
"key": "maxheight",
|
||||
"type": "combo",
|
||||
"label": "Max Height",
|
||||
"placeholder": "4, 4.5, 5, 14'0\", 14'6\", 15'0\"",
|
||||
"snake_case": false
|
||||
},
|
||||
"maxspeed": {
|
||||
"key": "maxspeed",
|
||||
"type": "maxspeed",
|
||||
@@ -983,6 +1072,11 @@
|
||||
"type": "text",
|
||||
"label": "Operator"
|
||||
},
|
||||
"outdoor_seating": {
|
||||
"key": "outdoor_seating",
|
||||
"type": "combo",
|
||||
"label": "Outdoor Seating"
|
||||
},
|
||||
"par": {
|
||||
"key": "par",
|
||||
"type": "number",
|
||||
@@ -1415,6 +1509,28 @@
|
||||
"type": "combo",
|
||||
"label": "Surface"
|
||||
},
|
||||
"surveillance": {
|
||||
"key": "surveillance",
|
||||
"type": "combo",
|
||||
"label": "Surveillance Kind"
|
||||
},
|
||||
"surveillance/type": {
|
||||
"key": "surveillance:type",
|
||||
"type": "combo",
|
||||
"label": "Surveillance Type",
|
||||
"strings": {
|
||||
"options": {
|
||||
"camera": "Camera",
|
||||
"guard": "Guard",
|
||||
"ALPR": "Automatic License Plate Reader"
|
||||
}
|
||||
}
|
||||
},
|
||||
"surveillance/zone": {
|
||||
"key": "surveillance:zone",
|
||||
"type": "combo",
|
||||
"label": "Surveillance Zone"
|
||||
},
|
||||
"tactile_paving": {
|
||||
"key": "tactile_paving",
|
||||
"type": "check",
|
||||
@@ -1451,10 +1567,16 @@
|
||||
"type": "typeCombo",
|
||||
"label": "Type"
|
||||
},
|
||||
"towertype": {
|
||||
"tower/construction": {
|
||||
"key": "tower:construction",
|
||||
"type": "combo",
|
||||
"label": "Construction",
|
||||
"placeholder": "Guyed, Lattice, Concealed, ..."
|
||||
},
|
||||
"tower/type": {
|
||||
"key": "tower:type",
|
||||
"type": "combo",
|
||||
"label": "Tower type"
|
||||
"label": "Type"
|
||||
},
|
||||
"tracktype": {
|
||||
"key": "tracktype",
|
||||
@@ -1525,6 +1647,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"wall": {
|
||||
"key": "wall",
|
||||
"type": "combo",
|
||||
"label": "Type"
|
||||
},
|
||||
"water_point": {
|
||||
"key": "water_point",
|
||||
"type": "check",
|
||||
|
||||
5
data/presets/fields/bath/open_air.json
Normal file
5
data/presets/fields/bath/open_air.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "bath:open_air",
|
||||
"label": "Open Air",
|
||||
"type": "check"
|
||||
}
|
||||
5
data/presets/fields/bath/sand_bath.json
Normal file
5
data/presets/fields/bath/sand_bath.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "bath:sand_bath",
|
||||
"label": "Sand Bath",
|
||||
"type": "check"
|
||||
}
|
||||
12
data/presets/fields/bath/type.json
Normal file
12
data/presets/fields/bath/type.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"key": "bath:type",
|
||||
"type": "combo",
|
||||
"label": "Specialty",
|
||||
"strings": {
|
||||
"options": {
|
||||
"onsen": "Japanese Onsen",
|
||||
"foot_bath": "Foot Bath",
|
||||
"hot_spring": "Hot Spring"
|
||||
}
|
||||
}
|
||||
}
|
||||
5
data/presets/fields/board_type.json
Normal file
5
data/presets/fields/board_type.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "board_type",
|
||||
"type": "typeCombo",
|
||||
"label": "Type"
|
||||
}
|
||||
6
data/presets/fields/camera/direction.json
Normal file
6
data/presets/fields/camera/direction.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"key": "camera:direction",
|
||||
"type": "number",
|
||||
"label": "Direction (Degrees Clockwise)",
|
||||
"placeholder": "45, 90, 180, 270"
|
||||
}
|
||||
5
data/presets/fields/camera/mount.json
Normal file
5
data/presets/fields/camera/mount.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "camera:mount",
|
||||
"type": "combo",
|
||||
"label": "Camera Mount"
|
||||
}
|
||||
12
data/presets/fields/camera/type.json
Normal file
12
data/presets/fields/camera/type.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"key": "camera:type",
|
||||
"type": "combo",
|
||||
"label": "Camera Type",
|
||||
"strings": {
|
||||
"options": {
|
||||
"fixed": "Fixed",
|
||||
"panning": "Panning",
|
||||
"dome": "Dome"
|
||||
}
|
||||
}
|
||||
}
|
||||
7
data/presets/fields/contact/webcam.json
Normal file
7
data/presets/fields/contact/webcam.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"key": "contact:webcam",
|
||||
"type": "url",
|
||||
"icon": "website",
|
||||
"label": "Webcam URL",
|
||||
"placeholder": "http://example.com/"
|
||||
}
|
||||
5
data/presets/fields/fence_type.json
Normal file
5
data/presets/fields/fence_type.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "fence_type",
|
||||
"type": "combo",
|
||||
"label": "Type"
|
||||
}
|
||||
5
data/presets/fields/height.json
Normal file
5
data/presets/fields/height.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "height",
|
||||
"type": "number",
|
||||
"label": "Height (Meters)"
|
||||
}
|
||||
5
data/presets/fields/internet_access/ssid.json
Normal file
5
data/presets/fields/internet_access/ssid.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "internet_access:ssid",
|
||||
"type": "text",
|
||||
"label": "SSID (Network Name)"
|
||||
}
|
||||
5
data/presets/fields/map_size.json
Normal file
5
data/presets/fields/map_size.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "map_size",
|
||||
"type": "typeCombo",
|
||||
"label": "Coverage"
|
||||
}
|
||||
5
data/presets/fields/map_type.json
Normal file
5
data/presets/fields/map_type.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "map_type",
|
||||
"type": "typeCombo",
|
||||
"label": "Type"
|
||||
}
|
||||
7
data/presets/fields/maxheight.json
Normal file
7
data/presets/fields/maxheight.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"key": "maxheight",
|
||||
"type": "combo",
|
||||
"label": "Max Height",
|
||||
"placeholder": "4, 4.5, 5, 14'0\", 14'6\", 15'0\"",
|
||||
"snake_case": false
|
||||
}
|
||||
5
data/presets/fields/outdoor_seating.json
Normal file
5
data/presets/fields/outdoor_seating.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "outdoor_seating",
|
||||
"type": "combo",
|
||||
"label": "Outdoor Seating"
|
||||
}
|
||||
5
data/presets/fields/surveillance.json
Normal file
5
data/presets/fields/surveillance.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "surveillance",
|
||||
"type": "combo",
|
||||
"label": "Surveillance Kind"
|
||||
}
|
||||
12
data/presets/fields/surveillance/type.json
Normal file
12
data/presets/fields/surveillance/type.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"key": "surveillance:type",
|
||||
"type": "combo",
|
||||
"label": "Surveillance Type",
|
||||
"strings": {
|
||||
"options": {
|
||||
"camera": "Camera",
|
||||
"guard": "Guard",
|
||||
"ALPR": "Automatic License Plate Reader"
|
||||
}
|
||||
}
|
||||
}
|
||||
5
data/presets/fields/surveillance/zone.json
Normal file
5
data/presets/fields/surveillance/zone.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "surveillance:zone",
|
||||
"type": "combo",
|
||||
"label": "Surveillance Zone"
|
||||
}
|
||||
6
data/presets/fields/tower/construction.json
Normal file
6
data/presets/fields/tower/construction.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"key": "tower:construction",
|
||||
"type": "combo",
|
||||
"label": "Construction",
|
||||
"placeholder": "Guyed, Lattice, Concealed, ..."
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"key": "tower:type",
|
||||
"type": "combo",
|
||||
"label": "Tower type"
|
||||
"label": "Type"
|
||||
}
|
||||
5
data/presets/fields/wall.json
Normal file
5
data/presets/fields/wall.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"key": "wall",
|
||||
"type": "combo",
|
||||
"label": "Type"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,16 +4,19 @@
|
||||
"point",
|
||||
"area"
|
||||
],
|
||||
"terms": [
|
||||
"airplane",
|
||||
"airport",
|
||||
"aerodrome"
|
||||
],
|
||||
"fields": [
|
||||
"ref",
|
||||
"iata",
|
||||
"icao",
|
||||
"operator"
|
||||
"operator",
|
||||
"internet_access",
|
||||
"internet_access/fee",
|
||||
"internet_access/ssid"
|
||||
],
|
||||
"terms": [
|
||||
"airplane",
|
||||
"airport",
|
||||
"aerodrome"
|
||||
],
|
||||
"tags": {
|
||||
"aeroway": "aerodrome"
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours",
|
||||
"smoking"
|
||||
"smoking",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours",
|
||||
"smoking"
|
||||
"smoking",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
"icon": "bus",
|
||||
"fields": [
|
||||
"building_area",
|
||||
"operator"
|
||||
"operator",
|
||||
"internet_access",
|
||||
"internet_access/fee",
|
||||
"internet_access/ssid"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
"icon": "cafe",
|
||||
"fields": [
|
||||
"cuisine",
|
||||
"internet_access",
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours",
|
||||
"smoking"
|
||||
"internet_access",
|
||||
"internet_access/fee",
|
||||
"internet_access/ssid",
|
||||
"smoking",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
"icon": "college",
|
||||
"fields": [
|
||||
"operator",
|
||||
"address"
|
||||
"address",
|
||||
"internet_access",
|
||||
"internet_access/ssid"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
"fields": [
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours"
|
||||
"opening_hours",
|
||||
"internet_access",
|
||||
"internet_access/fee",
|
||||
"internet_access/ssid"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
19
data/presets/presets/amenity/crematorium.json
Normal file
19
data/presets/presets/amenity/crematorium.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"icon": "cemetery",
|
||||
"fields": [
|
||||
"website",
|
||||
"phone",
|
||||
"opening_hours",
|
||||
"wheelchair"
|
||||
|
||||
],
|
||||
"geometry": [
|
||||
"area",
|
||||
"point"
|
||||
],
|
||||
"tags": {
|
||||
"amenity": "crematorium"
|
||||
},
|
||||
"terms": ["cemetery","funeral"],
|
||||
"name": "Crematorium"
|
||||
}
|
||||
@@ -9,7 +9,8 @@
|
||||
"takeaway",
|
||||
"delivery",
|
||||
"drive_through",
|
||||
"smoking"
|
||||
"smoking",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
25
data/presets/presets/amenity/food_court.json
Normal file
25
data/presets/presets/amenity/food_court.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"icon": "restaurant",
|
||||
"fields": [
|
||||
"operator",
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours",
|
||||
"smoking",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
"area"
|
||||
],
|
||||
"terms": [
|
||||
"fast food",
|
||||
"restaurant",
|
||||
"food"
|
||||
],
|
||||
"tags": {
|
||||
"amenity": "food_court"
|
||||
},
|
||||
"name": "Food Court"
|
||||
}
|
||||
|
||||
@@ -4,7 +4,13 @@
|
||||
"vertex",
|
||||
"area"
|
||||
],
|
||||
"terms": [],
|
||||
"terms": [
|
||||
"game",
|
||||
"lookout",
|
||||
"shoot",
|
||||
"wild",
|
||||
"watch"
|
||||
],
|
||||
"tags": {
|
||||
"amenity": "hunting_stand"
|
||||
},
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
"building_area",
|
||||
"opening_hours",
|
||||
"takeaway",
|
||||
"delivery"
|
||||
"delivery",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
30
data/presets/presets/amenity/internet_cafe.json
Normal file
30
data/presets/presets/amenity/internet_cafe.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"fields": [
|
||||
"operator",
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours",
|
||||
"internet_access",
|
||||
"internet_access/fee",
|
||||
"internet_access/ssid",
|
||||
"smoking",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
"area"
|
||||
],
|
||||
"terms": [
|
||||
"cybercafe",
|
||||
"taxiphone",
|
||||
"teleboutique",
|
||||
"coffee",
|
||||
"cafe",
|
||||
"net",
|
||||
"lanhouse"
|
||||
],
|
||||
"tags": {
|
||||
"amenity": "internet_cafe"
|
||||
},
|
||||
"name": "Internet Cafe"
|
||||
}
|
||||
@@ -4,7 +4,10 @@
|
||||
"operator",
|
||||
"building_area",
|
||||
"address",
|
||||
"opening_hours"
|
||||
"opening_hours",
|
||||
"internet_access",
|
||||
"internet_access/fee",
|
||||
"internet_access/ssid"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours",
|
||||
"smoking"
|
||||
"smoking",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
@@ -14,6 +15,8 @@
|
||||
"amenity": "pub"
|
||||
},
|
||||
"terms": [
|
||||
"alcohol",
|
||||
"drink",
|
||||
"dive",
|
||||
"beer",
|
||||
"bier",
|
||||
|
||||
24
data/presets/presets/amenity/public_bath.json
Normal file
24
data/presets/presets/amenity/public_bath.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"icon": "water",
|
||||
"fields": [
|
||||
"bath/type",
|
||||
"bath/open_air",
|
||||
"bath/sand_bath",
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
"area"
|
||||
],
|
||||
"tags": {
|
||||
"amenity": "public_bath"
|
||||
},
|
||||
"terms": [
|
||||
"onsen",
|
||||
"foot bath",
|
||||
"hot springs"
|
||||
],
|
||||
"name": "Public Bath"
|
||||
}
|
||||
@@ -8,7 +8,8 @@
|
||||
"capacity",
|
||||
"takeaway",
|
||||
"delivery",
|
||||
"smoking"
|
||||
"smoking",
|
||||
"outdoor_seating"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -5,7 +5,10 @@
|
||||
"building_area",
|
||||
"opening_hours",
|
||||
"wheelchair",
|
||||
"social_facility_for"
|
||||
"social_facility_for",
|
||||
"internet_access",
|
||||
"internet_access/fee",
|
||||
"internet_access/ssid"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
"icon": "college",
|
||||
"fields": [
|
||||
"operator",
|
||||
"address"
|
||||
"address",
|
||||
"internet_access",
|
||||
"internet_access/ssid"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
@@ -12,5 +12,6 @@
|
||||
"fields": [
|
||||
"barrier"
|
||||
],
|
||||
"name": "Barrier"
|
||||
"name": "Barrier",
|
||||
"matchScore": 0.4
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
{
|
||||
"icon": "prison",
|
||||
"fields": [
|
||||
"height"
|
||||
],
|
||||
"geometry": [
|
||||
"line",
|
||||
"area"
|
||||
|
||||
@@ -7,5 +7,6 @@
|
||||
"tags": {
|
||||
"barrier": "ditch"
|
||||
},
|
||||
"name": "Trench"
|
||||
"name": "Trench",
|
||||
"matchScore": 0.25
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{
|
||||
"icon": "prison",
|
||||
"fields": [
|
||||
"fence_type",
|
||||
"height"
|
||||
],
|
||||
"geometry": [
|
||||
"line"
|
||||
],
|
||||
"tags": {
|
||||
"barrier": "fence"
|
||||
},
|
||||
"name": "Fence"
|
||||
"name": "Fence",
|
||||
"matchScore": 0.25
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"fields": [
|
||||
"height"
|
||||
],
|
||||
"geometry": [
|
||||
"line",
|
||||
"area"
|
||||
@@ -6,5 +9,6 @@
|
||||
"tags": {
|
||||
"barrier": "hedge"
|
||||
},
|
||||
"name": "Hedge"
|
||||
"name": "Hedge",
|
||||
"matchScore": 0.25
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
{
|
||||
"icon": "prison",
|
||||
"fields": [
|
||||
"wall",
|
||||
"height"
|
||||
],
|
||||
"geometry": [
|
||||
"line",
|
||||
"area"
|
||||
@@ -7,5 +11,6 @@
|
||||
"tags": {
|
||||
"barrier": "wall"
|
||||
},
|
||||
"name": "Wall"
|
||||
"name": "Wall",
|
||||
"matchScore": 0.25
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"tags": {
|
||||
"building": "*"
|
||||
},
|
||||
"matchScore": 0.4,
|
||||
"matchScore": 0.6,
|
||||
"terms": [],
|
||||
"name": "Building"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"icon": "circle-stroked",
|
||||
"fields": [
|
||||
"operator",
|
||||
"address",
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"icon": "circle-stroked",
|
||||
"fields": [
|
||||
"operator",
|
||||
"address",
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
"network",
|
||||
"operator",
|
||||
"bench",
|
||||
"shelter",
|
||||
"covered"
|
||||
"shelter"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
@@ -16,4 +15,4 @@
|
||||
},
|
||||
"terms": [],
|
||||
"name": "Bus Stop"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"cycleway"
|
||||
],
|
||||
"geometry": [
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"icon": "circle-stroked",
|
||||
"geometry": [
|
||||
"vertex"
|
||||
],
|
||||
@@ -9,4 +10,4 @@
|
||||
"clock_direction"
|
||||
],
|
||||
"name": "Mini-Roundabout"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref"
|
||||
],
|
||||
"geometry": [
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref"
|
||||
],
|
||||
"geometry": [
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref",
|
||||
"cycleway"
|
||||
],
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref",
|
||||
"cycleway"
|
||||
],
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"cycleway"
|
||||
],
|
||||
"geometry": [
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"surface"
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight"
|
||||
],
|
||||
"geometry": [
|
||||
"line"
|
||||
@@ -15,4 +17,4 @@
|
||||
},
|
||||
"terms": [],
|
||||
"name": "Unknown Road"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref",
|
||||
"cycleway"
|
||||
],
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref",
|
||||
"cycleway"
|
||||
],
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"structure",
|
||||
"access",
|
||||
"surface",
|
||||
"cycleway"
|
||||
"maxheight"
|
||||
],
|
||||
"geometry": [
|
||||
"line"
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
"icon": "highway-service",
|
||||
"fields": [
|
||||
"oneway",
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"surface"
|
||||
"surface",
|
||||
"maxheight"
|
||||
],
|
||||
"geometry": [
|
||||
"line"
|
||||
@@ -13,4 +16,4 @@
|
||||
"service": "alley"
|
||||
},
|
||||
"name": "Alley"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
"icon": "highway-service",
|
||||
"fields": [
|
||||
"oneway",
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"surface"
|
||||
"surface",
|
||||
"maxheight"
|
||||
],
|
||||
"geometry": [
|
||||
"line"
|
||||
@@ -13,4 +16,4 @@
|
||||
"service": "drive-through"
|
||||
},
|
||||
"name": "Drive-Through"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
"icon": "highway-service",
|
||||
"fields": [
|
||||
"oneway",
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"surface"
|
||||
"surface",
|
||||
"maxheight"
|
||||
],
|
||||
"geometry": [
|
||||
"line"
|
||||
@@ -13,4 +16,4 @@
|
||||
"service": "driveway"
|
||||
},
|
||||
"name": "Driveway"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
"icon": "highway-service",
|
||||
"fields": [
|
||||
"oneway",
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"surface"
|
||||
"surface",
|
||||
"maxheight"
|
||||
],
|
||||
"geometry": [
|
||||
"line"
|
||||
@@ -13,4 +16,4 @@
|
||||
"service": "emergency_access"
|
||||
},
|
||||
"name": "Emergency Access"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
"icon": "highway-service",
|
||||
"fields": [
|
||||
"oneway",
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"surface"
|
||||
"surface",
|
||||
"maxheight"
|
||||
],
|
||||
"geometry": [
|
||||
"line"
|
||||
@@ -13,4 +16,4 @@
|
||||
"service": "parking_aisle"
|
||||
},
|
||||
"name": "Parking Aisle"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref",
|
||||
"cycleway"
|
||||
],
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref",
|
||||
"cycleway"
|
||||
],
|
||||
|
||||
20
data/presets/presets/highway/traffic_mirror.json
Normal file
20
data/presets/presets/highway/traffic_mirror.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"geometry": [
|
||||
"point"
|
||||
],
|
||||
"tags": {
|
||||
"highway": "traffic_mirror"
|
||||
},
|
||||
"terms": [
|
||||
"blind spot",
|
||||
"convex",
|
||||
"corner",
|
||||
"curved",
|
||||
"roadside",
|
||||
"round",
|
||||
"safety",
|
||||
"sphere",
|
||||
"visibility"
|
||||
],
|
||||
"name": "Traffic Mirror"
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref"
|
||||
],
|
||||
"geometry": [
|
||||
@@ -17,4 +18,4 @@
|
||||
},
|
||||
"terms": [],
|
||||
"name": "Trunk Road"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"ref"
|
||||
],
|
||||
"geometry": [
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"icon": "circle",
|
||||
"icon": "circle-stroked",
|
||||
"geometry": [
|
||||
"vertex"
|
||||
],
|
||||
|
||||
13
data/presets/presets/highway/turning_loop.json
Normal file
13
data/presets/presets/highway/turning_loop.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"icon": "circle",
|
||||
"geometry": [
|
||||
"vertex"
|
||||
],
|
||||
"tags": {
|
||||
"highway": "turning_loop"
|
||||
},
|
||||
"terms": [
|
||||
"cul-de-sac"
|
||||
],
|
||||
"name": "Turning Loop (Island)"
|
||||
}
|
||||
@@ -5,7 +5,9 @@
|
||||
"maxspeed",
|
||||
"structure",
|
||||
"access",
|
||||
"lanes",
|
||||
"surface",
|
||||
"maxheight",
|
||||
"cycleway"
|
||||
],
|
||||
"geometry": [
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"icon": "religious-christian",
|
||||
"geometry": [
|
||||
"point",
|
||||
"vertex",
|
||||
@@ -8,4 +9,4 @@
|
||||
"historic": "wayside_cross"
|
||||
},
|
||||
"name": "Wayside Cross"
|
||||
}
|
||||
}
|
||||
|
||||
23
data/presets/presets/leisure/dance.json
Normal file
23
data/presets/presets/leisure/dance.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"fields": [
|
||||
"operator",
|
||||
"address",
|
||||
"building_area",
|
||||
"opening_hours"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
"area"
|
||||
],
|
||||
"terms": [
|
||||
"ballroom",
|
||||
"jive",
|
||||
"swing",
|
||||
"tango",
|
||||
"waltz"
|
||||
],
|
||||
"tags": {
|
||||
"leisure": "dance"
|
||||
},
|
||||
"name": "Dance Hall"
|
||||
}
|
||||
@@ -7,7 +7,9 @@
|
||||
"fee",
|
||||
"sanitary_dump_station",
|
||||
"power_supply",
|
||||
"internet_access"
|
||||
"internet_access",
|
||||
"internet_access/fee",
|
||||
"internet_access/ssid"
|
||||
],
|
||||
"geometry": [
|
||||
"point",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user