Skip to main content

Користувацький пакет

Огляд

У застосунку OsmAnd можна створити багато налаштувань та експортувати їх у файл .osf. Після додавання опису, зображення та іконки ці налаштування стають повністю незалежним плагіном. Цей плагін може включати:

  • Усі Налаштування профілю з новим профілем.
  • Спеціальний набір швидких дій та макетів меню для Висувної панелі та Контекстного меню.
  • Користувацька офлайн-мапа всередині плагіна або запропонована для завантаження.
  • Спеціальні типи онлайн-маршрутизації та онлайн-мапи.

Як створити

Користувацький пакет

Файл .osf — це перейменований файл .zip, що містить файли .json та папки. Як приклад, ви можете завантажити наші підготовлені файли з Google Drive або готовий плагін за цим посиланням.

Ви можете змінювати файли .json за допомогою файлу items.json OsmAnd, який містить команди для імпорту файлів .json, файлів .obf, іконок тощо.

Вам може знадобитися прочитати:

items.json

Файл items.json OsmAnd.
{
"version":1,
"items":[

{
"type":"PLUGIN",
"pluginId":"test.plugin",
"version" : 1,
"icon": {
"" : "@plugin-id.png"

},
"image": {
"" :"@plugin-image.webp"
},
"name":{
"":"Test Plugin",
"ru":"Test Plugin: RU language"
},
"description":{
"":"This package is a test package and displays test information.",
"ru":"This package is a test package and displays test information. RU language."
}
},

{
"type":"RESOURCES",
"pluginId":"test.plugin",
"file":"res"
},


{
"type":"DOWNLOADS",
"pluginId":"test.plugin",
"items":[
{
"path":"test",
"name":{
"":"My offline maps",
"ru":"RU: My offline maps"
},
"icon":{
"":"ic_world_globe_dark"
},
"header-color":"#002E64",
"description":{
"text":{
"":"This package is a collection of online and offline map sources of various types.",
"ru":"RU: This package is a collection of online and offline map sources of various types."
},
"button":[
{
"":"Telegram chat OsmAnd",
"url":"https:\/\/t.me\/OsmAndMaps"
}
]
}
},
{
"scope-id":"offline-maps",
"path":"test/Waterway",
"header-color":"#002E64",
"name":{
"":"Waterway",
"ru":"RU: waterway"
},
"icon":{
"":"ic_world_globe_dark"
},
"items":[
{
"name":{
"":"Offline Waterway map SA",
"ru":"RU: Offline Waterway map SA"
},
"filename":"waterway.obf.zip",
"type":"map",
"isHidden":"true",
"timestamp":1582994500,
"containerSize":28195301,
"contentSize":28195301,
"description":{
"text":{
"":"Zoom min: 0<br />Zoom max: 19<br />Countries: SA",
"ru":"RU: Zoom min: 0<br />Zoom max: 19<br />Countries: SA"
},
"image":[
"https://drive.google.com/uc?id=16HjUHsSWNgeQI0bmuup9ohpyrg6rWkHH&export=download"
]
},
"downloadurl":"https://drive.google.com/uc?id=10iP2VZexHtHC0QLhACZ1QoEy-duNN5Wg&export=download",
"firstsubname":{
"":"Waterway",
"ru":"RU: Waterway"
},
"secondsubname":{
"":"",
"ru":""
}
}
]
}]
},

{
"type":"PROFILE",
"pluginId":"test.plugin",
"file":"bicycle_test.json",
"appMode":{
"iconColor":"RED",
"iconName":"ic_action_motorcycle_dark",
"locIcon":"BENTLEY",
"navIcon":"BENTLEY",
"order":32,
"parent":"bicycle",
"stringKey":"bicycle_test",
"userProfileName" : "Test Prof"
},
"prefs" : {
"drawer_logo": { "" : "@logo.png"},
"drawer_url" : { "" : "https://osmand.net"},
"drawer_items" : { "hidden" : ["dashboard"], "order" : ["map_markers", "my_places", "search"] },
"context_menu_items" : {},
"configure_map_items" : {},
"route_service":"OSMAND",
"renderer":"test-rendering.render.xml",
"routing_profile":"routing-test.xml/test-car"
}
},

{
"type":"FILE",
"pluginId":"test.plugin",
"subtype" : "rendering_style",
"file":"\/rendering\/test-rendering.render.xml"
},

{
"type":"FILE",
"pluginId":"test.plugin",
"subtype" : "routing_config",
"file":"\/routing\/routing-test.xml"
},

{
"type":"SUGGESTED_DOWNLOADS",
"pluginId":"test.plugin",
"comment-1" : "search-type are latlon (closest by latlon), worldregion (by boundaries if name matches worldRegion downloadName as we do for default types), by default natural order, limit finds first N elements",
"comment-2" : "predefined scope-id are @type of indexes.xml map, srtm_map, road_map, wikimap, wikivoyage, hillshade, slope, fonts, voice, depth ",
"comment-3" : "names filters ignore case by name.contains(filterName)",
"items": [{
"scope-id" : "test-downloads",
"limit" : 1,
"search-type" : "latlon"
}, {
"scope-id" : "road_map",
"names" : [
"Poland_lesser-poland_europe_2.obf.zip", "netherlands_noord-holland_europe"]
}, {
"scope-id" : "wikimap",
"search-type" : "worldregion"
}]
},

{
"type":"NAVIGATION_ICONS",
"pluginId":"test.plugin",
"items" : [{
"locationIcon": {
"" : "@bentley-car.png"
},
"locationIconId": "BENTLEY",
"navigationIcon": {
"" : "@bentley-car-moving.png"
},
"navigationIconId": "BENTLEY"
}]
},

{
"type":"QUICK_ACTIONS",
"pluginId":"test.plugin",
"items": [{
"name": "Test quick action",
"actionType": "osmbug.add",
"params": "{\"dialog\":\"false\",\"message\":\"Message\"}"
}]
},

{
"type":"POI_UI_FILTERS",
"pluginId":"test.plugin",
"items": [{
"name": "Test Search",
"filterId": "test_search",
"acceptedTypes": "{\"sustenance\":[\"bar\",\"alpine_hut\"]}"
}]
},

{
"type":"MAP_SOURCES",
"pluginId":"test.plugin",
"items": [{
"sql": false,
"name": "OsmAnd (test)",
"minZoom": 1,
"maxZoom": 19,
"url": "https:\/\/tile.osmand.net\/hd\/{0}\/{1}\/{2}.png",
"ellipsoid": false,
"inverted_y": false,
"timesupported": false,
"expire": -1,
"inversiveZoom": false,
"ext": ".png",
"tileSize": 512,
"bitDensity": 8,
"avgSize": 18000
}]
}
]
}

