Changes between Initial Version and Version 1 of Ru:Help/RemoteControlCommands


Ignore:
Timestamp:
2017-11-17T12:06:52+01:00 (8 years ago)
Author:
ak099
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Ru:Help/RemoteControlCommands

    v1 v1  
     1[[TranslatedPages(revision=4,outdated=Незавершённый перевод. This page is missing command features.)]]
     2
     3[[PageOutline(3-3,Команды удалённого управления,inline)]]
     4
     5== Список команд ==
     6
     7Полный список команд и обязательных/необязательных параметров приведён на странице по адресу http://127.0.0.1:8111/ (когда JOSM запущен).
     8
     9=== {{{load_and_zoom}}} ===
     10Указывает JOSM скачать область из API, приблизиться к скачанной области и (необязательно) выделить один или более объектов.
     11{{{
     12GET /load_and_zoom?left=...&right=...&top=...&bottom=...&select=object[,object...]
     13}}}
     14где
     15||= **Параметр** =||= **Обязательный/необязательный** =||= **Значение** =||
     16|| `bottom` || R || Minimum latitude ||
     17|| `top` || R || Maximum latitude ||
     18|| `left` || R || Minimum longitude ||
     19|| `right` || R || Maximum longitude ||
     20|| `new_layer` || O || If '''true''', downloads to a new layer ||
     21|| `addtags` || O || Optional parameter to add tags. The key and value is separated by "=" and multiple tags can be separated by a Pipe "|". See [#addtags details]. ||
     22|| `select` || O || Comma-separated list of objects that should be selected. Object specifiers are combinations of the words "way", "node", or "relation", and the numerical object id. Example: {{{select=way38473,node12399,node54646}}} ||
     23|| `zoom_mode` || O || '''download''' | '''selection''', defaults to selection ||
     24|| `changeset_comment` || O || Comment of the changeset ||
     25|| `changeset_source` || O || Source of the changeset ||
     26|| `search` || O || Search objects in the current data layer. See [wiki:/Help/Action/Search Search] ||
     27
     28==== Example ====
     29
     30Start JOSM (don't forget to enable the !RemoteControl feature), then click on:
     31
     32[http://127.0.0.1:8111/load_and_zoom?left=8.19&right=8.20&top=48.605&bottom=48.590&select=node413602999]
     33
     34JOSM should now load an area in the German Schwarzwald and have the specified node selected.
     35
     36=== {{{zoom}}} ===
     37Instructs JOSM to zoom to the specified area and optionally select one or more objects.
     38{{{
     39GET /zoom?left=...&right=...&top=...&bottom=...&select=object[,object...]
     40}}}
     41Accepts the same parameters as the [#load_and_zoom load_and_zoom] command and uses the same code for zoom and selection. The only difference is that no data will be loaded from the API.
     42
     43**Hint**: This command can also be used to select objects only. Just enter a small arbitrary area to the left..bottom entries and add the object list to the select= option.
     44=== {{{import}}} ===
     45Instructs JOSM to download the specified OSM file and add it to the current data set.
     46{{{
     47GET /import?url=...
     48}}}
     49where
     50||= **Parameter** =||= **Required/Optional** =||= **Meaning** =||
     51|| `url` || R || The Request URL, including patterns. Must be the last parameter, everything after "&url=" is interpreted as URL, even if it contains "&" characters. ||
     52|| `new_layer` || O || If '''true''', downloads to a new layer ||
     53
     54=== {{{load_data}}} ===
     55(since version 1.6)
     56Instruct JOSM to load OSM data, directly encoded in the URL, instead of coming from an external file. This is only suited for smaller data (some browsers limit the maximum URL length), but it is faster (since no download is required), and in many cases where dynamically generated data is needed, it's easier to generate.
     57
     58{{{
     59GET /load_data?new_layer=(true/false)&layer_name=...&mime_type=...&data=...
     60}}}
     61where
     62||= **Parameter** =||= **Required/Optional** =||= **Meaning** =||
     63|| `data` || R || The XML data to load, this should be URL encoded in a way that also encodes the special characters &, = and ? to resp. %26, %3D and %3F. The JS [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent encodeUriComponent()] method provides this functionality out of the box. ||
     64|| `new_layer` || O || Chose to load the data in a new layer ||
     65|| `mime_type` || O || Mime type of the data, by default this is "application/x-osm+xml", which is currently the only supported mime type, but in the future other mime types could be supported ||
     66|| `layer_name` || O || Only valid when the data is loaded in a new layer; Gives JOSM a hint on how to name the layer ||
     67
     68=== {{{open_file }}} ===
     69Open a local file in JOSM.
     70
     71{{{
     72GET /open_file?filename=...
     73}}}
     74where
     75||= **Parameter** =||= **Required/Optional** =||= **Meaning** =||
     76|| `filename` || R || The local file to open in JOSM (Ie: /tmp/test.osm) ||
     77
     78
     79=== {{{imagery}}} ===
     80Instructs JOSM to add an imagery (WMS/TMS) layer.
     81{{{
     82GET /imagery?title=...&type=...&url=...
     83}}}
     84where
     85||= **Parameter** =||= **Required/Optional** =||= **Meaning** =||
     86|| `url` || R || The Request URL, including patterns. Must be the last parameter, everything after "&url=" is interpreted as URL, even if it contains "&" characters.  ||
     87|| `title` || O || The display name of the layer ||
     88|| `type` || O || Type of the layer. Possible values are `wms`, `tms` and `bing` [[BR]] (since !RemoteControl Version 1.3) ||
     89|| `cookies` || O ||  ||
     90|| `min_zoom` || O || The minimum zoom level [[BR]] (since !RemoteControl Version 1.4) ||
     91|| `max_zoom` || O || The maximum zoom level. For higher scales, the images of the maximum level is enlarged [[BR]] (since !RemoteControl Version 1.4) ||
     92
     93
     94mandatory parameters: url
     95optional parameters: title, type, cookies, min_zoom, max_zoom
     96
     97==== Examples ====
     98* TMS layer "osm" {{{http://tile.openstreetmap.org/{zoom}/{x}/{y}.png}}}
     99
     100[http://localhost:8111/imagery?title=osm&type=tms&url=http://tile.openstreetmap.org/%7Bzoom%7D/%7Bx%7D/%7By%7D.png]
     101
     102* WMS layer "landsat" {{{http://irs.gis-lab.info/?layers=landsat&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox} }}}
     103[http://localhost:8111/imagery?title=landsat&type=wms&url=http://irs.gis-lab.info/?layers=landsat&SRS=%7Bproj%7D&WIDTH=%7Bwidth%7D&HEIGHT=%7Bheight%7D&BBOX=%7Bbbox%7D]
     104
     105=== {{{load_object}}} ===
     106
     107Instructs JOSM to download objects with a given id.
     108{{{
     109GET /load_object?new_layer=true|false&objects=...
     110}}}
     111where
     112||= **Parameter** =||= **Required/Optional** =||= **Meaning** =||
     113|| `objects` || R || Comma separated list of object ids, e.g. "{{{n1234,n1235,w84,r958493}}}" ||
     114|| `new_layer` || O || If '''true''', downloads to a new layer ||
     115|| `addtags` || O || Optional parameter to add tags. The key and value is separated by "=" and multiple tags can be separated by a Pipe "|". See [#addtags details]. ||
     116|| `relation_members` || O || If '''true''', downloads objects members of the relations as well. ||
     117|| `referrers` || O || If '''true''', downloads referrers of the object as well. I.e. parent relations, and for nodes, additionally, parent ways. (since r6782) ||
     118
     119==== Example ====
     120
     121[http://localhost:8111/load_object?new_layer=true&objects=w106159509]
     122
     123=== {{{add_node}}} ===
     124
     125Instructs JOSM to create a new node at the given coordinates.
     126
     127**Note**: This action requires the permission ''Create new objects'' which is disabled by default.
     128
     129{{{
     130GET /add_node?lon=...&lat=...
     131}}}
     132where
     133||= **Parameter** =||= **Required/Optional** =||= **Meaning** =||
     134|| `lon` || R || The longitude of the node ||
     135|| `lat` || R || The latitude of the node ||
     136|| `addtags` since v1.5|| O || Optional parameter to add tags. The key and value is separated by "=" and multiple tags can be separated by a Pipe "|". See [#addtags details]. ||
     137
     138==== Example ====
     139http://localhost:8111/add_node?lon=13.3&lat=53.2
     140
     141=== {{{add_way}}} ===
     142
     143Instructs JOSM to create a new way with new way nodes at given coordinates.
     144
     145**Note**: This action requires the permission ''Create new objects'' which is disabled by default.
     146
     147{{{
     148GET /add_way?way=lat1,lon1;lat2,lon2;...
     149}}}
     150where
     151||= **Parameter** =||= **Required/Optional** =||= **Meaning** =||
     152|| `way` || R || Pairs of latitude, longitude coordinates separated by semicolon. ||
     153|| `addtags` since v1.5|| O || Optional parameter to add tags. The key and value is separated by "=" and multiple tags can be separated by a Pipe "|". See [#addtags details]. ||
     154
     155==== Example ====
     156
     157http://localhost:8111/add_way?way=53.2,13.3;53.3,13.3;53.3,13.2
     158
     159
     160=== {{{version}}} ===
     161This command returns the current protocol version of the installed !RemoteControl interface. Developers can use it to query for a running instance of JOSM and also determine whether the requested functionality is available in the client.
     162{{{
     163GET /version[?jsonp=callback]
     164}}}
     165where
     166||= **Parameter** =||= **Required/Optional** =||= **Meaning** =||
     167|| `jsonp` || O|| Jsonp callback for older browsers not implementing ​Cross-Origin Resource Sharing (CORS) ||
     168
     169The command returns a json object containing an application identifier that is always "JOSM !RemoteControl", a major number and a minor number. Compatible protocol changes result in an increase of the minor number. Incompatible changes increase the major number. So a client application knowing of protocol version 1.0 can still talk to JOSM having 1.1. But it's not guaranteed to be working with 2.0. So the client should verify the major number.
     170
     171A typical output looks like this:
     172{{{
     173#!js
     174{
     175   "protocolversion": {
     176      "major": 1,
     177      "minor": 0
     178   },
     179   "application": "JOSM RemoteControl"
     180}
     181}}}
     182For older browsers not implementing [http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing Cross-Origin Resource Sharing (CORS)] the command provides the possibility for jsonp callback. Load the URL in a script tag and supply the name of a callback that will receive the JSON data.
     183
     184Following is some sample code that checks for CORS capabilities and uses [http://en.wikipedia.org/wiki/JSONP JSONP] as a fallback solution.
     185{{{
     186#!js
     187// in addition to the CC-BY-SA of the wiki feel free to use the following source for any purpose without restrictions (PD)
     188// credits and additions appreciated: https://wiki.openstreetmap.org/wiki/User:Stephankn
     189
     190function checkJOSM(version){
     191   alert(version.application + " uses protocol version " + version.protocolversion.major + "." + version.protocolversion.minor);
     192   // do something useful, maybe showing edit button
     193}
     194
     195var url = "http://127.0.0.1:8111/version";
     196var useFallback = false;
     197// currently FF3.5, Safari 4 and IE8 implement CORS
     198if (XMLHttpRequest) {
     199   var request = new XMLHttpRequest();
     200   if ("withCredentials" in request) {
     201      request.open('GET', url, true);
     202      request.onreadystatechange = function(){
     203         if (request.readyState != 4) {
     204            return;
     205         }
     206         if (request.status == 200) {
     207            checkJOSM(eval('(' + request.responseText + ')'));
     208         }
     209      };
     210      request.send();
     211   }
     212   else if (XDomainRequest) {
     213      var xdr = new XDomainRequest();
     214      xdr.open("get", url);
     215      xdr.onload = function(){
     216         checkJOSM(eval('(' + xdr.responseText + ')'));
     217      };
     218      xdr.send();
     219   } else {
     220      useFallback = true;
     221   }
     222}
     223else {
     224   // no XMLHttpRequest available
     225   useFallback = true;
     226}
     227
     228if (useFallback) {
     229   // Use legacy jsonp call
     230   var s = document.createElement('script');
     231   s.src = url + '?jsonp=checkJOSM';
     232   s.type = 'text/javascript';
     233   
     234   if (document.getElementsByTagName('head').length > 0) {
     235      document.getElementsByTagName('head')[0].appendChild(s);
     236   }
     237   
     238}
     239}}}
     240
     241
     242=== Adding, changing or deleting tags === #addtags
     243Try this example: 
     244[http://localhost:8111/load_and_zoom?addtags=wikipedia%3Ade=Weiße_Gasse%7Cmaxspeed=5&select=way23071688,way23076176,way23076177,&left=13.739727546842&right=13.740890970188&top=51.049987191025&bottom=51.048466954325].
     245(Works also with the zoom-command)
     246
     247The user must review the tags and the selection before the tags are applied to the selected objects.
     248If the tag exists on some objects, it will be can be replaced.
     249
     250Since protocol version 1.5
     251- `add_node` and `add_way` commands support `addtags` parameter
     252- It is possible to use `=` character in value and all leading/trailing spaces are trimmed.
     253[http://localhost:8111/add_node?lon=13.3&lat=53.2&addtags=natural=tree%7Cname=%20%20%20==Great%20Oak==] (creates node with natural=tree an name="==Great Oak==")
     254- If empty value is found, tag is to be deleted from objects (checkbox-confirmation is needed)
     255[http://localhost:8111/load_and_zoom?addtags=wikipedia%3Ade=%7Cmaxspeed=&select=way23071688,way23076176,way23076177,&left=13.739727546842&right=13.740890970188&top=51.049987191025&bottom=51.048466954325].
     256
     257=== Other commands ===
     258Remotecontrol allows other plugins to add additional commands. The other registers a RequestHandler class and specifies a command to be handled by this class. The command syntax has to be defined by the other plugin.
     259
     260Reverter plugin since version 27091 makes use of this feature.
     261
     262----
     263
     264Back to [[Help/Preferences/RemoteControl]][[br]]
     265Back to [[Help/Preferences]][[br]]
     266Back to [[Help]]