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ć
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ć:
- O formacie
.json
. - O edytorach tekstowych, 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 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.
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 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).
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.
Sugerowane pobieranie
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. Możesz przeczytać, jak tworzyć te pliki, pod linkami tutaj i tutaj.
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:
- Wtyczka niestandardowa Mapy USA (dane PAD-US, szlaki i drogi USFS, rekreacja USFS).
- Wtyczka niestandardowa map Anygis.
- Wtyczka niestandardowa Legenda mapy.
- UMP-PL Polska wtyczka niestandardowa mapy.
- Wtyczka niestandardowa renderowania OsmAnd.
- Wtyczka niestandardowa Outdoor Explorer.
Powiązane artykuły
Ostatnia aktualizacja: czerwiec 2024