Типи імпорту

Існує багато типів імпорту для файлу items.JSON OsmAnd. Усі типи можна знайти тут, а в цій статті описано лише деякі з них.

Опис плагіна

Для початку ви створюєте та додаєте свій плагін до items.JSON. Перший тип імпорту — "PLUGIN". ПРИМІТКА. Ви повинні створити та додати цей рядок для кожного типу "pluginId":"test.plugin", де test.plugin — це назва вашого пакета.

Користувацький пакет

Зображення плагіна

Щоб імпортувати зображення іконок вашого плагіна в OsmAnd, створіть папку (у нашому прикладі це папка "res ”), де будуть зберігатися файли зображень. Назва цього типу — "RESOURCES".

Користувацький пакет

Профілі

Використовуючи тип "PROFILE ”, ви можете додати навігаційний профіль для свого плагіна. Ви можете отримати всю інформацію про свій навігаційний профіль в експортованому файлі JSON, де можна прочитати, які типи items.JSON були додані (“QUICK_ACTIONS”, “POI_UI_FILTERS”, “MAP_SOURCES ” або інші). ПРИМІТКА: Почніть створення навігаційного профілю з усіма параметрами, для цього експортуйте навігаційні профілі та скопіюйте необхідні елементи з файлу навігаційних profiles.osf (items.JSON) до файлу PLUGIN.osf (items.JSON).

Користувацький пакет

Завантаження

Ви можете додати будь-які файли, такі як SQLite, OBF або шрифти, для завантаження за допомогою типу "DOWNLOADS". Основні типи файлів, що завантажуються, можна знайти тут. ПРИМІТКА. Тег "isHidden":"true" (за замовчуванням false) може приховати дані вашої мапи від Мап та ресурсів OsmAnd. У "scope-id" ви можете додати всю необхідну інформацію про URL-адресу вашого файлу, назву, опис тощо.

Користувацький пакет

Запропоновані завантаження

У типі "SUGGESTED_DOWNLOADS" ви можете завантажити мапи, які OsmAnd пропонує при імпорті нового плагіна.

Користувацький пакет

Файли

У типі "FILE" ви можете додати файли з папок вашого плагіна до папок OsmAnd, "підтип" яких можна знайти тут. У наведеному прикладі додано файли routing.xml та rendering.xml. Ви можете прочитати про те, як створити ці файли, за посиланнями тут та тут.

Користувацький пакет

Коли файл items.JSON та всі файли в папці готові, ви можете заархівувати їх в один документ. Після цього файл .zip слід перейменувати на .osf, і тоді ваш PLUGIN.osf буде готовий до додавання в застосунок OsmAnd.

Приклади

Ви можете ознайомитися з деякими плагінами, які користувачі OsmAnd створили самостійно:

Цю статтю востаннє оновлено в червні 2024 року