Skip to main content

Pakiet niestandardowy

Przegląd

W aplikacji OsmAnd można tworzyć wiele dostosowań i eksportować je do pliku .osf. Po dodaniu opisu, obrazu i ikony, te dostosowania stają się całkowicie niezależną wtyczką. Wtyczka ta może zawierać:

  • Wszystkie ustawienia profilu z nowym profilem.
  • Specyficzny zestaw szybkich akcji i układów menu dla szuflady i menu kontekstowego.
  • Niestandardową mapę offline wewnątrz wtyczki lub sugerowaną do pobrania.
  • Specyficzne typy tras online i mapy online.

Jak stworzyć

Pakiet niestandardowy

Plik .osf to zmieniony plik .zip zawierający pliki i foldery .json. Przykładowo, możesz pobrać nasze przygotowane pliki z Google Drive lub gotową wtyczkę z tego linku.

Możesz modyfikować pliki .json za pomocą pliku items.json OsmAnd, który zawiera polecenia do importowania plików .json, plików .obf, ikon i innych.

Możesz potrzebować przeczytać:

items.json

Plik 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
}]
}
]
}

Typy importu

Istnieje wiele typów importu dla pliku OsmAnd items.JSON. Wszystkie typy można znaleźć tutaj, a ten artykuł opisuje tylko kilka z nich.

Opis wtyczki

Na początek tworzysz i dodajesz swoją wtyczkę do items.JSON. Pierwszy typ importu to "PLUGIN". UWAGA. Musisz utworzyć i dodać tę linię dla każdego typu "pluginId":"test.plugin", gdzie test.plugin to nazwa Twojego pakietu.

Pakiet niestandardowy

Obrazy wtyczki

Aby zaimportować obrazy ikon wtyczki do OsmAnd, utwórz folder (w naszym przykładzie jest to folder "res”), w którym będą przechowywane pliki obrazów. Nazwa tego typu to "RESOURCES".

Pakiet niestandardowy

Profile

Używając typu "PROFILE” możesz dodać profil nawigacyjny dla swojej wtyczki. Wszystkie informacje o profilu nawigacyjnym możesz uzyskać w wyeksportowanym pliku JSON, gdzie można odczytać, które typy items.JSON zostały dodane („QUICK_ACTIONS”, „POI_UI_FILTERS”, „MAP_SOURCES” lub inne). UWAGA: Rozpocznij tworzenie profilu nawigacyjnego ze wszystkimi parametrami, w tym celu wyeksportuj profile nawigacyjne i skopiuj niezbędne elementy z pliku profiles.osf (items.JSON) do pliku PLUGIN.osf (items.JSON).

Pakiet niestandardowy

Pobieranie

Możesz dodawać dowolne pliki, takie jak SQLite, OBF lub czcionki, do pobrania za pomocą typu "DOWNLOADS". Główne typy plików do pobrania można znaleźć tutaj. UWAGA. Tag "isHidden":"true" (domyślnie jest to false) może ukryć dane mapy przed Mapami i zasobami OsmAnd. W "scope-id" możesz dodać wszystkie niezbędne informacje o adresie URL pliku, nazwie, opisie i innych.

Pakiet niestandardowy

Sugerowane pobieranie

W typie "SUGGESTED_DOWNLOADS" możesz pobrać mapy, które OsmAnd oferuje podczas importowania nowej wtyczki.

Pakiet niestandardowy

Pliki

W typie "FILE" możesz dodawać pliki z folderów wtyczki do folderów OsmAnd, których "podtyp" można znaleźć tutaj. W podanym przykładzie dodano pliki routing.xml i rendering.xml. Możesz przeczytać, jak tworzyć te pliki, pod linkami tutaj i tutaj.

Pakiet niestandardowy

Gdy plik items.JSON i wszystkie pliki w folderze są gotowe, możesz spakować je w jeden dokument. Następnie plik .zip powinien zostać zmieniony na .osf, a wtedy Twój PLUGIN.osf będzie gotowy do dodania do aplikacji OsmAnd.

Przykłady

Możesz zapoznać się z niektórymi wtyczkami, które użytkownicy OsmAnd stworzyli samodzielnie:

Ostatnia aktualizacja: czerwiec 2024