This mixin provides additional properties and methods which you can invoke on an instance of Relation.
You can access relation members using
relation[i], see examples below.
var Relation = org.openstreetmap.josm.data.osm.Relation;
var out = java.lang.System.out;
var relation = new Relation(12345);
// use the mixin property 'id' to access the relation id ... 
var id = relation.id;
// ... or the native method getUniqueId()
id = relation.getUniqueId();
// loop over relation members and print out the roles 
for (var i=0; i < relation.length; i++) {
  out.println(relation[i].role);
}| Name | Description | 
|---|---|
| Properties | |
| length | Replies the number of relation members. | 
| members | Set or get the relation members | 
| Methods | |
| add | |
| getIdAt | Replies the object id of a member. | 
| getObjectAt | Replies the object of a member. | 
| getRoleAt | Replies the role of a member. | 
| insertAt | Inserts one or more members at a position. | 
| setAt | Sets one or more members at a position. | 
This mixin extends the mixin OsmPrimitiveMixin. Properties and methods of the parent mixin are available for scripting, too.
This mixin provides additional properties and methods for the native Java class 
Relation, whose native public methods are available
for scripting, too. If a native method name is hidden by a property name in the mixin,
then prefix the native name with $.
length:number
Replies the number of relation members.
members:array
The relation members
var rb = require("josm/builder").RelationBuilder;
var nb = require("josm/builder").NodeBuilder;
var relation = rb.create();
// set members 
relation.members = [nb.create(), rb.member('role.1', rb.create(12345))];
// get members 
var members = relation.members; add
Adds additional members at the end of the relation members list.
Signaturesadd(m1, m2, ...)RelationMember or a 
  Node, Way,
  or Relation. If an OSM primitive
  is passed in, a relation member with an empty role is created.add(array|list)java.util.List). A list element is either an
  instance of RelationMember,
  or  or a  Node, Way,
  or Relation. If an OSM primitive
  is passed in, a relation member with an empty role is created. null and undefined are
  ignored.var rbuilder = require("josm/builder").RelationBuilder;
var nbuilder = require("josm/builder").NodeBuilder;
var relation = rb.create();
// add a member using a RelationMember instance (created with the utility method rbuilder.member(...)
relation.add(rbuilder.member('myrole', nbuilder.create()));
// add three nodes as members, each with the empty role
relation.add(nb.create(), nb.create(), nb.create());
// add an array of members 
var m = [nb.create(), rb.member("role.1", nb.create())];
relation.add(m);getIdAt:number
Replies the unique object id for the member object at position idx.
| Name | Type | Description | 
|---|---|---|
| idx | number | the index. a number >= 0 and < the current number of members | 
var rb = require("josm/builder").RelationBuilder;
var nb = require("josm/builder").NodeBuilder;
var wb = require("josm/builder").WayBuilder;
// relation has two members 
var relation = rb.withMembers(nb.create(), nb.create()).create();
var id = relation.getIdAt(0);
  getObjectAt:object
Replies the object represented by the member at position idx.
| Name | Type | Description | 
|---|---|---|
| idx | number | the index. a number >= 0 and < the current number of members | 
var rb = require("josm/builder").RelationBuilder;
var nb = require("josm/builder").NodeBuilder;
var wb = require("josm/builder").WayBuilder;
// relation has two members 
var n1 = nb.create();
var relation = rb.withMembers(n1, nb.create()).create();
var node = relation.getObjectAt(0)  // ==> n1
  getRoleAt:string
Replies the member role for the member at position idx.
| Name | Type | Description | 
|---|---|---|
| idx | number | the index. a number >= 0 and < the current number of members | 
var rb = require("josm/builder").RelationBuilder;
var nb = require("josm/builder").NodeBuilder;
var wb = require("josm/builder").WayBuilder;
// relation has two members 
var relation = rb.withMembers(nb.create(), nb.create()).create();
var role = relation.getRoleAt(0)  // ==> "", the empty role ;
  insertAt
Inserts a member at position idx.
| Name | Type | Description | 
|---|---|---|
| idx | number | the index. a number >= 0 and <= the current number of members | 
| the | object | object either a RelationMember, or a Node, a Way, or a Relation. Must not be null or undefined. | 
var rb = require("josm/builder").RelationBuilder;
var nb = require("josm/builder").NodeBuilder;
var wb = require("josm/builder").WayBuilder;
// create a relation with two members 
var relation = rb.withMembers(nb.create(), nb.create()).create();
// insert another member for a another node at position 0
relation.insertAt(0, nb.create());
// insert a way with role 'role.1' at position 1
relation.insertAt(1, rb.member('role.1', wb.create()));
  setAt
Sets a member at position idx.
| Name | Type | Description | 
|---|---|---|
| idx | number | the index. a number >= 0 and < the current number of members | 
| the | object | object either a RelationMember, or a Node, a Way, or a Relation. Must not be null or undefined. | 
var rb = require("josm/builder").RelationBuilder;
var nb = require("josm/builder").NodeBuilder;
var wb = require("josm/builder").WayBuilder;
// relation has two members 
var relation = rb.withMembers(nb.create(), nb.create()).create();
// set  another member for a another node at position 0
relation.setAt(0, nb.create());
// set a way with role 'role.1' at position 1
relation.setAt(1, rb.member('role.1', wb.create()));