Mixin RelationMixin

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 $.

Properties

length:number

Replies the number of relation members.

members:array

The relation members

get
replies the current list of relation members as javascript array.
set
Assign the list of relation members. Assign null or undefined to remove all members. Assign an array or a java.util.List of members. Members can be instances of RelationMember, Node, Way, or Relation. null or undefined are ignored.
Note: you can't assign members to a proxy relation.

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; 

Functions

add

Adds additional members at the end of the relation members list.

Signatures
add(m1, m2, ...)
Adds a variable number of members. null or undefined are ignored. A member is either an instance of 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)
Adds an array or list of members. null or undefined are ignored. A list is either a javascript array or an instance of a java 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.

Examples

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.

Parameters

Name Type Description
idx number the index. a number >= 0 and < the current number of members

Examples

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.

Parameters

Name Type Description
idx number the index. a number >= 0 and < the current number of members

Examples

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.

Parameters

Name Type Description
idx number the index. a number >= 0 and < the current number of members

Examples

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.

Parameters

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.

Examples

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.

Parameters

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.

Examples

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()));