Перейти до основного вмісту

Власний пакет

Огляд

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

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

Як створити

Власний пакет

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

Ви можете змінювати файли .json за допомогою файлу OsmAnd items.json, який містить команди для імпорту файлів .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 зробили самостійно: