Налаштування > Дистанційне керування
Налаштування функцій дистанційного керування.
Дистанційне керування дозволяє JOSM’му бути керованим з інших застосунків, наприклад з оглядачів, відкриваючи на прослуховування порт TCP (8111) на локальному комп’ютері для отримання команд.
Примітка З причин підтримання безпеки ця функція відключена у типових налаштуваннях, її треба ввімкнути вручну.
Доступні наступні функції керування:
- Включити дистанційне керування дозволяє вмикати або вимикати цю функцію.
- Завантаження даних через API
- Імпорт даних за посиланням
- Завантаження шарів із фоном
- Зміна виділення
- Зміна положення поточного вікна мапи
- Створення нових об’єктів
- Отримання версії протоколу
- Підтверджувати всі дії Дистанційного керування вручну
Перелік команд
load_and_zoom
Команда для завантаження в JOSM даних габаритного прямокутника через API, та масштабування завантаженої ділянки та, необов’язково, виділення одного чи кількох об’єктів.
GET /load_and_zoom?left=…&right=…&top=…&bottom=…&select=object[,object…]
де
Параметр | Обов’язковий/необов’язковий | Опис |
---|---|---|
left | О | мінімальна довгота |
right | О | максимальна довгота |
bottom | О | мінімальна широта |
top | О | максимальна широта |
select | Н | розділений комами перелік об’єктів, які потрібно виділити. Об’єкти вказуються комбінацією слів "way", "node" або "relation" та числовим id. Example: select=way38473,node12399,node54646
|
addtags | Н | необов’язковий параметр для додавання теґів. Ключі та значення відокремлюються знаком "=", а кілька теґів можуть бути розділені "|". Спробуйте цей приклад. Працює також із командою zoom. Користувачу потрібно спочатку переглянути теґи та виділення перед тим, як теґи будуть застосовані до виділених об’єктів. |
new_layer | Н | Якщо «істина», завантажити до нового шару |
Приклад
Запустіть JOSM (не забудьте увімкнути Дистанційне керування), потім клацніть на:
JOSM повинен завантажити ділянку у німецькому Шварцвальді та виділити вказану точку.
zoom
Надає JOSM інструкції для масштабування вказаної ділянки та (необов’язково) виділення одного чи де-кількох об’єктів.
GET /zoom?left=…&right=…&top=…&bottom=…&select=object[,object…]
Приймає тіж самі параметри що й команда load_and_zoom
та використовує таке саме кодування для масштабування та виділення. Існує тільки одна різниця — вона не завантажує дані через API.
Підказка: Ця команда може використовуватись тільки для виділення об’єктів. Просто введіть координати довільної маленької ділянки (left..bottom) та додайте перелік об’єктів до параметра select= .
import
Надає JOSM інструкції для для завантаження вказаного файлу OSM та додавання його до поточного набору даних.
GET /import?url=…
imagery
Надає JOSM інструкції для завантаження шару (WMS/TMS) з фоном.
GET /imagery?title=…&type=…&url=…
де
Параметр | Обов’язковий/необов’язковий | Опис |
---|---|---|
title | Н | Назва шару |
type | Н | Тип шару. Можливі значення wms та tms (починаючи з версії 1.3) |
url | О | URL-запит, включаючи шаблони. Повинен бути останнім параметром, все що знаходиться після "&url=" інтерпретується як URL, навіть якщо є символи "&". |
Приклади
- TMS шар "osm"
http://tile.openstreetmap.org/{zoom}/{x}/{y}.png
- WMS шар "landsat"
http://irs.gis-lab.info/?layers=landsat&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}
load_object
Надає JOSM інструкції для завантаження об’єктів із зазначеними id.
GET /load_object?new_layer=true|false&objects=…
де
Параметр | Обов’язковий/необов’язковий | Опис |
---|---|---|
objects | О | Перелік розділених комами id об’єктів, наприклад "n1234,n1235,w84,r958493 "
|
new_layer | Н | Якщо «істина», завантажити до нового шару |
Приклад
http://localhost:8111/load_object?new_layer=true&objects=w106159509
add_node
Надає JOSM інструкції для створення нової точки за вказаними координатами.
Примітка: Ця дія потребує дозволу на Створення нових об’єктів, який є відключеним у типових налаштуваннях.
GET /add_node?lon=…&lat=…
де
Параметр | Обов’язковий/необов’язковий | Опис |
---|---|---|
lon | О | Довгота точки |
lat | О | Широта точки |
Приклад
http://localhost:8111/add_node?lon=13.3&lat=53.2
add_way
Надає JOSM інструкції для створення нової лінії з новими точками по заданих координатах.
Примітка: Ця дія потребує дозволу на Створення нових об’єктів, який є відключеним у типових налаштуваннях.
GET /add_way?way=lat1,lon1;lat2,lon2;…
де
Параметр | Обов’язковий/необов’язковий | Опис |
---|---|---|
way | О | Пари довгота та широта, розділені точкою з комою. |
Приклад
http://localhost:8111/add_way?way=53.2,13.3;53.3,13.3;53.3,13.2
version
Ця команда звітує про версію протоколу інтерфейсу RemoteControl. Розробники можуть використовувати цей запит для перевірки чи підтримує запущена версія JOSM потрібний функціонал.
GET /version[?jsonp=callback]
Команда повертає об’єкт json, який містить ідентифікатор застосунка, який завжди буде "JOSM RemoteControl", основний і додатковий номер версії. Сумісні зміни протоколу збільшують додатковий номер. Несумісні — основний номер. Отже клієнтський застосунок із протоколом версії 1.0 буде працювати із JOSM, що має версію протоколу 1.1. Але немає ніякої гарантії, що він буде працювати із версією протоколу 2.0. Отже клієнт повинен перевіряти основний номер версії.
Типовий вивід виглядатиме приблизно так:
{ "protocolversion": { "major": 1, "minor": 0 }, "application": "JOSM RemoteControl" }
Для старих оглядачів не реалізовано команду Cross-Origin Resource Sharing (CORS), що надає можливість зворотнього виклику jsonp. Завантажте URL до сценарію додайте відповідні теґи та назву зворотнього виклику, який отримуватиме дані JSON.
Тут наводиться зразковий код, який перевіряє можливості CORS capabilities та використовує JSONP як розв’язання задач зі зворотнім викликом.
// in addition to the CC-BY-SA of the wiki feel free to use the following source for any purpose without restrictions (PD) // credits and additions appreciated: http://wiki.openstreetmap.org/wiki/User:Stephankn function checkJOSM(version){ alert(version.application + " uses protocol version " + version.protocolversion.major + "." + version.protocolversion.minor); // do something useful, maybe showing edit button } var url = "http://127.0.0.1:8111/version"; var useFallback = false; // currently FF3.5, Safari 4 and IE8 implement CORS if (XMLHttpRequest) { var request = new XMLHttpRequest(); if ("withCredentials" in request) { request.open('GET', url, true); request.onreadystatechange = function(){ if (request.readyState != 4) { return; } if (request.status == 200) { checkJOSM(eval('(' + request.responseText + ')')); } }; request.send(); } else if (XDomainRequest) { var xdr = new XDomainRequest(); xdr.open("get", url); xdr.onload = function(){ checkJOSM(eval('(' + xdr.responseText + ')')); }; xdr.send(); } else { useFallback = true; } } else { // no XMLHttpRequest available useFallback = true; } if (useFallback) { // Use legacy jsonp call var s = document.createElement('script'); s.src = url + '?jsonp=checkJOSM'; s.type = 'text/javascript'; if (document.getElementsByTagName('head').length > 0) { document.getElementsByTagName('head')[0].appendChild(s); } }
Інші команди
Функції Відділеного керування дозволяють іншим втулкам додавати додаткові команди. Їх потрібно реєструвати у класі RequestHandler та визначати команди керуючи цим класом. Синтаксис команд повинен визначатись у цих втулках.
Втулок Reverter користується цією можливістю починаючи з версії 27091.
Дивись також
Стара сторінка втулка Дистанційного керування JOSM Remote-Plugin в OSM-Вікі
Назад до меню Налаштування
Назад до основної сторінки Довідки