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