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ą. Taka wtyczka może zawierać:
- Wszystkie Ustawienia profilu z nowym profilem.
- Określony 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 trasowania online i mapy online.
Jak utworzyć

Plik .osf to plik .zip o zmienionej nazwie, zawierający pliki .json i foldery. Jako przykład można pobrać nasze przygotowane pliki z Dysku Google 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że być konieczne przeczytanie:
- O formacie
.json. - O edytorach tekstu, za pomocą których można otwierać i edytować pliki w formacie JSON.
- O edytorze Sublime Text, który jest używany w OsmAnd jako odniesienie.
- Możesz sprawdzić swój kod w JSON Editor Online.
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 items.JSON OsmAnd. 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. Pierwszym typem importu jest "PLUGIN".
UWAGA. Musisz utworzyć i dodać tę linię dla każdego typu "pluginId":"test.plugin", gdzie test.plugin to nazwa Twojego pakietu.

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".

Profile
Używając typu "PROFILE ” możesz dodać profil nawigacyjny dla swojej wtyczki. Wszystkie informacje o swoim 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: Zacznij tworzyć profil nawigacyjny 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).

Pobrane pliki
Możesz dodać dowolne pliki, takie jak SQLite, OBF lub czcionki do pobrania, używając 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 nie tylko.

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

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. O tym, jak tworzyć te pliki, można przeczytać pod linkami tutaj i tutaj.

Gdy plik items.JSON i wszystkie pliki w folderze są gotowe, można je spakować do jednego dokumentu. Następnie plik .zip należy przemianować na .osf, a wtedy Twój PLUGIN.osf będzie gotowy do dodania do aplikacji OsmAnd.
Przykłady
Możesz rzucić okiem na niektóre wtyczki, które użytkownicy OsmAnd stworzyli samodzielnie:
- Niestandardowa wtyczka The USA Maps (dane PAD-US, szlaki i drogi USFS, rekreacja USFS).
- Niestandardowa wtyczka Anygis maps.
- Niestandardowa wtyczka Map Legend.
- Polska niestandardowa wtyczka mapy UMP-PL.
- Niestandardowa wtyczka OsmAnd Rendering plugin.
- Niestandardowa wtyczka Outdoor Explorer.